Shopify checkout not working?
Run this diagnostic in order. These 8 checks cover the usual places a Shopify checkout breaks, starting with the quickest to rule out.
Test Safari on a real iPhone first
Many shoppers buy on iPhones, and Safari handles cookies and cross-origin content more strictly than Chrome. Payment fields, Shop Pay and Apple Pay can behave differently there, so a desktop Chrome test doesn't cover it.
Open your store on an actual iPhone (not Chrome's mobile simulator, they behave differently). Add to cart → checkout → all the way through to the payment step. Does the payment form render? Do the Shop Pay and Apple Pay buttons appear?
If payment form fails to render on iOS: roll back your last theme update. If you recently installed a new app: disable it and retest. If neither fixes it: open a ticket with the theme developer or app vendor.
Check your most recent app updates
Shopify apps auto-update on their own schedules. A nightly update for any payment/discount/shipping app can ship with a bug that silently breaks checkout for a slice of your traffic.
Shopify admin → Apps → look at the 'Last updated' column. Sort by date. Any updates in the last 7 days?
Disable the most recent app update (or contact the app developer to roll back). Test checkout again. If it's fixed, that update is the likely cause; tell the app developer what you saw.
Try a known-good test coupon
Discount apps and Shopify Functions sometimes break coupon application silently. Customers see 'invalid code' or wrong totals and abandon.
Apply a 100%-off test coupon at checkout. Does the product total go to $0 correctly? (A product discount doesn't cover shipping.) Apply your most-used active promo code with a real product in cart. Does the discount apply correctly?
If discounts misbehave, disable your discount app most-recently-updated and retest. For Functions on Plus, roll back to the previous deploy.
Test from different shipping zones
Third-party shipping rate calculators (Shippo, Easyship, real-time carrier APIs) sometimes start returning errors for specific countries or zones, without notifying you.
Add an address from each region you ship to: domestic, your top international market, a region you ship to rarely. Do shipping rates load for each?
If rates fail for a specific zone: check your shipping app's logs, contact the carrier API vendor, or temporarily fall back to flat-rate shipping for that zone while you debug.
Test the payment step with a test card
The payment form can load fine while the payment itself fails: a gateway setting changed, a currency mismatch, or a 3D Secure challenge that doesn't complete.
On a development store or a copy of your store, turn on Shopify Payments test mode and pay with test card 4242 4242 4242 4242 (should succeed) and 4000 0000 0000 0002 (should decline). Test mode stops real customers paying by card, so don't turn it on in your live store (Shopify Help: testing Shopify Payments). For 3D Secure, use your payment provider's 3D Secure test cards in its test mode on that copy.
Check your payment provider's dashboard for the failed attempts. The error message there is usually more specific than what checkout shows. A test-card payment that succeeds doesn't prove live bank authorisation, so watch the first real orders after any payment change.
Check your tracking pixels and Web Pixel Extensions
Sometimes the issue isn't checkout itself, it's that conversion tracking broke. Your orders complete fine but Meta/GA4/TikTok stop seeing them. Your dashboards show 'no conversions' even though Shopify shows orders.
Place a real test order. Then check Meta Events Manager / GA4 DebugView for the Purchase event. Does it fire?
A common cause is a disconnected Web Pixel Extension. Re-authenticate the app, or check if a recent app update broke the integration.
Clear cached themes and republish
Sometimes Shopify's CDN serves a stale theme asset that doesn't match what's currently in your repo. Symptoms include checkout looking subtly broken in production but fine in preview.
Shopify admin → Online Store → Themes → your live theme → Actions → Edit code → make a no-op change and save. This can rule out a stale cached asset.
If the no-op change fixes it, a stale cached asset was the likely cause. Watch for this after theme deploys.
Contact Shopify support with specifics
If 1 to 7 didn't fix it, the issue may be on Shopify's side. Support can act faster when you give them specific evidence.
Reproduce the bug, capture: full URL, browser + version, viewport size, timestamp, screenshot, what you expected vs what happened.
Contact Shopify support with that bundle. A specific, reproducible report is much easier to act on than a vague one.
Run the free 60-second Shopify audit, it scores your store's trust signals, conversion basics, and SEO, and flags gaps like the one that just bit you.
Which of these a scheduled test could catch next time
A Tracefox test replays the steps you configure, in Chromium, on one viewport, and stops before payment. It catches a recurrence only when the problem breaks one of those steps.
- 1. Safari / iPhone onlyCaught by a test? No
Tests run in Chromium; mobile is emulated. Keep testing on a real iPhone.
- 2. App update breaks a stepCaught by a test? Yes, if the step is in the test
A flow from product page through cart and checkout to the payment step fails at the step the update broke.
- 3. Discount code stops applyingCaught by a test? Yes, with a coupon step
Add an Apply coupon step with the code, and a text check for the discount line in the order summary.
- 4. Shipping rates fail for a zoneCaught by a test? Partly
Each test uses one address. Create a test per zone you care about, with that zone's address as its test data.
- 5. Payment declines or 3D SecureCaught by a test? No
Tests stop before payment. Use test mode on a store copy, as in step 5.
- 6. Purchase pixel stops firingCaught by a test? No (presence only)
Site scans can alert when a pixel script disappears from a monitored page; they don't check that the Purchase event fires.
- 7. Stale theme assetCaught by a test? Yes, if it breaks a tested step
The same end-to-end flow as cause 2.
| Cause | Caught by a test? | The test that would catch it |
|---|---|---|
| 1. Safari / iPhone only | No | Tests run in Chromium; mobile is emulated. Keep testing on a real iPhone. |
| 2. App update breaks a step | Yes, if the step is in the test | A flow from product page through cart and checkout to the payment step fails at the step the update broke. |
| 3. Discount code stops applying | Yes, with a coupon step | Add an Apply coupon step with the code, and a text check for the discount line in the order summary. |
| 4. Shipping rates fail for a zone | Partly | Each test uses one address. Create a test per zone you care about, with that zone's address as its test data. |
| 5. Payment declines or 3D Secure | No | Tests stop before payment. Use test mode on a store copy, as in step 5. |
| 6. Purchase pixel stops firing | No (presence only) | Site scans can alert when a pixel script disappears from a monitored page; they don't check that the Purchase event fires. |
| 7. Stale theme asset | Yes, if it breaks a tested step | The same end-to-end flow as cause 2. |
Why this keeps happening
You ran the diagnostic. You fixed today's problem. Three weeks from now, a different update will break a different part of checkout, and you'll be back here.
The reason is structural: a Shopify store depends on many things that update independently. Shopify itself, your theme, your apps, your payment gateway, your shipping APIs, your third-party scripts. Any one of them can ship a regression that silently breaks checkout for some segment of your traffic, usually without telling you.
The only sustainable fix is scheduled checkout testing, automated runs of your real checkout flow on a schedule, with alerts when a step fails.
Catch the next checkout break before customers do
Tracefox replays your Shopify checkout on a schedule in Chromium, on the desktop, mobile or tablet viewport you pick for each test (mobile and tablet are emulated, on Pro and Business). When a scheduled run fails, you get an email alert (plus Slack on Pro and Business) naming the failing step, with a link to screenshots of every step. It doesn't replace testing Safari and Apple Pay on a real iPhone.
Test your Shopify checkout freeFree plan: 1 checkout test, 10 manual runs a month, no credit card · Paid plans add schedules and include a 7-day trial