Last updated: June 2026.
The checkout is the most expensive page in your store to lose a customer on. Everyone who reaches it has already done the hard part, found you, picked a product, decided to spend money. By the time they hit checkout, the marketing has done its job; all that's left is for the page not to get in the way. When it does, you don't just lose a click, you lose a customer you'd already paid to acquire. So if your numbers say people add to cart but don't finish, this is the page to fix first, before you spend another euro on traffic.
This post is the diagnosis. It won't hand you a generic list of "10 checkout tips", it shows you how to find your leak: read the symptoms, locate where in the PrestaShop checkout people actually drop, and route each finding to the specific fix. The deep treatments for each fix live in their own posts (linked as we go); this is the map that tells you which one you need.
First, separate normal loss from your loss
Cart abandonment averages around 70% across e-commerce, and a good chunk of that is unfixable: people use the cart as a wishlist, price-compare across tabs, or get interrupted. You will never get that back, and chasing it is wasted effort. The abandonment worth fixing is the portion caused by the checkout itself, the customer who genuinely wanted to buy and gave up because something on the page stopped them.
The diagnostic question is therefore never "why do 70% leave?" It's narrower and more useful: where, specifically, do people who started checkout drop off, and why there? Answer that and you stop guessing. The rest of this post is how to answer it on a PrestaShop store. (For the full taxonomy of reasons people leave, we catalogued twelve of them in 12 reasons people leave before paying. This post is about finding which of them is hurting you.)
Know the page you're diagnosing: PrestaShop's checkout in plain terms

You can't read drop-off without knowing the shape of the funnel. Since PrestaShop 1.7 (through 8 and 9.0–9.1), the default checkout lives on one URL, the order controller, but it reveals itself in sequence: personal information → addresses → delivery → payment. Each is its own step (in code: CheckoutPersonalInformationStep, CheckoutAddressesStep, CheckoutDeliveryStep, CheckoutPaymentStep), and a step stays collapsed until the one before it is complete. A virtual cart with nothing to ship skips delivery.
This matters for diagnosis because those four steps are your measurement boundaries. When someone abandons, they abandon at a step, and which step tells you almost everything about the cause. We map that below. (If you've migrated from 1.6 and are hunting for the old one-page toggle, it was removed in 1.7; the full story and your routes back to a single-screen checkout are in one-page checkout for PrestaShop.)
Get the data: turn on the funnel before you theorise
Diagnosing checkout from gut feeling is how merchants "fix" the wrong thing for six months. Before changing anything, get two kinds of evidence, the numbers and the watching.
The numbers (where they drop): set up a checkout funnel so you can see step-by-step fall-off. In GA4 the relevant events are begin_checkout, add_shipping_info, add_payment_info and purchase, which line up almost exactly with PrestaShop's four steps. If those events aren't firing, our Google Analytics GA4 module wires the Enhanced Ecommerce dataLayer into the native checkout so the funnel populates without theme surgery. Read it as a staircase: a cliff between two steps is your leak.
The watching (why they drop): numbers tell you the where; session recordings tell you the why. Microsoft Clarity (free) or Hotjar let you watch real customers rage-click a rejected field, hunt for a coupon box, or abandon when shipping appears. Twenty recordings of people quitting at the same field is worth more than any best-practice list.
No GA4 yet, or want a sanity check straight from the database? PrestaShop already records enough to estimate the top of the funnel. The gap between carts that reached checkout and carts that became valid orders, over a recent window, is a rough cart-to-order rate you can watch move after a fix:
-- Carts created vs. carts that became a valid order, last 30 days
SELECT
COUNT(DISTINCT c.id_cart) AS carts_started,
COUNT(DISTINCT o.id_cart) AS carts_ordered,
ROUND(100 * COUNT(DISTINCT o.id_cart) / COUNT(DISTINCT c.id_cart), 1) AS conversion_pct
FROM ps_cart c
LEFT JOIN ps_orders o
ON o.id_cart = c.id_cart AND o.valid = 1
WHERE c.date_add >= DATE_SUB(NOW(), INTERVAL 30 DAY)
AND EXISTS (SELECT 1 FROM ps_cart_product cp WHERE cp.id_cart = c.id_cart);
Adjust the ps_ table prefix to match your install. This won't break drop-off down by step the way GA4 does, it's a baseline number, not a diagnosis, but it's honest, free, and already in your database.
Don't trust three days of data. Give it enough volume, ideally 30+ days and 200+ checkout starts, that you're seeing a pattern, not weekend noise.
Read the symptom: a drop-off-to-cause map
Once the funnel is populating, find your biggest cliff and match it here. Each row points to the post that fixes it in depth, so you don't fix blind.
| Where they drop | Likely cause (the symptom in plain terms) | Where the fix lives |
|---|---|---|
| Cart → checkout start (they never begin) | Surprise looming: they sense costs or a registration wall ahead, or the cart total already feels wrong. | why shoppers abandon carts |
| Personal information step | Forced account creation. The customer hits "create an account" and bails, one of the largest single causes. | guest vs forced registration |
| Addresses step | Too many fields, or a validation that rejects valid input (postcode format, required phone on a digital order). | This post, "Fix the field leak" below |
| Delivery step | Shipping cost appears here for the first time and it's higher than expected. The classic unexpected-cost exit. | This post, "Fix the surprise-cost leak" below |
| Payment step | Their method is missing, the form feels unsafe, or a redirect to an external page loses them. | checkout optimization guide |
| Heavy mobile skew (mobile far below desktop) | The page works on desktop but fights the thumb, tiny targets, wrong keyboards, total scrolled off-screen. | mobile checkout optimization |
Two leaks are squarely the diagnosis post's to fix, the address-field bloat and the surprise-cost exit, so here they are in full. The rest are deep enough to own their own post, linked above.
Fix the field leak (drop-off at the addresses step)
If people start checkout but stall at addresses, you're almost always asking for too much. PrestaShop's default address form is more generous than most stores need, and every avoidable field is a small tax on completion. You don't need to edit code to trim it. Most of it is configuration.
- Title / salutation. Go to Shop Parameters → Customer Settings and turn off "Enable B2B mode" if you're not B2B, and review the title requirement. It rarely affects order processing; one less choice to make.
- Company & VAT, under Shop Parameters → Customer Settings → B2B mode; if you sell to consumers, leave B2B off so these fields never appear.
- Address fields. PrestaShop lets you control the address layout under Customers → Addresses (the address format is editable per country in International → Locations → Countries). Make "Address line 2" optional and the separate billing address collapse to "same as shipping" by default.
- Phone. May be required by your carriers or by configuration rather than by default; make it optional wherever your fulfilment allows, such as a digital/virtual catalogue, instead of a hard gate.
The principle: the optimal checkout asks for the fewest fields that still let you fulfil the order. Watch a few Clarity recordings of the addresses step first. The field people actually abandon on is often not the one you'd guess.
Fix the surprise-cost leak (drop-off at the delivery step)
A clean drop at the delivery step almost always means one thing: the shipping price showed up later than the customer expected, and it broke the deal in their head. The fix isn't a cheaper carrier. It's removing the surprise by showing the cost earlier, while the customer is still in a buying frame of mind.
The earliest honest place to set expectations is the product page. Our Estimated Delivery Date module surfaces both when an order will arrive and the shipping cost before the customer ever reaches checkout, so the delivery step confirms what they already knew instead of ambushing them. So what does that mean for you? Fewer people reach the delivery step only to leave, because the number that would have scared them off was never a surprise. It configures from the back office, no theme edits.
Pair it with showing estimated shipping in the cart too, so the running total is honest from the first screen. A total that only tells the truth at the last step is the single most common self-inflicted checkout leak we see.
The leak you can't see in the funnel: speed
One cause doesn't show up neatly as a single-step cliff, a slow or laggy checkout bleeds customers across every step. The checkout should be the fastest page on your store; every visitor here has already decided to buy, so a 4-second load or a janky form is pure loss. Check it directly: run the checkout URL through a speed test on mobile, and in Advanced Parameters → Performance confirm caching and CCC are on for production. If form validation triggers full page reloads instead of inline checks, that lag alone explains diffuse drop-off. Treat a slow checkout as a leak even when the funnel doesn't point a clean finger.
After you fix it: recover the carts you still lose
Even a checkout with zero diagnosable faults loses some carts, that's the unfixable share from the top of this post. You don't fix those at the checkout; you win a portion back afterwards. An abandoned-cart email sequence is the one automation that pays for itself here. The mechanics are in abandoned-cart emails and the PrestaShop setup in abandoned-cart email automation. Recovery is the floor under your funnel, not a substitute for fixing the leak above it.
Confirm the fix actually worked
The same discipline that found the leak proves you closed it. Before you changed anything you recorded the step-by-step drop-off; after, compare the same funnel over a matched window: at least 30 days and 200+ checkout starts. You're looking for the specific cliff you targeted to flatten, not just a vague feeling that "it seems better." If the addresses-step drop you set out to fix didn't move, you fixed the wrong thing. Go back to the recordings.
And do the cheap arithmetic on what it's worth: lifting checkout completion by a single percentage point, say 30% to 31%, is roughly 3.3% more revenue with zero extra traffic. On a store doing €100,000 a year that's about €3,300 from an afternoon of diagnosis and a configuration change. No ad campaign returns effort at that rate, which is exactly why the leaking checkout is the first place to look, not the last.
FAQ
How many checkout starts do I need before the funnel data means anything?
Aim for at least 30 days and 200+ checkout starts before you act on a pattern. Below that, a single bad day or a weekend skews the whole picture, and you risk "fixing" noise. If your store is too small to hit 200 starts in a month, lean harder on session recordings, ten recordings of people quitting at the same field tell you more than a thin funnel ever will.
People drop at more than one step. Which leak do I fix first?
Fix the steepest single cliff first, not the step with the most total loss. A 40% drop between two steps is a structural problem with that step; a gentle 5% bleed across every step is usually speed or general friction. Close the biggest cliff, re-measure over a matched window, then move to the next. Fixing one thing at a time is the only way to know what actually worked.
Is 70% cart abandonment a sign my checkout is broken?
Not on its own. Around 70% is the e-commerce average, and a large share of it is unfixable, wishlisting, price-comparison, interruptions. The number that should worry you is the drop among people who started checkout, not the people who only ever filled a cart. A high overall abandonment rate with a clean step-by-step funnel means your checkout is fine and the loss is upstream.
Will switching to a one-page checkout fix my drop-off?
Only if your leak is the stepped structure itself. If your real problem is a surprise shipping cost at the delivery step or a rejected postcode at addresses, a single-screen layout won't touch it. You'll have bought a redesign for a problem you didn't have. That's why this post is diagnosis first: confirm which step is bleeding before you change the flow. See one-page checkout for PrestaShop for when it genuinely is the answer.
The checkout feels fine to me. Why are mobile numbers so much worse?
Because you're almost certainly testing on desktop. A wrong keyboard on the postcode field, a tap target too small for a thumb, or a total scrolled off-screen never shows up in a desktop test but quietly costs mobile orders. If mobile conversion sits far below desktop, that's its own leak. The fixes are in mobile checkout optimization.
If your fastest route to a low-friction checkout is replacing the stepped flow with a true single-screen one, our Checkout Revolution module does it from the back office without forking your theme, but diagnose first. Knowing which leak you have is what stops you from buying a fix for a problem you don't have.