Playbook · Shopify Add to cart button not working

Shopify Add to cart / Buy it now button not working or greyed out on PDP.

Written for a Shopify DTC owner whose main product-page Add to cart or Buy it now control is greyed out, disabled, or dead on click — required options never selected so no variant id, inventory / continue selling leaving the button disabled, product-form.js / buy-buttons Console errors, an app fighting the native button, or dynamic checkout buttons misaligned with the theme buy-buttons block. DIY-first: prove variant selection vs inventory vs JS vs apps vs dynamic checkout; repair the live buy path; retest on the live storefront. Distinct from cart drawer / mini-cart not opening after ATC, sticky add to cart missing, preorder button not showing, selling plan / subscription widget not showing, and Shop Pay button missing. No earnings claims, no invented case studies.

Nico at Latch AI Ops · Sep 8, 2026 · ~12 minute read

Buy the 72-hour install — $997Cart drawer not openingSticky ATC missingMerchant FAQ

01

Add to cart / Buy it now greyed out or dead on PDP — not cart drawer, sticky ATC, preorder, selling plans, Shop Pay.

Several buy-path surfaces can look like “customers cannot buy.” They do not share a settings panel. This page is only when the main PDP Add to cart or Buy it now control is greyed out, disabled, or click does nothing. Cart drawer / mini-cart not opening after a successful ATC is shopify-cart-drawer-not-opening. Sticky add to cart missing is shopify-sticky-add-to-cart-missing. Preorder button not showing is shopify-preorder-button-not-showing. Selling plan / subscription widget not showing is shopify-selling-plan-not-showing. Shop Pay / accelerated checkout button missing alone is shop-pay-not-showing.

02

Prove variant selection vs inventory vs product-form JS vs apps vs dynamic checkout on a live storefront.

Open the live product page — not only Theme editor preview. Capture five proofs before you install another buy-button app:

  1. Variant / options: are Size, Color, and every required option selected so the form has a id (variant id)? Themes commonly keep Add to cart disabled until a complete variant is chosen.
  2. Inventory: Admin product → variant inventory quantity, Track quantity, Continue selling when out of stock, and Online Store channel. Zero inventory with continue selling off greys the button as Sold out.
  3. DevTools Console / Network: click Add to cart / Buy it now — any red errors from product-form.js, buy-buttons, or apps? Does a /cart/add request fire at all?
  4. Theme settings → App embeds: sticky ATC, quantity breaks, bundles, upsell, or custom buy-button apps enabled on Current while the theme still expects native product-form?
  5. Dynamic checkout buttons: theme buy-buttons block — Show dynamic checkout buttons on/off; does Buy it now / Shop Pay / Apple Pay / Google Pay render separately from the greyed ATC?

If you only tested cart drawer open after ATC, the sticky buy bar, a preorder label, a selling-plan picker, or Shop Pay alone, you are on the wrong playbook.

03

Required variant / option not selected so the product form never enables Add to cart.

OS 2.0 themes (Dawn and forks) disable Add to cart until every option has a value and the form holds a valid variant id. Broken variant pickers, missing swatches, combined listings without a selected child, or JS that never writes the hidden variant input leave the button permanently greyed — buyers never reach /cart/add.

Fix path: on the live PDP, select every option until the price updates and Add to cart enables; if pickers do not update price / image / ATC, use variant-picker-not-updating. Color swatches not rendering are shopify-color-swatches-not-showing. Combined listings not resolving a child variant are combined-listings-not-working.

04

Inventory zero, continue selling off, or availability rules leaving the button disabled.

Shopify greys Add to cart as Sold out when the selected variant has quantity 0 (or unavailable) and Continue selling when out of stock is off. Multi-location inventory can show Available in admin while Online Store sees zero at the selling location. Draft / unpublished products, Online Store channel off, or Markets availability exclusions also present a dead button on the buyer URL.

Fix path: Products → variant → Inventory — confirm quantity at the location that sells Online Store, or enable Continue selling when out of stock if you intentionally oversell; confirm product is active and published to Online Store for the buyer's market. Preorder UI that should replace Sold out is shopify-preorder-button-not-showing. Multi-location / POS stock wrong is multi-location-inventory-wrong.

05

product-form.js errors, apps fighting buy buttons, or dynamic checkout buttons misconfigured.

Native buy buttons listen on the product form. A Console error in product-form.js, a theme paste that removed the submit listener, CSP / third-party script failures, or pointer-events:none / overlays from chat / consent / sticky bars can leave the button looking clickable (or greyed) with no /cart/add. Separately, sticky ATC, quantity-break, bundle, upsell, and custom buy-button apps often disable the theme button while their own control fails to mount. Dynamic checkout buttons (Buy it now / Shop Pay / Apple Pay / Google Pay) are a separate theme toggle — turning them on does not fix a disabled Add to cart, and a broken Buy it now is not the same as a missing Shop Pay wallet button alone.

Fix path: clear the Console error on first click; restore the theme's stock product-form / buy-buttons block; Theme settings → App embeds → one buy path on Current (native or one app); Customize Current → Product → Buy buttons → align Show dynamic checkout buttons with what you want buyers to see. Sticky ATC missing is shopify-sticky-add-to-cart-missing. Quantity breaks not showing are shopify-quantity-breaks-not-showing. Bundle builder not showing is shopify-bundle-builder-not-showing. Shop Pay alone missing is shop-pay-not-showing. Cookie / consent overlays stealing clicks are cookie-banner-blocking-checkout.

06

You tested cart drawer, sticky ATC, preorder, selling plans, or Shop Pay alone instead.

Cart drawer / mini-cart not opening after ATC is shopify-cart-drawer-not-opening. Sticky add to cart missing is shopify-sticky-add-to-cart-missing. Preorder button not showing is shopify-preorder-button-not-showing. Selling plan / subscription widget not showing is shopify-selling-plan-not-showing. Shop Pay button missing alone is shop-pay-not-showing. Do not chase drawer, sticky bar, preorder, selling-plan, or Shop Pay-only settings when the broken control is the main PDP Add to cart / Buy it now button.

The only honest test for this page: on a live PDP, Add to cart or Buy it now stays greyed out / disabled / dead on click — fixable with complete variant selection, inventory / continue selling / channel availability, product-form.js clean, one buy path (native or one app), and dynamic checkout buttons aligned — not cart drawer alone, not sticky ATC alone, not preorder alone, not selling plans alone, not Shop Pay alone. Capture options + inventory + Console + App embeds + buy-buttons settings, fix the buy path. Anything else is a different product.

07

When to stay DIY vs pay $997.

Stay DIY if every required option is selected, inventory / continue selling matches what buyers should purchase, Add to cart / Buy it now works on the live PDP, Console is clean on click, and only one buy path (native or one app) owns the button. That is ordinary Shopify admin + theme work.

Pay $997 when the gap is wiring: lead capture, ops alerts, and a checkout-ready workflow on the stack you already pay for, installed in 72 hours after collaborator access lands. Latch does not sell an earnings, conversion, or add-to-cart lift number. Latch does not rebuild your theme's buy buttons as a design agency. One live store. Clock starts when collaborator access is in.

Buy the 72-hour install — $997Merchant FAQAll playbooks