When abandonment isn't abandonment
The default explanation for a high cart-abandonment rate is some combination of: shipping cost too high, copy too weak, checkout too long, prices not competitive. All of those are real. None of them cause sudden spikes.
A sudden jump in abandonment over a weekend is often not a marketing problem. It's a bug. A step in your checkout that worked yesterday silently broke for a slice of your traffic, and your analytics aren't built to tell the difference between "customer changed their mind" and "customer couldn't complete the step."
Here are five silent bugs that show up as abandonment in your dashboards. If your rate spiked recently, check these first.
1. The payment form fails in Safari on iPhone
Stripe.js, Shop Pay, Apple Pay, and many other payment SDKs are sensitive to Safari's stricter cross-origin and cookie policies. After a Shopify theme update, a new app install, or a minor payment SDK version bump, the payment iframe can silently fail to load in Safari on iPhone.
What the customer sees: a blank space where the payment form should be, or a never-loading spinner. What you see: a normal-looking checkout-started event in analytics with no corresponding completion. If many of your shoppers use iPhones, a silent break here looks identical to "abandonment is up."
How to spot it: open your store on an actual iPhone (not just Chrome's mobile emulator, they behave differently) and walk through checkout. If the payment form doesn't render, you've found it.
How to catch it next time: re-test on a real iPhone after every theme or app update. A scheduled mobile-emulated test in Chromium catches layout and script-loading breaks on a phone-sized screen, but not bugs that only happen in Safari's own engine, so it complements the iPhone check rather than replacing it.
2. A promo code stops applying for some segments
You launch a campaign with code SUMMER25. It works for the first week. On a Tuesday morning, a discount app updates and the code's eligibility rule, usually "minimum subtotal $X" or "first-time customers only" or "specific collection", silently changes.
Now the code applies for some customers but not others. The ones who don't qualify see "invalid code" or full price, and the worst part is they assume you're misleading them. They abandon, and they also don't come back.
The signal: refund tickets two days later asking why their code didn't work. By then you've lost a week of conversion on your headline promo.
How to spot it: test each of your top 3 active promo codes weekly. Confirm the discounted total is correct, not just that the code "applies."
3. Shipping calculator errors on certain regions
International shipping flows are easy to skip because everyone assumes they work. A third-party shipping-rate app starts returning an HTTP 500 for one country or zone, and orders to that region quietly stop.
Your blended conversion looks normal because most of your orders ship to a few regions. You're losing every order from one segment, but it's small enough that the overall number barely moves. Until you look at country-level conversion data, which you probably don't.
How to spot it: add a test address from each region you ship to and confirm shipping rates load. If you ship to 10 countries, test all 10 quarterly.
4. Address validation rejects valid inputs
A new address-validation app. Loqate, Smarty, Postal Code Validator, rolls out a tighter ruleset. Apartment numbers, PO boxes, military addresses (APO/FPO), or international postal-code formats start getting rejected.
The customer sees "please enter a valid address" with no clear hint of what's wrong. They retype, fail again, retype, abandon. Your analytics show "lots of starts without completes." Address-step is rarely tracked granularly enough to spot the loop.
How to spot it: test checkout with an APO address, a PO box, a postal code from a country you don't ship to often (UK, Australia, Germany), and an apartment number with a suite letter. If any one of those fails, your validator is too aggressive.
5. 3D Secure / SCA flow times out
EU and UK customers hit the 3D Secure verification step, which redirects to their issuing bank for verification. If the redirect URL is wrong, the popup is blocked, or the callback fails, the customer is either left on a stalled page or bounced back to checkout with no order.
From your payment provider's side: a payment that needed action and never completed. From the customer's side: a feeling that their bank declined them, when actually the flow just broke. They leave thinking the problem is on their end.
This bug mostly hits UK and EU cards, where strong customer authentication rules make 3D Secure common.
How to spot it: 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. Complete the flow end to end. If the challenge or the final confirmation fails, your 3D Secure handling is broken. A test-card pass doesn't prove live bank authorisation, so also watch real UK and EU orders after payment changes.
How to diagnose your own abandonment
If you skimmed this whole post nodding along, your next move is concrete:
- Test Safari on a real iPhone first. Real device, not the desktop simulator.
- Apply your top 3 promo codes and confirm the discounted total is right.
- Add an address from each of your top 3 shipping zones.
- Test 3D Secure with your payment provider's test cards in its test mode, on a development store or a copy of your store.
- Compare your screenshots to a known-good run if you have one.
If any step fails, you have a real bug, not an abandonment problem. Fix the bug, and the abandonment it caused goes away without you touching a single piece of marketing copy.
Don't want to run the promo code, shipping and screenshot checks manually every week? Tracefox automates them: scheduled checkout tests on the viewport you choose for each test, with alerts when a scheduled run fails. Safari on iPhone and 3D Secure still need the manual checks above.
What "high abandonment" actually means
A 70% abandonment rate is the industry baseline (Baymard Institute tracks it across 49 studies). Mobile rates tend to run higher than desktop. If your store is close to that baseline, you have a normal funnel and your levers are marketing ones: better product images, clearer shipping cost upfront, fewer required form fields, trust signals.
If your rate suddenly jumps above where it was last month, check for a bug first. Test the checkout flow before you A/B test the copy.
Tracefox runs scheduled checkout tests in headless Chromium on the desktop, mobile or tablet viewport you choose for each test, and alerts you when a scheduled run fails. Start free with one checkout test, no credit card.