Your cart abandonment might be
a broken checkout.
When abandonment spikes, the obvious culprits, pricing, shipping cost, weak copy, get blamed first. But the real cause is often a step in checkout that silently fails for a slice of your traffic. Test the flow before you A/B test the page.
Free plan: 1 checkout test, no credit card · Paid plans include a 7-day trial
Why can't analytics tell me my checkout is broken?
Shopify, GA4, and Stripe all show you the same thing: a customer started checkout and didn't finish. None of them tell you why.
Analytics can't tell ‘left’ from ‘broke’
Shopify and GA4 record a checkout-started event and a checkout-completed event. They never log ‘customer clicked Pay and got an error.’ That step looks identical to ‘customer changed their mind.’
Stripe only alerts on charges
Stripe's dashboard lights up when a card declines or a payment intent fails. But it stays silent when Stripe.js fails to load on mobile, or the payment form never renders. From Stripe's perspective, nothing tried to happen.
Customers never tell you
The customers who hit a broken step don't email you to say ‘your checkout is broken.’ They assume their card was declined, or that you're sketchy. They leave. You see the dip on Monday.
What silent checkout bugs cause cart abandonment?
Each of these can push up your abandonment rate without triggering an alert from your analytics or payments stack.
Payment form fails in Safari on iPhone
The payment form or Shop Pay fails to load in Safari on iPhone after a theme update. Your iPhone traffic hits the payment step and sees a blank form. They tap back. Your desktop conversion looks normal, so the dashboard tells you nothing. Often the only signal is mobile abandonment crawling up.
Coupon code stops applying for some segments
A discount app updated overnight and your launch promo code only applies when the cart subtotal is above $X, but the rule logic is now wrong. Customers see ‘invalid code’ or full price, abandon, and assume you scammed them. They never tell you. Your refund tickets two days later are the first signal.
Shipping calculator errors on certain regions
Your shipping-rate plugin starts returning an error for one country or zone. The shipping step shows an error message or no rates at all. Orders to that region quietly stop. Your blended conversion looks fine because most orders ship elsewhere, but you're losing every order from one segment.
Address validation rejects valid inputs
A new address-validation app rolls out a tighter ruleset. Apartment numbers, PO boxes, or international formats get rejected. Customers retype, fail, retype, abandon. You see lots of starts-without-completes; you don't see the silent ‘please enter a valid address’ loop they were stuck in.
3D Secure / SCA flow times out
Many EU and UK customers hit a 3D Secure verification step, where their bank asks them to confirm the payment. If that challenge fails to open or return, the customer either sees an error or is bounced back to checkout with no order. Your payment provider records a payment that needed action and never completed. The customer assumes their bank declined them.
How do I check whether checkout is causing abandonment?
Run this checklist against your live checkout. If any step fails, you've found the bug, not a copy problem.
- 1
Test Safari on a real iPhone first
Payment fields, Shop Pay and Apple Pay can break there after a theme update while desktop Chrome looks fine. Mobile Safari behaves differently from desktop Chrome. Use a real device. A Chromium mobile viewport catches layout and script problems, but not bugs in Safari's own engine.
- 2
Apply your top 3 active promo codes
If a discount app updated recently, one of them may be broken. Verify the discounted total is correct, not just that the code ‘applies.’
- 3
Test from your top 3 shipping zones
Add an address from each region you ship to and confirm shipping rates load. International flows are easy to skip because everyone assumes they work.
- 4
Test 3D Secure on a copy of your store
Use your payment provider's 3D Secure test cards in its test mode, on a development store or a copy of your store, because test mode stops real customers paying by card. If the challenge doesn't complete cleanly, UK and EU customers see a failure your dashboard hides. A test-card pass doesn't prove live bank authorisation.
- 5
Compare your screenshots to a known-good run
The diff between a passing run last month and a failing run today often shows the step that changed: a font that didn't load, a button that's wider than the viewport, a form field that's now hidden.
Don't want to run this manually every week? Tracefox can run the promo code, shipping and screenshot checks on a schedule. Safari on iPhone and 3D Secure still need a manual check.
Automate the checklistHow Tracefox catches what your analytics miss
Synthetic checkout tests run on a schedule against your real production store. Tracefox runs the steps you set up the way a customer would, on the viewport you choose, and alerts you when a scheduled run fails.
Scheduled tests, your cadence
Hourly, daily, or weekly per flow, depending on plan. High-traffic stores run their key flows hourly (Business) so incidents surface within about an hour. Slower stores run daily or weekly.
Desktop, mobile or tablet per test
Choose desktop, or mobile or tablet emulation on Pro and Business, for each saved test. Runs in Chromium; Safari-specific bugs still need a real-device check.
A screenshot of every step, a video of the run
When a step fails, you see the page as the test saw it at that step. No guessing, no ‘works on my machine.’
Alerts before Monday morning
Email (plus Slack on Pro and Business) when a scheduled run fails, with the step name, the error, and the screenshot. Fix it before the weekly revenue report shows the dip.
Free plan: 1 checkout test, no credit card · Paid plans include a 7-day trial
Cart abandonment FAQ
What's a normal cart abandonment rate?
Baymard Institute puts the average at about 70%, and mobile rates tend to run higher than desktop. If your store is meaningfully above that average, or your rate suddenly jumped, that's a signal worth investigating, not a baseline to accept.
How do I know if it's broken checkout vs marketing/pricing?
Three quick checks: (1) Did the rate jump suddenly rather than trending up gradually? Sudden jumps often point to bugs. (2) Is the jump concentrated in one device or browser? That points strongly to a technical issue. (3) Is your traffic source mix unchanged? If yes, the change is likely on your side, not on the channel.
If checkout tests pass, why is my abandonment still high?
Tests passing means the flow works for your test data. Abandonment can still be high for legitimate reasons, high shipping, sticker shock, comparison shopping, etc. But once you've ruled out the technical cause, you can A/B test pricing and copy with confidence that you're optimizing a working funnel.
Can I test specific customer segments, like mobile shoppers only?
Partly. Each Tracefox test runs on one viewport: desktop, or mobile or tablet emulation on Pro and Business. Save one test on mobile emulation and one on desktop (both run in Chromium, not real Safari), and you'll see which viewport is breaking. Bugs that only happen in Safari on iPhone still need a check on a real device.
How fast can Tracefox catch a new abandonment-causing bug?
On the next scheduled run of a test that covers the broken step. With an hourly test (Business plan), a bug introduced at 2pm is normally flagged by about 3pm; with daily or weekly tests it can take up to a day or a week. A failed scheduled run is re-run once to confirm before you're alerted, you get at most one failure alert per test per hour, and a recovery email when it passes again.
Stop guessing at your
abandonment rate.
Test the checkout flow before you A/B test the page, and find out whether a broken step is the cause.
Test your checkout freeFree plan: 1 checkout test, no credit card · Paid plans include a 7-day trial