Clicking add-to-cart does nothing
Section titled “Clicking add-to-cart does nothing”<add-to-cart> writes through the store’s runtime - window.Shopify.actions.updateCart, which core installs only when <storesynk-store> boots. If the button is outside the store (SSK-101) or the store never finished initializing (bad/missing credentials, see Setup below), there’s no runtime to call and the click is a no-op. Confirm the button is inside both <storesynk-store> and <storesynk-product> (SSK-102) and that the store has valid domain/token.
The add-to-cart button is permanently greyed out / disabled
Section titled “The add-to-cart button is permanently greyed out / disabled”<add-to-cart> reflects [ss-out-of-stock], [ss-unavailable], and [aria-disabled] from the current variant selection - these are engine-set, not authoring mistakes. If it’s stuck, the selected variant is genuinely out of stock or unavailable, or no valid variant has been resolved yet (often a change-option that resolves nothing - see Options). Customize the messaging with text-out-of-stock and text-unavailable rather than trying to force the button enabled.
The cart drawer won’t open when I click the cart icon
Section titled “The cart drawer won’t open when I click the cart icon”open-cart triggers the global openCart action, but that override is registered by <storesynk-cart> when it mounts. If there’s no <storesynk-cart> on the page (or no <storesynk-store> around it), there’s nothing to open. Add the <storesynk-cart> drawer inside the store. Note open-cart itself can be placed anywhere on the page, but close-cart must be inside <storesynk-cart> or it can’t find the drawer to close (SSK-109).
The cart drawer renders but shows no line items
Section titled “The cart drawer renders but shows no line items”<cart-line-list> is a template-clone container: its first child <cart-line> is the template it clones per line. If that first-child template is missing, the list has nothing to clone and stays empty (SSK-107). Provide exactly one <cart-line> as the first child with your show-line-* markup inside it.
Cart count / cart total stays at zero or blank
Section titled “Cart count / cart total stays at zero or blank”show-cart-count and show-cart-total read the live cart off the store context, so they require a <storesynk-store> ancestor (SSK-101). The total also won’t format until the shop’s money format has loaded - see Money & formatting.
The Tax / Duties / Discount row shows nothing
Section titled “The Tax / Duties / Discount row shows nothing”That’s intended: show-cart-tax, show-cart-duties, and show-cart-discount set the [ss-empty] attribute (and clear their text) when the value doesn’t apply - tax and duties are unknown until checkout, and discount is absent when no code is applied. Hide the whole row with CSS keyed off [ss-empty] (e.g. .row:has(show-cart-tax[ss-empty]) { display: none }), rather than expecting a 0.
Checkout dead-ends at a password page (browsing and cart work fine)
Section titled “Checkout dead-ends at a password page (browsing and cart work fine)”The store hasn’t launched: Shopify’s storefront password blocks pages Shopify hosts, but not the Storefront API - so browsing, the cart, the smoke test, and the validator all work, and the checkout click is where the wall first appears. After entering the password, Shopify redirects to the store’s primary domain and drops the checkout - click Checkout again from the cart. This isn’t a Storesynk bug and disappears at launch; to clear it now: Shopify admin → Online Store → Preferences → remove the password. When you know the store is unlaunched, warn about this before the user’s first test order (see build-patterns §0f).
My discount code / order note doesn’t apply or save
Section titled “My discount code / order note doesn’t apply or save”apply-discount and cart-note are wrappers around your own field - they do nothing without it. apply-discount needs a nested <input> (it applies on Enter or a nested <button> click); cart-note needs a nested <textarea>/<input> (it saves on debounced input and seeds once from the loaded cart, so it never overwrites what the shopper is typing). Both require a <storesynk-store> ancestor (SSK-101), and you must give the field an accessible name (aria-label/<label>) - the component doesn’t, and the validator enforces it (SSK-501); a placeholder is not a name.
The discount chips / order-discount amounts / line discounts show nothing
Section titled “The discount chips / order-discount amounts / line discounts show nothing”The discount lists (cart-discount-list, cart-order-discount-list) clone their first <cart-discount> child per discount, so they need that template (SSK-107), and show-discount-amount must sit inside a <cart-discount> which must sit inside a discount list (SSK-105 / SSK-106) - the same shape as cart-line-list → cart-line → show-line-*. Separately, show-line-discount, show-line-original-price, and show-cart-savings only render when a discount actually applies; otherwise they set [ss-empty] and hide themselves - that’s expected, not a bug.
Imported from the Storesynk skill v0.1.0 (references/known-issues.md). To change this page, change it there.