70% of WooCommerce shoppers who add to cart never complete checkout (Baymard Institute, 2024). Across e-commerce that’s roughly $18 billion in recoverable revenue lost every year. But here’s what most store owners miss: your data already knows exactly where those customers left. You just haven’t asked it.
WooCommerce checkout isn’t one step. It’s four — cart, shipping, payment, confirmation — and each has its own abandonment signature. Knowing which stage leaks is the entire game. The fix for a cart drop is not the fix for a shipping drop, and the fix for a payment drop looks nothing like either.
The 4 Stages of the WooCommerce Checkout Funnel
Every WooCommerce store runs the same core sequence, whether you use the block-based checkout or the classic template. Understanding the stages is the prerequisite to reading the data.
Stage 1: Cart
The customer added something. They haven’t clicked “Proceed to Checkout” yet. If your drop-off is here, the problem usually isn’t the cart — it’s the trip to the cart page itself. High shipping shown in the cart preview, price shock, an urgency mismatch (“I’ll come back later”), or distraction.
Stage 2: Shipping
They’ve begun checkout and are entering shipping details. This is the single most common drop-off point in e-commerce. 48% of abandonment is caused by unexpected shipping costs (Baymard Institute, 2024). If your data shows a sharp fall between “begin_checkout” and “add_shipping_info”, this is almost always why.
Stage 3: Payment
Shipping is picked. They’re now on the payment step. Drop-offs here are about friction and trust — card form errors, missing payment methods, declined cards, or security doubts. An unfamiliar gateway or a missing trust badge can kill this stage.
Stage 4: Confirmation
They clicked “Place Order” but no purchase event fired. This is the darkest stage to lose customers in, because most store owners don’t know it happens. Confirmation-stage drop-offs are almost always technical: gateway timeouts, plugin conflicts, failed redirect-back handlers. The customer thinks they bought something. You think they didn’t. Neither of you knows what went wrong.
How to Find Your Exact Drop-Off Stage
If your WooCommerce events are being captured correctly — meaning every cart, shipping, payment, and purchase event makes it into a queryable data layer — the analysis is a single BigQuery query. Count distinct sessions at each stage, divide by the previous stage, and the weakest link reveals itself.
The conceptual query looks like this:
SELECT
COUNT(DISTINCT IF(event_name = 'add_to_cart', session_id, NULL)) AS carts,
COUNT(DISTINCT IF(event_name = 'begin_checkout', session_id, NULL)) AS checkouts,
COUNT(DISTINCT IF(event_name = 'add_shipping_info', session_id, NULL)) AS shipping,
COUNT(DISTINCT IF(event_name = 'add_payment_info', session_id, NULL)) AS payment,
COUNT(DISTINCT IF(event_name = 'purchase', session_id, NULL)) AS purchases
FROM `your_project.transmute_events.events`
WHERE DATE(event_timestamp) BETWEEN '2026-03-01' AND '2026-03-31'
That’s it. One query. The stage-to-stage ratios tell you instantly where your biggest leak is. A store that drops 80% between cart and checkout has a different problem than a store that drops 60% between shipping and payment — even if both have the same overall conversion rate.
You may be interested in: What Your WooCommerce Checkout Data Is Trying to Tell You That No Dashboard Shows
What Each Drop-Off Actually Means (And What to Do)
Knowing the stage turns a vague “we have a conversion problem” into a specific, testable fix. Here’s how to read the signal.
Cart drop → pricing and urgency
Customers added items but didn’t proceed. Test: a shipping-threshold banner (“free shipping over £50”), a scarcity signal, or a better cart-page summary that confirms the total before they click Proceed.
Shipping drop → make the cost visible earlier
The largest single lever in e-commerce. Either lower shipping, raise your free-shipping threshold to cover margin, or — most powerful — show the shipping cost on the product page or cart, not at checkout. Sticker shock at checkout is a conversion killer that shows up as a cliff in your data.
Payment drop → trust and friction
Add trust badges near the card form. Check that Apple Pay, Google Pay, and regionally relevant options are enabled. Review your card form for known friction (missing autocomplete, no saved-card option). If drop-off spikes on mobile specifically, your payment gateway is probably rendering badly on small screens.
Confirmation drop → technical diagnostics
This is where server-side tracking matters most. Client-side events can fire the purchase event before the gateway confirms — or miss it entirely if the redirect-back fails. Server-side capture from the actual WooCommerce order hook tells you whether the order truly succeeded. If your payment event count is higher than your purchase event count, you have a technical failure eating real revenue.
You may be interested in: The Intelligence Layer: BigQuery + Claude as a WooCommerce Co-Pilot for Business Decisions
Why Most Stores Can’t Do This (And How to Fix That)
The entire analysis depends on complete events. If your tracking runs client-side only, you’re already missing a third of your sessions — ad blockers (31.5% of users globally, Statista 2024) and Safari’s 7-day ITP cap hide them. Your funnel chart will be wrong in a specific, invisible way: the drop-off stages appear proportionally correct, but the absolute session counts are systematically understated.
On top of that, GA4’s funnel tool aggregates events into session buckets and applies sampling above a threshold. You can’t drill into “which exact customer, on which device, with which coupon, dropped at payment?” That’s a BigQuery question, and GA4 won’t answer it.
The fix is straightforward: capture every WooCommerce hook server-side, route the events into BigQuery in real time, and query the raw rows.
Transmute Engine™ is a first-party Node.js server that runs on your own subdomain (e.g., data.yourstore.com). The inPIPE WordPress plugin captures WooCommerce’s native checkout hooks — cart, shipping, payment, purchase — and sends them via API to your Transmute Engine server, which streams them into BigQuery alongside parallel delivery to GA4, Facebook CAPI, and Google Ads. The funnel data is complete because the events never touched a blockable browser pipeline.
Key Takeaways
- 70% of WooCommerce carts never become orders (Baymard Institute, 2024). The industry average is leaking everywhere.
- Checkout is 4 stages, not 1. Cart, shipping, payment, and confirmation each have distinct drop-off signatures.
- Shipping cost drives ~48% of abandonment. If you see a cliff between begin_checkout and add_shipping_info, that’s the likely culprit.
- One BigQuery query finds your exact leak — but only if your events are captured completely and at row level.
- The fix is stage-specific. Generic CRO consulting solves the wrong problem; the data already tells you which lever to pull.
Frequently Asked Questions
At minimum: view_item, add_to_cart, begin_checkout, add_shipping_info, add_payment_info, and purchase. WooCommerce fires hooks at each step; you need every one captured at row level with the same session ID so you can join them into a funnel. Missing one stage breaks the whole chain.
With events in BigQuery, ask plain English: “For last month, what percentage of sessions dropped at each checkout step?” Claude writes the SQL, runs it against your warehouse, and returns the stage-by-stage conversion rate in seconds. Follow-up questions — “break that down by device” or “show me the drop-off for customers who used a coupon” — are additional single queries, not additional projects.
Cart abandonment is users who add to cart but never begin checkout. Checkout abandonment is users who start checkout but don’t finish. They have different causes and different fixes — blending them into one “abandonment rate” hides the real problem. A store with a cart-abandonment issue needs better pricing signals; a store with a checkout-abandonment issue needs less friction at shipping or payment.
Match the fix to the stage. Cart drop usually means pricing or urgency issues — test a free-shipping threshold banner or a cart-page summary. Shipping drop almost always means unexpected shipping cost — lower it, raise the free-shipping threshold, or show it earlier. Payment drop means trust or friction — add trust signals and check mobile rendering. Confirmation drop means a technical error — check your gateway and purchase-event handler.
GA4’s Funnel Exploration report works for a rough view, but on a typical WordPress site it’s missing 20-30% of sessions due to ad blockers and Safari’s ITP. GA4 also aggregates and samples — you can’t drill into row-level detail like specific customers, devices, or coupon codes. BigQuery populated with server-side events gives you the complete picture and lets you query by any dimension without limits.
The Bottom Line
Your customers are telling you exactly where they’re leaving. The question isn’t “why is my conversion rate bad?” The question is “at which stage does the funnel break?” — and your data already knows.
Ready to find your checkout leak in a single query? Start at seresa.io.
