Cart abandonment: stop guessing, instrument the funnel
Most abandonment advice is folklore repeated until it sounds like data. Here is how to find the step people actually leave at — and why the answer is nearly always a surprise cost, a forced account, or a missing payment method.
Photo: free stock photography (Unsplash licence) — see imprint
The famous abandonment rate is folklore, and it is not about your shop
Somewhere in every pitch deck is the line about roughly seventy percent of carts being abandoned. It gets quoted as though it were a measurement of your business. It is an aggregate across wildly different shops, categories and definitions of 'cart', and it tells you precisely nothing about which step your customers leave at. Worse, it makes abandonment feel like weather — a background condition you tolerate — rather than a specific broken thing on a specific page.
It is also inflated by behaviour that is not abandonment at all. People use the cart as a shortlist. They add three sizes to compare, they park something until payday, they check what shipping costs before deciding, they add on their phone at lunch and buy on a laptop at night. All of that lands in your abandonment rate as failure. Some of your carts were never orders. Chasing them with a discount code is paying people who were browsing.
Instrument the steps, not the outcome
A single abandonment number is one bit of information: something is wrong somewhere. What you want is a count at every step, so the drop reveals itself. Cart viewed, checkout started, address submitted, shipping method chosen, payment method chosen, order confirmed. Six numbers. The gap between two adjacent numbers is the only thing in this entire subject that will actually tell you what to fix.
Do this server-side wherever you can. A meaningful share of your visitors decline analytics consent, so a browser-only funnel is measuring the subset of people who said yes — and if that subset is skewed by device or browser, so is your conclusion. Your shop already knows when a cart was created, when a checkout record appeared, when a payment was attempted and when it failed. Those events need no consent because they are part of processing an order somebody is trying to place. Read them.
- Count each checkout step separately — one rate hides everything that matters.
- Split by device — a desktop-fine checkout can be unusable on a phone.
- Log failed payment attempts; a decline is not an abandonment.
- Separate new from returning — the forced-account problem only hits one of them.
It is nearly always one of three things
Once the steps are counted, the cliff shows up, and in our experience it stands in one of three places. First: a cost the customer did not see coming. Shipping revealed at step three, a surcharge for the payment method, a minimum order value, a customs note for Austria. The amount barely matters — a five euro surprise does more damage than a ten euro cost stated on the product page, because the surprise is a trust event, not a price event.
Second: a forced account. Somebody decided registration was required, usually for a reason that made sense internally — the ERP wants a customer number, marketing wants the address, someone read that registered customers order more often. They do order more often, because people who intend to come back register. Making it mandatory does not create loyalty, it filters out first-time buyers who wanted one thing. Third: a payment method your customers use and you do not offer. This is the cheapest fix on the list and the one most often argued about on fee grounds, which is a strange argument when the alternative is zero revenue at a fee of nothing.
Watch five people check out before you change anything
Numbers tell you where. They rarely tell you why, and 'why' is what determines the fix. The fastest way to get why is embarrassing and free: sit next to five people who are not you and ask them to buy something on their own phone with their own card. You will learn more in an hour than from a quarter of dashboards. The error message that means nothing. The address form that rejects their house number. The payment step that opens a bank app and never comes back.
And before you buy an abandonment email tool: fix the step first. Recovery mails work, they are worth having, and they are also a way of paying to route around a problem you could have removed. If the cliff is at shipping cost, an email offering free shipping is you discovering the price your customer wanted, at the cost of teaching everyone to abandon their cart and wait for the discount. Remove the reason, then automate the remainder.
| Where the drop is | Most likely cause | What to do |
|---|---|---|
| Cart to checkout start | Shipping or fees first visible here | Move every cost onto the product page |
| Checkout start to address | Registration required | Offer guest checkout, register after the order |
| Address to shipping | Form validation or delivery time | Test on a real phone with a real address |
| Shipping to payment | Method they have is missing | Add it; the fee beats zero revenue |
| Payment to confirmation | Technical failure or a decline | Log it — this is not abandonment, it is a bug |
- The seventy percent statistic describes an industry average, never your checkout.
- Count every step server-side; one aggregate rate hides the only thing worth knowing.
- The cliff is nearly always a surprise cost, a forced account, or a missing payment method.
- Fix the step before you buy the recovery email — otherwise you teach people to wait for a discount.
Frequently asked questions
There is no useful normal, and the widely quoted industry figure is an average across shops nothing like yours with differing definitions of a cart. It also counts people using the cart as a wishlist, which is not a failure. The number worth having is not your overall rate but the drop between two adjacent checkout steps — that one names a fixable thing.
Yes, they recover orders and they are usually worth setting up — but only after you have fixed the step that causes the abandonment. Send them first and you are paying to work around a problem, and if you attach a discount you teach regular customers that waiting is rewarded. Fix the cliff, then run recovery mails for the people who genuinely just got distracted.
In B2C, almost always. Registered customers do order more often, but that is because people who plan to return register — forcing it does not create the loyalty, it removes the first-time buyer. Offer the account after the order is placed, when the customer has a reason to want one. B2B is the real exception: there, an account carries pricing and terms and is part of the product.
Fewer than the list you were sold, but they must be the right ones — and German buyers have long-standing habits around invoice and direct debit that shops from other markets consistently underestimate. Do not answer this from a blog post: look at what your own customers ask for in support and what your competitors show. Every method costs a fee, but a missing one costs the whole order.
We do this for a living — Shopware, Node.js, React, ERP integration and automation for B2B.
Talk to an engineer