On this page
  1. Step 1: make sure the data is right
  2. Step 2: build a checkout funnel
  3. Step 3: find the biggest loss
  4. Step 4: split by device and channel
  5. Step 5: check performance and errors
  6. Step 6: watch some real sessions
  7. Step 7: change one thing, measure one thing
  8. Common causes and how to check them
  9. In short

"Lots of people add to cart — why do so few pay?" It's one of the questions e-commerce teams ask most.

Checkout abandonment has many causes: shipping costs, forced account creation, missing payment methods, a page that's awkward on a phone, a discount code box that sends people off hunting for codes. Each has a fix, but only once you know which one you're dealing with.

Work through these seven steps in order. The early ones rule out a lot of possibilities so the later ones can be targeted. All numbers are examples.

Step 1: make sure the data is right

Before analysing anything, confirm the drop-off is real and not a tracking gap:

  • Is payment success reported from your server? If "payment succeeded" is recorded only by the front end, a customer who pays on the payment provider's page and never returns to your site counts as abandoned. Report orders and payments from the server with the order number as the idempotency key, and the problem disappears.
  • Does the payment redirect break the session? Returning from the payment provider shouldn't start a new session, or the funnel breaks. Check that the session after the return isn't attributed to the payment provider's domain.

It sounds tedious, but we've seen plenty of "checkout conversion is only 20%" cases that turned out to be measurement problems.

Step 2: build a checkout funnel

Not too many steps — just the key forks:

  1. Added to cart
  2. Started checkout
  3. Completed shipping details
  4. Chose a payment method
  5. Payment succeeded (server event)

Use a window of one to three days. Some people add to cart and come back the next day to pay; too short a window underestimates conversion.

Step 3: find the biggest loss

The result:

Checkout funnelSample data
  1. Added to cart4,800100%
  2. Started checkout2,35049%−51%
  3. Completed shipping1,78037%−24%
  4. Chose payment1,69035%−5%
  5. Payment succeeded98020%−42%
Two big losses: cart to checkout (much of it "buy later") and payment chosen but not completed — the second group showed the clearest intent, so look there first.

Two places stand out: cart to checkout (49%) and payment method to success (58%).

Much of the cart-to-checkout loss is normal "save it for later" behaviour, not purely a problem. The 42% who chose a payment method and still didn't pay had made their intent very clear — investigate them first.

Step 4: split by device and channel

DeviceChose paymentPaidConversion
Mobile1,12056050%
Desktop57042074%

Mobile is clearly worse. Now split by payment method (this needs a payment-method property on the "chose payment method" event). If one method has a particularly low success rate on mobile, you've nearly found it — probably a redirect or app hand-off that fails in mobile browsers.

Step 5: check performance and errors

Open the performance report, filter to the checkout page and group by device. Are largest contentful paint and interaction response noticeably slower on mobile?

Then open the errors report and look for script errors concentrated on checkout. Watch especially for error clicks — an error within one second of a click. Lots of error clicks on the pay button is very nearly the answer.

Step 6: watch some real sessions

Data tells you where and who; why often needs your own eyes. Save "mobile, chose a payment method, didn't pay" as a segment and open five to ten session replays.

You might see: the pay button tapped repeatedly with no response; a jump to the payment page and straight back; a long pause at the discount code field and then leaving. Each points to a different fix.

Mind the privacy settings while watching: input contents are masked by default, which is exactly what you want.

Step 7: change one thing, measure one thing

Once you have the most likely cause, change one thing at a time, rerun the same funnel and compare equal periods before and after.

Use the conversion calculator to check the difference is significant. E-commerce traffic swings a lot week to week — weekends, paydays, promotions — so compare at least two full weeks, not a couple of days.

Add a date annotation to the trend chart saying what changed and when it went live. When you look at the data later you'll know where the change came from.

Common causes and how to check them

SymptomPossible causeHow to verify
Leave soon after starting checkoutShipping or tax shown only at this stepTime on checkout page; do replays scroll to the price summary?
Loss at shipping detailsToo many fields, hard on a phoneSplit by device; heatmap of the form area
Failure after choosing paymentOne payment method broken on mobileSplit by method and device; error clicks
Leave at the discount code boxWent looking for a code and never came backReplays; compare versions with and without the box
New visitors drop far more than returningForced account creationSplit new vs returning; offer guest checkout and compare

In short

Checkout abandonment rarely has a single cause. Worked through in this order, the first three steps confirm the problem is real and where it is; the middle two narrow it to which visitors and whether it's technical or experience; the last two give you evidence and a way to verify the fix.

Compared with applying a generic list of "checkout best practices", you end up with fewer, more precise changes — and results that are much easier to explain.

Tagse-commercecheckout conversionfunnels
Related featureFunnel AnalysisBuild funnels from any events, see the biggest drop and the time between steps, break down by device or source, and jump to the replays of people who left.See how it works

Related articles

See it on your own data

Install the snippet in five minutes and get your first report today.

Start free