Why do people add to cart but never check out?
Usually one of two very different things: people really are leaving between cart and checkout — most often because of a cost or a step they did not expect — or they are not leaving at all, and your checkout event simply is not reaching the ad platform. Check the tracking first, because it decides which of the two problems you are about to fix.
The gap tends to show up in an ads dashboard: a healthy column of add-to-carts, then a checkout column that is thin or empty. It looks like a broken funnel, and it is tempting to start redesigning the cart that same afternoon. But from the ad side, a real drop-off and a missing event look identical — both produce carts and no checkouts — and the fix for one does nothing for the other. People who run ads for a living describe both: stores that rebuilt a cart drawer to cure a drop-off that turned out to be a tracking fault, and stores that spent a week on pixels while a shipping charge was quietly turning buyers away. This guide is the order of checks that tells them apart.
Step 1: Ask your store, not the ad platform
Your store records the funnel itself: sessions that added something to the cart, sessions that reached checkout, sessions that ended in an order. Shopify's analytics shows these stages for any period you choose, and that is your reference — it counts what happened on your site, not what an ad platform happened to receive.
Put the two side by side for the same dates:
- The store shows checkouts and orders; the ad platform shows none. The drop-off is not real. It is a tracking gap — go to Step 2 and leave your cart alone.
- The store shows the same drop-off. It is real. Go to Step 3.
- The ad platform shows more checkouts than carts. One of the events is inflated or firing twice, and neither number can be trusted until it is fixed.
Do not expect the two sources to match exactly. Ad platforms count events rather than sessions, sometimes several per visit, and their ads view shows only the events they attribute to an ad — a gap with its own guide. What you are looking for is a step that exists in one place and is missing in the other, not a difference of ten percent.
Step 2: If it is tracking, look at what changed near checkout
A checkout event that goes quiet almost always coincides with a change near checkout, not with a change in your shoppers. The usual suspects:
- Your checkout itself changed. Shopify has been moving stores to its newer checkout, and tracking code that was pasted into the old checkout settings does not run there. If your tracking was set up a few years ago, it may be listening to a page that no longer runs its code.
- Someone edited near checkout. A theme update, a developer, an agency tidying up — a snippet removed from checkout for a good reason can take the event with it.
- Checkout happens somewhere else. A third-party checkout or payment step can start a fresh session or run on a domain your pixel never sees.
- Buttons that skip the cart. "Buy now" goes straight to checkout, so checkouts appear without carts and the two columns stop lining up.
Then check it directly. In Meta's Events Manager — not Ads Manager, which shows only ad-attributed events — does the checkout event show any activity for the period, from any source? And place a real order on your live store yourself, watching whether each event arrives. One sanity check settles a lot: if purchases are being recorded and checkouts are not, the checkout event is missing. Nobody pays without checking out.
Step 3: If it is real, walk the path yourself — on a phone
Go from a product page to the payment step on your live store, on a phone, the way a first-time visitor would. Most of what stops people between cart and checkout is visible in those five minutes:
- A cost that appears late. Shipping, duties or fees shown for the first time at checkout are the classic reason. Show them earlier — on the product page or in the cart — or at least show the threshold for free shipping.
- A discount that does not work. A code that errors, an automatic discount that does not apply, or an empty code field that sends people off to search for one — and they do not come back.
- The cart itself. Cart drawers and upsell apps update on their own. A moved button, a slow script or an upsell that stands in the way can cost you the step, and several apps stacked on one cart are a common place for wires to cross.
- A delivery date nobody expected. An estimate that is much longer than the one people assumed when they clicked the ad.
Step 4: Find the date it changed
A cart-to-checkout rate that has always been low is a baseline. A rate that fell is a finding — and it fell on a date. If carts held steady while checkouts dropped from one week to the next, list what changed that week before changing anything else: app updates, theme edits, checkout settings, shipping rates, a new payment method. The cause is usually on that list, and finding it is far cheaper than a redesign.
Step 5: Do not read too much into small numbers
Not every cart is an intention to buy. People add to cart to see the total, to check the shipping, or to keep something for later — and bots add to carts too. So some drop-off is normal, and there is no universally good rate: only yours, compared with its own history.
Volume matters as well. With a dozen carts in a week, a week without a checkout is not evidence of anything. Judge the rate once enough carts have accumulated, not after a set number of days — the same rule every guide in this series ends with.
KPIHelm reads this gap on your Meta ads. When they record carts and no checkout, it names it — and tells you to check the checkout event before you touch the cart page, because from the ad side the two look the same. When purchases arrive with no checkout at all, it stays quiet: that is a missing event, not a broken funnel. On the store side, it flags visitors who arrive but convert at fewer than 1 in 100 sessions. Install it free on the Shopify App Store or see a sample report.