Home / Blog

Shopify checkout broken? 7 fast fixes for the dead-stop sale

Editorial Team, StoreMend Audit. Updated 2026-07-07.

A buyer reaches checkout, taps the pay button, and nothing happens. Or the page throws a shipping-calculator error. Or Shop Pay never loads. Or the sessions look fine until the funnel report shows 82% of shoppers dropping between "started checkout" and "completed payment."

Every one of those is "checkout is broken." The fix is different for each. The first job is figuring out which one shows up on the store.

This guide walks the diagnostic ladder from most-obvious to most-hidden, then names the fix for each. It sits alongside a broader pattern the StoreMend audit corpus surfaces across 1,091 Shopify storefronts: 72.2% of stores are functionally invisible to ChatGPT, Perplexity, and Google AI Overviews, and 68.1% ship product pages without working Product or Organization JSON-LD. A store that is hard to find AND has a broken checkout pays the acquisition cost twice, once on the discovery side and once on the conversion side.

Not sure whether the drop is a checkout bug or something upstream? The StoreMend audit runs 12 conversion-facing checks against a live store in 60 seconds. $39 one-time. 30-day no-questions refund. Run an audit at storemend.com.

Step 1: Is checkout actually broken, or just slow, or just high-friction?

Three failure modes look identical in a dashboard and require three different fixes.

Literally broken. The pay button does not fire. Shop Pay does not load. Shipping options are blank. The buyer sees an error banner. The buyer cannot complete a purchase no matter how patient they are. Session recordings show taps with no response, or reload loops, or console errors.

Effectively broken because slow. Checkout loads, but the payment step takes 8 to 15 seconds to respond after the buyer taps pay. Shop Pay wallet lookup times out. Address autocomplete lags. A meaningful share of buyers assume the site froze and close the tab. Session recordings show the taps registering and the buyer waiting, then leaving.

Effectively broken because high-friction. Checkout works, is fast, and still hemorrhages buyers. Something the buyer sees at checkout (a surprise shipping cost, a missing trust badge, a required account creation, a mismatched total, an unfamiliar payment provider name) breaks the buy decision that was made at cart.

Confirm which one before fixing anything.

Reproduce it on a real device.Not the Shopify preview. Not desktop only. Load the store on a phone on cellular data (turn Wi-Fi off), add to cart, go to checkout, and finish a live order with a real card. Do the same on the highest-traffic device in Google Analytics (usually iPhone Safari). If checkout works cleanly, pull three abandoned-cart session recordings from Hotjar, LuckyOrange, or Shopify's own Analytics and watch them start-to-finish. What the buyer does with their thumb is the answer.

Read the console. With Chrome DevTools open (View, Developer, JavaScript Console), reproduce the checkout flow. Any red errors during the checkout page load, especially any that reference third-party domains (review apps, chat widgets, popups, tag manager), belong on the fix list.

Check the funnel numbers.In Shopify Analytics, look at "Online store conversion rate," specifically the "Reached checkout" to "Sessions converted" step. Industry-typical is 45% to 65% of "reached checkout" sessions converting. Under 30% is a strong signal of checkout brokenness. Under 15% is an emergency.

The next sections cover the top seven causes, in order of how often they trip the diagnostic in the wild.

Step 2: Custom scripts fighting the checkout page

The most common "buttons stop working" cause is a custom script running on checkout that breaks Shopify's own JavaScript.

Shopify Basic, Shopify, Advanced, and Retail plans use the standard hosted checkout at checkout.shopify.com. Custom scripts on the storefront do not touch it. If a store is on one of those plans and checkout is broken, the cause is almost never a storefront script; check payment provider and shipping calculator first.

Shopify Plus stores can (and historically did) customize checkout.liquid. Every custom script and Liquid customization in that file is a candidate cause. Common breakage patterns:

  • A legacy checkout.liquid customization that predates Shopify Checkout Extensibility (rolled out through 2024 with a deprecation deadline extended into 2025). Custom checkout.liquid stopped working when Shopify moved to the Extensibility model. Stores that never migrated see broken flows, broken analytics, or broken discount codes.
  • A custom Google Tag Manager container firing a script that shadows window.Shopify.checkout or attaches a click handler that swallows the pay button event.
  • A third-party analytics or personalization snippet (Segment, Heap, Klaviyo, Rebuy) firing an inline script during checkout page load that throws before Shopify's payment JavaScript initializes.

Fix path. For Shopify Plus stores still on legacy checkout.liquid, the fix is migrating to Checkout Extensibility. That is a project, not a 10-minute change. Reference: Shopify Checkout Extensibility documentation. Budget 1 to 3 weeks for a store with heavy checkout customization.

For non-Plus stores where the console shows an error from a specific script domain, remove that app or move the tag out of the checkout page. In Shopify admin, go to Online Store, Preferences, Google Analytics and Custom Pixels; audit every pixel or custom script and disable one at a time to isolate the culprit. The first script that, when disabled, unblocks checkout is the answer.

Step 3: Third-party apps firing on checkout when they should not

Review widgets, live-chat popups, exit-intent modals, cookie banners, and upsell drawers were built for storefront pages. When they leak onto checkout, they either break it directly (by attaching event listeners on elements that no longer exist in the extensibility model) or push the buyer off (by covering the pay button with a chat bubble on mobile).

Common offenders in the StoreMend audit corpus:

  • Review widgets (Yotpo, Judge.me, Loox, Okendo) with legacy embed scripts that inject on every page including checkout.
  • Live-chat widgets (Tidio, Gorgias, Intercom, tawk.to) that render a bubble covering the primary CTA on mobile checkout.
  • Exit-intent popups (Justuno, Privy, Wisepops) firing on the checkout page when the buyer moves the cursor toward the browser back button.
  • Cart-drawer upsells (ReConvert, Rebuy, Bold Upsell) with a post-purchase script that runs on the checkout page instead of the thank-you page.
  • Cookie-consent banners (Cookiebot, OneTrust) covering the pay button on smaller viewports.

Fix path.For each app installed, open its settings and confirm it is scoped to storefront pages, not checkout. Most modern versions have a "run on checkout" toggle; turn it off unless the app is specifically a checkout upsell or checkout survey app that belongs there. On Shopify Plus, use Custom Pixels with URL exclusions so tracking scripts skip /checkout paths. In Shopify admin, Online Store, Themes, Customize, walk every app embed and confirm placement.

For chat widgets specifically, hide the bubble on /checkout URLs. Most chat vendors support URL exclusions in their dashboard. The buyer does not need a chat bubble on the payment step; the buyer needs to see the pay button.

Step 4: Payment provider misconfiguration

The pay button works, the buyer enters card details, and payment fails with a vague error. Or Shop Pay is off. Or Apple Pay does not appear. Or the total is in the wrong currency.

Common patterns:

  • Shop Pay disabled.Shop Pay lifts conversion rate materially versus manual card entry (Shopify's own published data puts the accelerator at a double-digit conversion lift on mobile). A store with Shop Pay disabled in Payment Providers, Manage Shop Pay is leaving conversion on the table. Enable it unless there is a specific reason not to (some B2B and international configurations require it off).
  • Apple Pay and Google Pay unconfigured. In Payment Providers, both need to be turned on and the domain verified. An unverified domain silently hides the wallet buttons on Safari and Chrome mobile, where the majority of impulse-buy conversions live.
  • Expired or revoked payment gateway credentials.If the store uses a third-party gateway (Stripe, Braintree, Authorize.net, PayPal, Adyen) instead of Shopify Payments, expired API keys cause silent payment failures. Rotate keys per the gateway's documentation, and set a calendar reminder for the expiry date.
  • Currency mismatch. A store selling internationally with Markets configured but with the storefront currency locked to USD forces buyers to compute exchange rates in their head. Buyers do not do that; they leave. Configure Markets currency per region.
  • 3D Secure declines on European traffic. Buyers in EU markets require Strong Customer Authentication (SCA) via 3D Secure 2. Stores using an older gateway version see a spike in declines from EU IP addresses. Confirm the payment gateway supports SCA 2 and that the flow completes without a redirect loop.
  • Fraud filters rejecting legitimate buyers.Overly aggressive fraud rules in Shopify's fraud analysis or in a third-party fraud app (Signifyd, NoFraud, Riskified) reject good orders. Pull the last 30 days of "cancelled by fraud filter" orders and review the false-positive rate.

Fix path.In Shopify admin, Settings, Payments, walk every provider. Confirm Shop Pay, Apple Pay, and Google Pay are on. Confirm domain verification is complete. Rotate any credentials that show a "last updated" date over 12 months old. In Settings, Markets, confirm currency per region. Run a live test order with a real card on the highest-traffic device. If the order completes, ship a $1 test transaction from a peer or another team member's card to double-check.

Step 5: Shipping calculator misconfigurations

Checkout throws "shipping options unavailable" or "we can't ship to this address" or the shipping cost is $0 when it should not be. Buyer abandons.

Common causes:

  • Undefined shipping zones.In Settings, Shipping and Delivery, a shipping profile with no zones defined, or with the buyer's country missing from the zones, returns no shipping options at checkout. The buyer sees "no shipping methods available."
  • Empty weight fields on products. Rate calculations that depend on weight (USPS, UPS, FedEx, Canada Post carrier-calculated rates) fail silently when products have no weight defined. Bulk-edit products in Shopify admin, Products, and set a weight on every SKU that ships physically.
  • Flat-rate profile scoped to zero products. A shipping profile created for a specific product tag or collection that later gets renamed leaves the profile targeting no products. The default profile then covers everything and returns unexpected rates.
  • Free-shipping threshold logic errors.A "free shipping over $75" rule set at the shipping-profile level while a discount code is also active can produce negative shipping totals or checkout errors on certain cart configurations.
  • Third-party shipping app conflict. Apps like Shippo, Easyship, Bespoke Shipping, Advanced Shipping Rules can override native rates and, when misconfigured, return no rates. Disable the app and retest; if checkout works, the app configuration is the issue.

Fix path.In Settings, Shipping and Delivery, review every shipping profile. Confirm every product is assigned to at least one profile. Confirm every profile has at least one zone covering the buyer's country. For carrier-calculated rates, confirm every product has a weight. Run a live test checkout with a real address in each major market the store ships to.

Step 6: Trust signals dropping between cart and checkout

Cart page shows customer reviews, security badges, guarantee language, and the "As seen in" logo strip. Checkout page shows none of it. Buyer's confidence dips at the exact moment they hand over card details.

Shopify's hosted checkout is intentionally minimal. That is a conversion benefit for well-known brands (Amazon has no trust badges at checkout) and a conversion cost for stores where the buyer has not heard of the brand before today. The gap between what the buyer sees at cart and what the buyer sees at checkout is where the trust drop lives.

Fix path is layered:

  • Shopify Plus checkout customization.On Shopify Plus with Checkout Extensibility, add a custom section to the checkout page carrying the "Money-Back Guarantee," "SSL Secure," "30-Day Returns," and top 3 star reviews. Extensibility supports this without breaking the payment flow. Reference: Shopify Checkout UI Extensions.
  • Non-Plus workaround. Shopify Basic through Advanced cannot customize the checkout page. Move the trust load upstream. Ship the cart page with the same trust stack the checkout page would have carried. Confirm the guarantee language, secure-checkout badge, and top-3 review snippet are visible in the cart drawer or cart page. The buyer takes that context into checkout even if the checkout page itself is bare.
  • Shop Pay recognition.Shop Pay's own branded UI carries trust for buyers who have used it before elsewhere. Enabling Shop Pay (Step 4) is also a trust-signal move.
  • Order summary clarity. The order summary on the right side of checkout is the one surface the buyer studies before paying. Confirm the product image, name, variant, and price render cleanly. Missing product images at checkout are a common cause of last-second bounce.

Trust drops usually correlate with schema-absence patterns: a store with no aggregateRating on PDPs also tends to have no trust stack in the cart. The Shopify audit guide walks the full 12-check sequence and lists trust as one of the load-bearing checks.

Step 7: The analytics gap that hides checkout errors

The nastiest checkout problem is the one nobody knows exists. A payment failure on a specific card BIN. A shipping error on a specific ZIP code. A JavaScript error on a specific Android version. Each affects a small share of buyers, hides in aggregate metrics, and compounds silently for months.

Most Shopify stores in the sample have no error tracking on checkout events. Google Analytics 4 tracks "begin_checkout" and "purchase" out of the box but does not surface JavaScript errors or payment declines by category. Shopify Analytics gives high-level funnel numbers without per-error breakdowns.

Fix path.

  • Enable client-side error tracking.Sentry, LogRocket, or Datadog RUM installed on the storefront (with checkout page coverage on Shopify Plus) captures JavaScript errors, browser types, and reproduction steps. Sentry's free tier covers most small stores.
  • Add checkout-event error events to GA4. Fire a custom event on payment failure, shipping calculation failure, and address validation failure. Even a simple checkout_error event with a reason parameter surfaces the shape of the problem in GA4 reporting.
  • Watch Shopify's own decline reasons.In Orders, filter to "Cancelled" or "Payment failed" orders. Shopify shows the decline reason from the gateway (insufficient funds, card declined, address mismatch, 3D Secure failed, fraud rule triggered). A concentration of one reason points at a fixable cause.
  • Weekly funnel review. Reached-checkout to converted, week over week, by device. A drop of 5 percentage points week over week is the signal. Investigate before it becomes a month-long silent leak.

Analytics is the fix that prevents the next six problems from becoming three-month mysteries.

Why "broken checkout" compounds with AI-search invisibility

The StoreMend audit corpus surfaces a pattern that shows up across categories. 72.2% of the 1,091 Shopify stores audited are functionally invisible to ChatGPT, Perplexity, and Google AI Overviews. 68.1% ship product pages without working Product or Organization JSON-LD.

A store with a broken checkout and full AI-search visibility loses buyers at the last step. A store with a working checkout and no AI-search visibility never gets the buyer to begin with. A store with both problems (a meaningful share of the sample) pays the acquisition cost on paid ads, gets a smaller share of the organic funnel, and loses the buyers it does get at the point of payment. The funnel double-taxes.

Fixing checkout first is correct when the drop is severe. Fixing schema and AI-search access in parallel is what pulls the top of the funnel back up so the fixed checkout has enough traffic to prove itself. The State of Shopify 2026 report walks the full cohort numbers, and the Shopify audit guide walks the 12-check sequence in order.

Sibling patterns worth closing next

  • Add-to-carts without sales. If buyers are hitting add-to-cart but not converting even before checkout, the drop is at the cart page or the trust stack, not at checkout. Covered in the add-to-carts-with-no-sales diagnostic.
  • Slow mobile checkout.Checkout that works but takes 8-plus seconds to respond loses buyers to the "site is broken" bounce. Mobile PageSpeed under 40 is a signal. Covered in the Shopify audit guide.
  • AI-search invisibility. If a store is fixing checkout while 72.2% of the sample is invisible to ChatGPT, the check on why the top of the funnel is thin belongs on the same list. Covered in the State of Shopify 2026 report.

FAQ

The pay button on my Shopify checkout does nothing when tapped. Where do I start?

Open Chrome DevTools, load the checkout page, tap the button, and read the console. Any red error naming a third-party domain (review app, chat widget, GTM container) is the first suspect. Disable that app or pixel and retest. If the console is clean, check payment provider status in Settings, Payments; a disabled or misconfigured gateway can also produce a non-responsive button. Step 2 and Step 4 above walk both cases.

Can I customize Shopify checkout without breaking it?

On Shopify Basic through Advanced, no; the hosted checkout is locked. On Shopify Plus, yes, through Checkout Extensibility (the current model) but not through legacy checkout.liquid (deprecated). Any store still running custom checkout.liquid is on borrowed time and should migrate. Reference: Shopify Checkout UI Extensions.

My Shopify checkout works on desktop but not on mobile. What's going on?

Three usual causes. First, a chat widget or cookie banner covering the pay button on smaller viewports (Step 3). Second, Apple Pay or Google Pay unconfigured so the wallet button that would have shown up on mobile is missing (Step 4). Third, a JavaScript error firing only on Safari iOS or Chrome Android that does not show up on desktop. DevTools remote debugging on a real device surfaces the third cause; the first two are visible in the Shopify admin.

Why does my Shopify checkout show "no shipping methods available"?

The buyer's country is not covered by any active shipping profile, or the products in the cart are not assigned to a profile that covers the buyer's country, or the products have empty weight fields and the store uses carrier-calculated rates. Step 5 above walks the diagnostic. In Settings, Shipping and Delivery, confirm every product ships to every country the store sells in.

My Shopify checkout conversion rate dropped this week and nothing changed. What do I check?

Something changed. Common invisible changes: an app auto-updated, a payment gateway rotated API keys, a shipping carrier changed rate calculations, an OS or browser version rolled out on Safari or Chrome that surfaced a latent bug, or a fraud filter tightened. Start with the "Cancelled" and "Payment failed" orders from the last 7 days; the concentration of decline reasons usually points at the change. Enable client-side error tracking (Step 7) so the next drop shows up with a stack trace, not a mystery.

Is Shop Pay worth enabling?

Yes for almost every direct-to-consumer store. Shop Pay carries stored payment credentials for returning Shopify shoppers, which materially lifts mobile conversion. The exceptions are narrow: some B2B stores with net-30 workflows and some international configurations require it off. Everyone else should enable it in Settings, Payments, Manage Shop Pay.

How do I know if the problem is checkout brokenness versus buyers just abandoning?

Session recordings from Hotjar, LuckyOrange, or Shopify Analytics show what the buyer's thumb does. If the buyer taps the pay button and nothing responds, checkout is broken. If the buyer scrolls the summary, taps back, and leaves without tapping pay, the drop is trust or friction (Step 6). If the buyer never reaches the pay button because the shipping step errors, the drop is shipping (Step 5). Watch three recordings before assuming the cause.

Methodology and disclosure

Findings draw from 1,091 Shopify storefronts audited in Q2 2026 across 12 conversion-facing categories on public storefront pages (the same surface a human visitor sees). AI-search visibility and schema numbers are direct cohort cells; the checkout-cause ordering above is drawn from patterns observed during audit walkthroughs plus published Shopify documentation on checkout and payments. Findings are aggregated and anonymized; no private data was accessed.

Cohort sample refreshes monthly. Updated 2026-07-07.

Run an audit on a specific store. The StoreMend audit covers all 12 conversion checks against a live store in 60 seconds. $39 one-time. 30-day no-questions refund. storemend.com

Prefer a free look first? The 3-check tool at storemend.com/free covers mobile speed, one trust signal, and the SEO title tag. It does not check schema or checkout; the full audit does.