On this page
"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:
- Added to cart
- Started checkout
- Completed shipping details
- Chose a payment method
- 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:
- Added to cart4,800100%
- Started checkout2,35049%−51%
- Completed shipping1,78037%−24%
- Chose payment1,69035%−5%
- Payment succeeded98020%−42%
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
| Device | Chose payment | Paid | Conversion |
|---|---|---|---|
| Mobile | 1,120 | 560 | 50% |
| Desktop | 570 | 420 | 74% |
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
| Symptom | Possible cause | How to verify |
|---|---|---|
| Leave soon after starting checkout | Shipping or tax shown only at this step | Time on checkout page; do replays scroll to the price summary? |
| Loss at shipping details | Too many fields, hard on a phone | Split by device; heatmap of the form area |
| Failure after choosing payment | One payment method broken on mobile | Split by method and device; error clicks |
| Leave at the discount code box | Went looking for a code and never came back | Replays; compare versions with and without the box |
| New visitors drop far more than returning | Forced account creation | Split 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.
See it on your own data
Install the snippet in five minutes and get your first report today.



