Cart Abandonment Measurement

A methodology guide to measuring cart abandonment rate consistently — the formula, scope rules, edge cases, and the segments that make the number actionable.
Cart Abandonment Measurement
The methodology for calculating cart abandonment rate — defining what counts as a cart, which sessions qualify, and how to segment the result.
Cart abandonment measurement is the set of rules you apply when turning raw shop behaviour into a single comparable number: the share of carts that never become orders. The headline formula is simple — 1 minus orders divided by carts created — but the answer depends entirely on how you define a cart, which sessions you include, and how you handle edge cases like bots, duplicate sessions, and saved carts.
The goal of a measurement framework is consistency. Two analysts looking at the same Shopify store should arrive at the same abandonment rate, and that number should be comparable week over week, across devices, and against industry benchmarks.
Most stores measure cart abandonment wrong on the first try — not because the math is hard, but because the inputs drift. One week the denominator includes bot traffic, the next week a Shopify theme update changes when the add_to_cart event fires, and suddenly your rate jumps four points for no real reason.
A measurement framework fixes this by locking down three things: the event that creates a cart, the window in which an order has to follow, and the segments you split by. Get those right and the Cart Abandonment Rate Calculator becomes a daily diagnostic instead of a noisy vanity number.
The formula and what each input actually means
Cart abandonment rate is calculated as 1 − (completed orders ÷ carts created), expressed as a percentage. A rate of 70% means that for every 100 shoppers who added something to their cart, 30 finished checkout and 70 left.
Cart Abandonment Rate = (1 - Orders / Carts Created) * 100
Carts Created
Carts created
Unique sessions where the shopper triggered an add_to_cart event within the reporting window.
Orders
Completed orders
Orders successfully placed by those same sessions (or attributable to them via a saved-cart link) within the attribution window.
A Shopify apparel store in October: 18,400 sessions added at least one item to cart; 5,520 of those sessions placed an order within 7 days.
Carts created: 18,400
Completed orders: 5,520
→ 70.0%
A 70% abandonment rate is roughly in line with the apparel category average. The number is only useful once you split it by device and traffic source — mobile paid social will typically run 10-15 points worse than desktop direct.
The numerator and denominator have to come from the same population. If you count carts on a session basis but orders on a user basis (across devices, across days), the rate looks artificially low. Pick one grain — session is the standard — and apply it consistently to both sides.
What counts as a cart (and what doesn't)
A cart is created the first time a session fires an add_to_cart event for a product with a positive quantity. That's the working definition for nearly every analytics setup, including GA4 and the standard Shopify customer-events pixel. Subsequent add_to_cart events in the same session don't create a new cart — they update an existing one.
Exclude: bot sessions (filter by known bot user agents and zero-duration sessions), internal IPs, sessions where the add was immediately followed by a remove leaving the cart empty, and sessions from currency or language switchers that fire phantom events. Include: sessions that abandoned at any later stage — viewing the cart, starting checkout, or bouncing from the payment step all count as abandonment for this metric.
The saved-cart trap
If a shopper adds to cart on mobile Tuesday and completes the order on desktop Thursday via an abandoned-cart email, that's one cart and one order — but two sessions. Default session-based reporting will count it as a cart abandonment AND an order from nowhere, double-distorting your rate. Either stitch with a user ID (Shopify Customer Accounts, Klaviyo profile) or accept a known ~3-7 point inflation in your headline number.
Segmenting the rate so it's actually actionable
A single store-wide abandonment number tells you almost nothing. The same 70% can hide a 58% desktop rate and a 79% mobile rate, or a healthy 62% from email traffic and a brutal 84% from Meta paid social. Segmenting is what turns the number into a list of fixable problems — and it's also what the Cart Abandonment Benchmarks page uses to set realistic targets per segment.
At minimum, split by device (mobile / tablet / desktop), traffic source (organic, direct, paid social, paid search, email), and new vs returning customer. For stores doing more than €3M a year, add cart value tier (under €50, €50-€150, over €150) and product category — high-AOV carts abandon differently from impulse SKUs.
Typical cart abandonment rate by traffic source — apparel store
Cart abandonment measurement: common questions
Cart abandonment measures shoppers who added to cart but never completed an order — the full funnel from add-to-cart onward. Checkout abandonment is narrower: shoppers who started the checkout flow (entered shipping or contact info) but didn't pay. Checkout abandonment is always lower than cart abandonment. See the Cart vs Checkout Abandonment breakdown for how to track both in parallel.
The cross-industry average sits around 70%. Apparel typically runs 68-75%, beauty 65-72%, electronics 75-82% (higher AOV, more comparison shopping), and fashion accessories 65-70%. Anything under 60% is exceptional; anything over 85% suggests a checkout problem rather than normal browsing behaviour.
Build an exploration with add_to_cart event count as the denominator and purchase event count as the numerator, scoped to session. Then compute 1 − (purchase / add_to_cart). GA4 doesn't expose this as a default metric, so most teams either build a custom calculated metric or pipe the events into a warehouse and compute it there.
No. The standard is one cart per session, created on the first add_to_cart event. If the same session adds, removes, and re-adds items, that's still one cart. Counting every add_to_cart event inflates the denominator and makes your rate look worse than it is.
If you have user-level stitching (logged-in customer, Klaviyo profile, Shopify Customer Account), attribute the order back to the original cart session and count it as a conversion, not an abandonment. Without stitching, the original cart looks abandoned and the eventual order looks like a fresh purchase — accept the inflation or move to user-grain reporting.
It shouldn't. Filter bot user agents, internal IPs, and sessions with zero engagement time before computing the rate. Shopify and GA4 both filter known bots automatically, but headless setups and custom pixels often don't — check your raw event data for sessions with sub-100ms add-to-cart timings as a sanity check.
Mobile shoppers browse and save items with no intent to buy immediately, use the cart as a wishlist, and face more friction at checkout (smaller form fields, harder card entry, more app-switching). A 10-15 point gap between mobile and desktop is normal; a 25+ point gap suggests a fixable mobile checkout problem.
Weekly for the headline number, daily for segments where you're actively running tests or fixes. Daily store-wide numbers are too noisy for stores under about 500 orders a day — you'll chase variance. Always compare against a four-week trailing baseline, not the previous day.
Yes — anyone who added to cart and didn't complete an order counts as abandoned, regardless of where they dropped off. To isolate shipping-cost drop-off specifically, segment by the last funnel step reached (cart view, shipping step, payment step) and look at the per-step exit rate.
Only if your measurement matches the benchmark's definition. Most published benchmarks use session-grain, exclude bots, and count any add_to_cart that didn't convert within the session. If your number uses user-grain or a 7-day attribution window, it'll look 3-7 points lower than the benchmark — adjust before drawing conclusions.
Get an AI expert review of your site
Paste your URL — Metricuno's AI runs the same heuristic checks a senior CRO consultant would, scoring your page and prioritising the fixes that'll move conversion fastest.