Checkout Button Not Working on Shopify? Run This 30-Second Triage First
Your checkout button is dead, customers are emailing, and every minute is lost revenue. Take a breath. A checkout button that stopped working is almost always one of eight causes, and the first four checks take about thirty seconds. This guide runs the fast checks first, then works through every cause in order of likelihood — with fix steps sourced from Shopify’s official documentation and resolved community threads.
The 30-second triage
Do these in order. Each one takes seconds and cuts the possibilities roughly in half.
- Is it Shopify, or is it you? Open shopifystatus.com — Shopify’s official status page lists “Checkout” and “Storefront” as separate components. If Checkout shows an incident, stop debugging. Nothing on your side fixes it, and it will resolve without you.
- Bypass the theme: go to
/cartdirectly. Typeyourstore.com/cartinto the address bar and click checkout there. Slide-out drawer carts are theme JavaScript; the/cartpage is a plain Shopify template. If/cartworks but the drawer doesn’t, you have a theme or app JavaScript problem (causes 1–3 below). If even/cart’s button is dead, keep going. - Is the button dead, greyed out, or showing an error? These are three
different problem families. Silently dead (clicks do nothing) points to
JavaScript (causes 1–3). Greyed out and unclickable points to a
disabledattribute or configuration (cause 4). An actual error message like “This store is currently unable to accept payments” points to settings, not code (cause 5). - Open the browser console. Press F12, click the Console tab, then click the broken button. Red errors on load or on click are your trail — this is Shopify’s own first diagnostic in its Buy Button troubleshooting and in community answers.
- What changed in the last 48 hours? An app installed or updated, a theme edit, a theme update. Shopify’s theme troubleshooting doc makes “temporarily uninstall recently added or updated apps” one of its first tests. If something changed recently, start there (cause 2 has the safe way to bisect it).
- Test in incognito or on another device to rule out cache and browser extensions — also from Shopify’s official troubleshooting steps.
Now the causes, most likely first.
Cause 1: Theme JavaScript errors
The most common family in community threads: the button renders, but its click handler is broken, so clicking does nothing.
How to recognize it. The console (triage step 4) shows red errors on
the product or cart page. Real examples from resolved threads: an
Uncaught SyntaxError from one extra closing brace in custom cart code
(community, solved);
this.cart.getSectionsToRender is not a function after edits to
product-form.js
(community);
an HTTP 400 on checkout submit because the theme’s cart form was missing
variant IDs
(community).
Outdated themes that have left the Theme Store recur in these threads too.
One caution: third-party scripts often load cross-origin, so the console
may show only an opaque “Script error.” with no detail
(community).
No readable error text does not mean no error.
How to fix it today.
- Revert recent code edits. Shopify’s troubleshooting doc covers restoring previous file versions from the code editor’s version history.
- Can’t find the edit? Download a fresh copy of the theme and publish it. That alone fixed a dead “Proceed To Checkout” button in a resolved thread.
- Going forward, duplicate the theme before customizing, so there is always something to roll back to.
- If the theme is unsupported or abandoned, plan a move to a maintained one — Shopify Support can’t help with themes that are no longer in the Theme Store.
Cause 2: App conflicts — embeds and leftover injected code
The “it worked yesterday” cause. Apps add code to your storefront two ways: app embeds you can toggle in the theme editor, and code injected directly into theme files (Extend your theme with apps).
How to recognize it. The button broke right after you installed or updated an app. Speed, SEO, and cookie-banner apps that defer or lazy-load JavaScript are frequent suspects in community diagnosis. And here is the one merchants never suspect: an app you already uninstalled can still be the cause, because “uninstalling an app doesn’t automatically remove its code from your theme”.
How to fix it today.
- In the theme editor, open the App embeds panel and toggle embeds off one at a time. Save and retest the button after each. The last one you turned off before it started working is the culprit (official toggle steps, bisect procedure).
- Do the bisect on a duplicate theme and preview it, so your live store isn’t flapping while you test.
- For leftover code from an uninstalled app, contact the app’s developer for removal instructions — that is Shopify’s documented path.
- If the culprit is a speed or optimizer app, disable its JavaScript defer/lazy-load option before uninstalling it outright.
Cause 3: The drawer cart is broken (but /cart still works)
Modern themes add items via POST /cart/add.js (the Ajax API) and
re-render the drawer through the Section Rendering API — a much bigger
JavaScript surface than the plain /cart page.
How to recognize it. The drawer never opens, spins forever, or its
checkout button is dead — while navigating to /cart manually works
(triage step 2). In the Network tab (F12 → Network), /cart/add.js fails.
The documented error shape is a 422 “Cart Error” with descriptions like
“The product ‘…’ is already sold out.”
(Cart API reference) —
so an “unresponsive” add-to-cart can actually be an inventory rejection
your theme is swallowing silently. Also documented: when bundled section
rendering fails, sections come back as null
(Section Rendering API),
and a theme that doesn’t handle that leaves a stale or broken drawer.
How to fix it today.
- Confirm the split: if
/cartworks, make the “View cart” link prominent so customers have a working path while you fix the drawer — the cart page is the stable fallback. - Check whether it is really inventory: a 422 “sold out” from
/cart/add.jsis fixed in the admin, not in code. - Otherwise treat it as cause 1 or 2: revert recent drawer code edits or bisect app embeds. Many themes also offer a setting to switch the cart type from drawer to page as a stopgap — check your theme’s docs.
Cause 4: The button is greyed out or disabled
How to recognize it. The button is visible but grey and unclickable.
Right-click it and choose Inspect: a disabled attribute on the
<button> element is the direct cause in
multiple threads.
The usual source is a custom “agree to terms” checkbox that disables
checkout until ticked — and never re-enables it when its script breaks.
Shopify’s
accelerated checkout compatibility doc
confirms terms checkboxes are custom code or app additions, not native
features.
How to fix it today.
- If
disabledis present, find the script that set it: search your theme code fordisablednear the checkout button, or remove the terms-checkbox customization. - Also verify the store isn’t paused and your plan is active — a paused store presents as a store-wide dead checkout (community).
Cause 5: Payments or shipping settings (not a bug at all)
Sometimes the button works fine — it is the next step that refuses.
How to recognize it. The customer reaches checkout and sees “This store is currently unable to accept payments” — that means no active primary payment provider, and supplementary wallet buttons can’t substitute for one (Troubleshooting payment gateways). Or the customer can’t get past shipping — no shipping rate matched their address, which comes down to product weights, markets, and shipping profiles (Troubleshooting shipping rates). A third-party gateway with wrong credentials, or one still in test mode, fails the same way.
How to fix it today.
- Settings → Payments: confirm a primary provider is active and complete.
- For third-party gateways, re-check account IDs and keys with the provider, and confirm test mode is off.
- Settings → Shipping: confirm physical products have weights and your rates cover the customer’s region.
Cause 6: “Buy it now” buttons hidden or conflicting
A distinct cluster: the express checkout button is missing or grey while the regular add-to-cart works. All of this is documented in Shopify’s accelerated checkout compatibility page: accelerated buttons don’t support cart attributes (terms checkboxes, gift-wrap options, delivery-date pickers), they buy a single variant only, and they can conflict with currency converters and apps that interact with the cart.
How to fix it today. Decide which matters more. If the express button does, remove the incompatible customization or app. If the customization does, remove the accelerated button from the theme.
Cause 7: Buy Button embeds on external sites
Different product, same phrase: the
Buy Button channel
embeds purchasing on non-Shopify websites. Per the
official FAQ:
host-site CSS can hide the button (look for rules hiding iframe
elements); check the console for errors and the Network tab for
buy-button-storefront.min.js; a 404 means the product was deleted and
recreated, so regenerate the embed code. To isolate, paste the embed into
a bare HTML file — if it works there, the host site is the problem. One
more trap:
Shopify recommends against
placing Buy Buttons on your own Shopify store, because they can break the
checkout process — a self-inflicted dead button.
Cause 8: A Shopify outage
Everything broke at once, on every browser, and you changed nothing. Check the “Checkout” component at shopifystatus.com and wait it out — nothing on your side fixes an outage. This is why it is triage step 1: a ten-second check that ends the panic.
What you can see — and what only Shopify can
An honest note on where monitoring helps and where it can’t.
Everything up to the checkout click happens in your storefront: the
add-to-cart button, the cart drawer, the /cart page, the buy button’s
click handler. Errors there — causes 1, 2, and 3 above — are visible,
catchable, and attributable to the theme edit or app that caused them.
That is the territory where an error monitor can tell you which app or
script broke your buy path, ideally before a customer emails you.
Past that click, the checkout itself, the Thank-you page, and the Order-status page are rendered by Shopify. No third-party app can see inside them. Payment declines, shipping-rate mismatches, and checkout outages (causes 5 and 8) live there — for those, trust Shopify’s status page, your admin alerts, and Shopify Support. Any tool that claims to watch your entire checkout end-to-end is overpromising.
Errorline is being built for the first territory: buy-path error monitoring that names the app or script that broke your store’s checkout button. If you want one email when it launches, the form below is all there is to it.
Get notified when Errorline launches
Errorline tells you which app or script broke your store's checkout button — before a customer has to. The app is in development. Leave your email and you will get one message at launch.
No spam — one launch email. Privacy note.