WordPress 4 min read

WooCommerce add to cart button does nothing: what I check

Shoppers click Add to cart and nothing happens. Here is the checklist I run: JavaScript errors, AJAX fragments, cache, theme conflicts, and plugins that break the cart button.

WooCommerce add to cart button does nothing: what I check

Customer taps Add to cart. The page barely flinches. No mini-cart bump, no toast, sometimes not even a spinner. They refresh, try again, then bounce. You still see stock on the product, so it feels like the store is broken even though the rest of the site loads fine.

I treat a dead Add to cart as a front-end and AJAX problem first, not a stock or pricing rewrite. Below is the order I work through before I start swapping themes on a live catalogue.

Open the browser console on the product page

Reproduce the click with DevTools open (Console and Network). A red JavaScript error on click usually means a theme script, a customisation, or a plugin threw before Woo’s cart AJAX finished. Note the file name and whether the error only appears after a recent plugin or theme update.

I also watch the Network tab for a admin-ajax.php or Store API request. No request at all means the button’s click handler never fired. A 403, 500, or empty response means the request left the browser and died server-side.

Confirm it is not a cache or optimisation layer

Full-page cache, HTML minify, and “defer all JavaScript” settings love to break cart buttons. Cached product HTML can ship an old nonce, or strip the Woo cart script entirely. CDN edge cache on product URLs makes it worse: you fix it in admin, visitors still hit yesterday’s markup.

I purge the product URL, disable JS delay or combine on a staging copy, and retest in a private window. If Add to cart works with optimisation off and fails with it on, leave the theme alone and fix the optimisation exclusions for Woo scripts first.

AJAX add to cart vs redirect to cart

Under WooCommerce → Settings → Products, check whether AJAX add to cart on archives is enabled, and whether the product is a simple product, variable, or grouped. Variable products need a variation selected; if attributes are incomplete or the form is broken by the theme, the button looks clickable and still does nothing useful.

I test a known-good simple product next to the broken one. If simples work and variables fail, I dig into attribute terms, default form location, and theme templates that moved woocommerce_before_add_to_cart_button hooks.

Theme and builder conflicts

Page builders that replace the product template often drop Woo’s form markup or load a second jQuery. Sticky headers, custom quantity steppers, and “buy now” overlays can swallow the click. Child-theme overrides of add-to-cart/*.php that drifted from core are a classic after a Woo update.

On staging I switch to a default theme briefly (Storefront or Twenty Twenty-Four) with only Woo active. If the button works there, the conflict is theme or a companion plugin, not core Woo stock settings.

Plugins that rewrite cart behaviour

Minicart widgets, one-page checkout, membership gates, and “hide price until login” plugins all hook the same add-to-cart actions. A membership rule that blocks guests, a currency switcher mid-request, or a security plugin challenging admin-ajax.php can look identical to a dead button.

I disable cart-related plugins one group at a time on staging, clear caches, and retest. When the button returns, I re-enable until it breaks, then read that plugin’s Woo AJAX / Store API settings rather than editing the product again.

Stock, purchasability, and “sold individually”

Less often, the button is fine and the product is not purchasable: stock at zero with hide-out-of-stock on, backorders off, catalog visibility set oddly, or a bundle/composite child missing. The front end may still render a button that Woo refuses to honour.

I confirm Manage stock, status, and that the exact variation (not only the parent) is in stock. Then I check whether a role or wholesale plugin removes purchasability for the current user.

When to stop guessing

If console is clean, AJAX returns 200, cache and optimisation are ruled out, a default theme works on staging, and production still swallows the click, stop shotgun-deactivating live plugins during trading hours. At that point you want a staging clone, the failing network payload, and someone who has traced Woo cart scripts and builder templates before.

Need this sorted properly? If Add to cart still does nothing after the checklist, I dig into theme AJAX, cache, and plugin conflicts on live Woo stores.

WordPress & WooCommerce support →

Most dead Add to cart tickets come down to a JavaScript error, aggressive optimisation, a broken variable form, a builder template, or a plugin challenging cart AJAX. Check the console and Network tab first, then cache and theme. Cheers, and get those carts filling again.

Need a hand with this?

Get help with a broken order journey, custom store features or ongoing WooCommerce care.

A related project

A custom price history feature for WooCommerce

Bespoke plugin work to record product price changes and present the history by date, delivered through an agency.

Talk directly to Adam

Share this article

Back to Blog