Open beta — completely free, no card required.
Diagnostics

Cart Abandonment in GA4: Find Where Carts Die (and Why)

GA4 has no cart abandonment report. What it has: two built-in funnels, an honest rate formula, five ways the number lies, and a path from 'which step' to 'why'.

By Ivan Pika

There is no cart abandonment report in GA4. There's no cart abandonment metric either, and you can't cleanly build one — calculated metrics can't reference event counts, so 1 − purchases ÷ add-to-carts is not a formula GA4 will accept. Meanwhile the guides ranking for this exact query include one written for a UI that died with Universal Analytics and one that's a dead 404. It still ranks.

So here's the actual state of things. GA4 gives you two built-in funnel reports, an exploration builder, and enough event data to answer three questions: what's my rate, which step leaks, and why. The first takes a division. The second takes ten minutes of setup. The third is where GA4 stops, and where this article ends up.

Start with the two reports GA4 already has

Both live under Reports → Monetization, and both get ignored in favor of hand-built funnels they mostly replicate.

Purchase journey is the cart abandonment view. Five fixed steps — session start, view product, add to cart, begin checkout, purchase — with the abandonment rate printed under each bar. Closed funnel by default (users must enter at step one to be counted), with a toggle above the chart if you want it open.

Checkout journey is the checkout abandonment view: begin checkout → add shipping → add payment → purchase. Closed funnel, no toggle, no editing. This is the one to stare at, because everyone in it has already told you they want to buy.

Both reports count users, not sessions — remember that, it matters in a minute. And both have a breakdown table underneath (device category, country, browser) that most people scroll straight past. Don't. The table is where diagnosis starts.

If either report looks absurd — a step at zero, a purchase count 20% below your store admin — skip ahead to the section on how the number lies. It's probably your events, not your customers.

Pick one formula and stay loyal to it

The pages ranking for "cart abandonment rate GA4" use four different formulas between them. The numerators vary, the denominators vary, and none of the pages acknowledges the others exist. Pick one, write it down next to the dashboard, never change it.

Mine:

Cart abandonment rate     = 1 − (purchasers ÷ users who added to cart)
Checkout abandonment rate = 1 − (purchasers ÷ users who began checkout)

Track both, because they answer different questions. Cart abandonment measures how much declared interest you fail to convert, and a large slice of it is unfixable: Baymard's checkout survey finds 43% of abandoners were just browsing. No checkout redesign fixes window shopping. Checkout abandonment measures what you lose after intent is proven. That's the number worth losing sleep over.

One scope warning, because it produces real embarrassment in board decks. GA4 funnels count users. The studies behind the industry's famous ~70% average mostly count sessions or carts. A user who adds to cart on Monday and buys on Tuesday is no abandoner to GA4 — session-based math writes Monday off as abandoned.

So your GA4 number runs lower than Baymard's 70.22% even when your store is perfectly average. Compare against your own last quarter; a benchmark computed on a different unit can't tell you much.

For the division itself: read purchasers and cart users straight off the Purchase journey report, or drop add_to_cart and purchase into a free-form exploration with Total users and divide. If you need session-scoped math to line up with industry benchmarks, that's a BigQuery export job — the GA4 UI won't do it.

Build the six-step funnel (ten minutes)

The built-in reports can't be edited, so the real version of this analysis is a funnel exploration. Explore → Funnel exploration, replace the default steps with six:

  1. view_item
  2. add_to_cart
  3. begin_checkout
  4. add_shipping_info
  5. add_payment_info
  6. purchase

If some of those events don't exist on your site at all, that's not an analysis problem yet. They come from your platform's GA4 integration — Shopify's Google & YouTube app, WooCommerce's official plugin — or from a GTM ecommerce setup. Wire them first, then come back.

Four settings are worth touching before you read anything.

Closed vs open. Closed (the default) counts only users who entered at step one. If your cart-recovery emails deep-link into checkout, those users enter mid-funnel and a closed funnel pretends they don't exist, which quietly inflates your early-step abandonment. Fine for a first diagnosis; just know who it excludes.

Show elapsed time. Average time between steps. A payment step that takes mobile users four minutes is not a payment step, it's a form problem wearing a payment step's clothes.

Breakdown. Set it to Device category before anything else. Almost every checkout leak I've diagnosed in the last two years was device-shaped.

Next action. The top five things users did after each step instead of proceeding. "Returned to cart" after the shipping step tells a different story than "left the site."

When you read it, resist the urge to panic at the top. Ninety-something percent gone between viewing and buying is retail, not breakage. The signal lives in steps 3 through 6, where every user has declared intent and every percentage point has a dollar value.

Five ways the number lies

Before trusting any of it, check whether the funnel is measuring your store or your tracking gaps. In the order I find them in real audits:

The missing step. Shopify's native Google & YouTube app sends exactly seven events to GA4, and add_shipping_info is not one of them. On a stock Shopify setup the Checkout journey's "Add shipping" step has nothing to count, and everything downstream of a dead step in a closed funnel is fiction. That version of the bug is obvious the moment you open your admin.

The subtler version — an event that fires on desktop but not in your mobile theme — is not obvious at all, and quietly doubles your apparent mobile abandonment. WooCommerce's official plugin does fire the shipping and payment events, but only since version 2.2, so history before that upgrade is a different funnel.

Two minutes in DebugView settles any doubt. Open Admin → DebugView, put your test device in debug mode first (GTM preview mode, or a temporary debug_mode parameter; phone sessions don't show up in DebugView without it), then run a test checkout and watch which of the six events actually fire.

The missing purchases. Payment-gateway round-trips (3-D Secure, PayPal) and ad blockers eat purchase events, and every eaten purchase turns a paying customer into a fake abandoner. If GA4 purchases undercount your store admin by more than a few percent, reconcile that before analyzing anything — the GA4 vs Shopify walkthrough is the procedure, and it applies to any backend.

Thresholding. With Google signals on, GA4 withholds rows below a user-count floor. Slice the funnel by device and region and your smaller segments return blanks rather than zeros. Widen the date range or switch the reporting identity to device-based before concluding a segment has no data.

Sampling. Explorations sample past 10 million events per query on standard properties; the standard reports never sample. A year-long funnel on a busy store is directionally-accurate-with-a-badge rather than exact. Shorten the range when the badge appears.

Freshness. Processing takes 24–48 hours, and attribution can keep shifting for up to 12 days. Diagnose last week, not yesterday.

A worked example: one store, 30 days

Numbers from a WooCommerce apparel store I worked with in June, rounded. Funnel exploration, user counts, 30 days:

StepUsersStep conversion
view_item52,300
add_to_cart5,1409.8%
begin_checkout3,12060.7%
add_shipping_info2,36075.6%
add_payment_info1,41059.7%
purchase1,28090.8%

Cart abandonment: 1 − 1,280 ÷ 5,140 = 75.1%. Checkout abandonment: 1 − 1,280 ÷ 3,120 = 59.0%. Both unremarkable, neither actionable. The step table is where it gets actionable: the worst drop inside the checkout is shipping → payment, where 40.3% of remaining users vanish at the exact moment shipping cost and delivery dates appear.

Breakdown by device: that 40.3% splits into 51% on mobile and 24% on desktop — the mobile conversion rate problem in its natural habitat. Elapsed time: mobile users sat three minutes forty seconds between shipping and payment before disappearing. Desktop users, one minute ten.

Now it's a hypothesis instead of a mystery. Baymard's survey says 39% of checkout abandoners cite extra costs and 21% cite slow delivery — and this store revealed shipping price only after the full address form, offered no wallets, and asked mobile users to fill eleven card-form fields by thumb.

The store put shipping costs on the cart page and turned on Apple Pay and Google Pay. Four weeks later, same traffic: mobile shipping-to-payment loss went from 51% to 33%, checkout completion from 41.0% to 47.6% — about 205 extra purchases a month. Desktop improved a couple of points too; wallet buttons show up everywhere. The fix cost one developer-day.

The funnel says where. It can't say why.

Everything above ends at the same wall. The funnel says "40% die at payment on mobile." It doesn't say whether that's shipping-price shock, a card form built by someone who hates thumbs, a missing wallet, or a JavaScript error that only fires on iOS Safari. GA4 records events; it doesn't watch anyone struggle.

The fastest way I know through that wall is asking questions in plain language, with GA4 connected to Claude or ChatGPT — setup is five minutes without code (Claude, ChatGPT). The prompts I run on checkout leaks:

"Build my cart-to-purchase funnel for the last 30 days, split by device category. Which step lost the most users compared to the previous 30 days?"

"For users who reached add_payment_info without purchasing, what were their most common next actions — exit, back to cart, a specific page?"

"Compare payment-step abandonment by browser and OS. Is any combination an outlier relative to its share of traffic?"

That last prompt splits the world in two. An outlier — iOS Safari abandoning at twice its traffic share — points at a technical bug on a specific stack. A flat spread points at price or UX, because everyone hates the same thing equally. Different owners, different fixes, one prompt to tell them apart. The wider set of standing prompts is in the GA4 prompt library.

This is also the specific thing ConvRadar was built for: its funnel tool returns the per-step drop with anomaly flags and matches the pattern against a hypothesis library from other stores with the same symptom — so "mobile payment-step leak" comes back with the causes that actually produced it elsewhere, ranked. You can do the same work manually with the prompts above; the connector compresses it.

What none of this replaces: watching a real session. GA4 plus AI narrows "somewhere in checkout" to "the payment form, on mobile, probably the fields." A session replay tool answers "which field." Use both ends.

And if your rate was fine last month and suddenly isn't, that's a different diagnostic — the conversion rate drop walkthrough handles when did it break; this article handles where does it always leak.

The five-minute remarketing audience

Once the funnel tells you where users leave, the same events power the win-back list. Admin → Data display → Audiences → New audience: include users with an add_to_cart event, then add an exclusion group set to permanently exclude users with a purchase event. That's Google's own documented recipe, and you can refine it by item brand or category if only some product lines leak.

People learn the same three lessons here the annoying way. Audiences are not retroactive — membership accumulates from the moment of creation, though Google Ads can prepopulate up to 30 days where data exists. They take 24–48 hours to start filling, so build today, launch Thursday. And membership duration defaults to 30 days, adjustable from 1 to 540 — match it to your purchase cycle.

If the property is linked to Google Ads with personalized advertising on, the audience shares automatically. One attribution footnote for the recovery campaign itself: keep the word "shopping" out of your recovery-email UTM values, or GA4's default channel grouping may file that revenue under Organic Shopping — and your email tool will look like it did nothing. Already running with those UTMs? Build a custom channel group for recovery traffic instead of renaming parameters mid-flight; UTM changes aren't retroactive, a channel group is just a new lens on the same data.

FAQ

Is there a cart abandonment report in GA4? No. The closest built-ins are the Purchase journey and Checkout journey reports under Reports → Monetization — fixed steps, closed funnels, user-scoped. For anything custom, build a funnel exploration. There's no native metric either, and calculated metrics can't reference event counts — short of registering a dedicated event parameter as a custom metric on every event (a workaround nobody maintains), the rate is a manual division.

What is a good cart abandonment rate? Baymard's average across 50 documented studies is 70.22%. Live commerce panels run higher — Dynamic Yield's 400-brand panel sits near 78%. By vertical it spans roughly 51% (pet care) to 83% (beauty), and mobile consistently abandons more than desktop — around 80% versus 66% in the vendor panels that publish the split. Your GA4 user-scoped number typically reads lower than all of these, so watch your own trend line; the distance to a benchmark is mostly noise.

What's the difference between cart abandonment and checkout abandonment? Cart abandonment counts everyone who added to cart and didn't buy — including the 43% who were only browsing. Checkout abandonment counts only users who began checkout, which makes it the better health metric for the checkout itself. Product-page and pricing problems move the first number; forms, shipping-cost surprises, and payment options move the second.

Why doesn't my GA4 abandonment rate match my email tool or Shopify app? The tools count different things — users, sessions, or carts — over windows that don't line up, from event sets that don't fully overlap. Before comparing them, reconcile GA4's purchase count against your store admin: if GA4 undercounts purchases, every abandonment number downstream is inflated.

How do I see the money value of abandoned carts? The GA4 UI won't hand it over. A workable approximation: a free-form exploration with Item name as rows and "Items added to cart" plus "Item revenue" as metrics — products with high adds and low revenue are where the value sits (the product-level version of that analysis is in the GA4 ecommerce reports guide). The precise version is one query over the BigQuery export:

SELECT i.item_name,
       ROUND(SUM(i.price * i.quantity), 0) AS abandoned_value
FROM `yourproject.analytics_123456.events_*`, UNNEST(items) AS i
WHERE event_name = 'add_to_cart'
  AND _TABLE_SUFFIX BETWEEN '20260601' AND '20260630'
  AND user_pseudo_id NOT IN (
    SELECT user_pseudo_id
    FROM `yourproject.analytics_123456.events_*`
    WHERE event_name = 'purchase'
      AND _TABLE_SUFFIX BETWEEN '20260601' AND '20260630'
      AND user_pseudo_id IS NOT NULL)
GROUP BY 1
ORDER BY 2 DESC;

That's the cart value added by users who never purchased in the window, by product. With GA4 connected to an AI client, it's one prompt instead: "Estimate the revenue value of carts abandoned last month, by product."

Carts don't die at random. They die at one step, on one device, for a reason the funnel can point at but can't name. The pointing takes ten minutes in Explore. For the naming, connect your GA4 and open with: "Where do my carts actually die, and what's the most likely reason?"