Playbook · Wishlist button not working

Shopify wishlist / save for later button not working — app block, theme conflict, customer accounts.

Written for a Shopify DTC owner whose heart icon, wishlist button, or save for later control does nothing on click — or never appears on the product card / product page — usually a wishlist app embed off on the live theme, a product template missing the wishlist app block after a theme edit, customer accounts required while guests see a dead button, or two wishlist apps fighting the same click handler. DIY-first: prove click vs app event, check app embed and product template blocks, isolate customer accounts and theme conflicts. Distinct from product reviews widget blank or missing, cart drawer / AJAX cart not updating, product variant picker / swatches not updating, and back-in-stock email not sending. No earnings claims, no invented case studies.

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

Buy the 72-hour install — $997Product reviews not showingCart drawer not updatingMerchant FAQ

01

Wishlist / save for later — not product reviews, cart drawer, variant picker, or back-in-stock email.

Several products can look like “the save button is broken.” They do not share a settings panel. This page is only when the wishlist or save for later control is missing, does nothing on click, or never adds the product to a wishlist / save list. A blank Judge.me / Loox / Okendo reviews widget is product reviews not showing. A stale cart drawer after a successful add is cart drawer / AJAX cart not updating. A stuck product variant picker or swatches UI is variant picker / swatches not updating. Missing Klaviyo / app back-in-stock notify emails are back-in-stock email not sending. This page is only: wishlist / save for later on the storefront.

Seven ordinary reasons the control looks dead: app embed disabled on the live theme, product template missing the wishlist app block after a theme publish, customer accounts required while guests click a silent button, heart icon CSS-hidden on mobile, two wishlist apps installed into the same slot, custom liquid overwriting the click handler, or you are debugging product reviews / cart drawer / variant picker / back-in-stock email instead. Walk them in that order. You already pay for the wishlist app. You do not need another wishlist seat to make a button that already exists fire.

02

Prove the wishlist click fired while the list never updated.

Pick a published product. Open the live product page in an incognito window as a guest, then again while logged into a customer account. Click the heart / wishlist / save for later control. Screenshot whether the icon toggles, whether a toast appears, and whether the wishlist drawer /account page updates. Open Theme editor on the live theme → product template and note whether the wishlist app block is present and enabled. Open DevTools → Network and watch for the wishlist app endpoint / customer metafield write. Screenshot empty Network vs a 200 that never updates the UI.

Honest proof: if the app admin shows wishlists for other customers and this click still does nothing, stay on this page — that is app embed, theme app blocks, customer accounts, or conflicts. If the reviews section is blank, leave this page for product reviews not showing. If Add to cart works but the cart drawer stays stale, use cart drawer / AJAX cart not updating. If option clicks leave price / image stuck, use variant picker / swatches not updating. If back-in-stock notify emails never leave, use back-in-stock email not sending. Do not mix those proofs.

03

App embed + product template wishlist theme app blocks on the live theme.

Online Store 2.0 themes mount wishlist apps through an app embed (global script) and one or more theme app blocks on the product template and collection card (heart icon, save for later button, wishlist drawer). A theme switch, duplicate, or “reset sections” publish that drops those blocks is the most common “wishlist disappeared” ticket — the app is still installed; the storefront slot is gone.

Fix: Theme editor → App embeds — enable the wishlist app on the live theme and Save. Product template and featured collection cards — add / re-enable the wishlist / save for later blocks, place them near the product title or ATC, Save. Preview then hard-refresh the live product URL. Product reviews app blocks are still product reviews not showing— this page is wishlist / save for later, not stars.

04

Customer accounts required, guest wishlist, and login redirects.

Many wishlist apps store lists on the customer account (or a customer metafield). When Settings → Customer accounts is disabled, set to “Accounts are optional” without a guest fallback, or the app is configured “login required,” guests see a heart that silently fails or redirects to login with no success path after auth. New Customer Accounts vs classic accounts also change where the wishlist page lives.

Fix: in the wishlist app admin, confirm whether guest wishlist (cookie / localStorage) is enabled or login is required. If login is required, test the full loop: guest click → login → return to product → item present on the wishlist page. Enable customer accounts if the app needs them. Spot-check 3 products as guest and as a logged-in customer. Variant media and combined-listings UI bugs on the product form still belong on variant picker / swatches not updating— that is product options, not wishlist persistence.

05

Dawn-family placement, heart icon vs save-for-later text, and mobile hide.

Dawn-family and most OS 2.0 themes treat the product-card heart and the product-page save for later control as separate app blocks. Merchants often restore one and forget the other — “wishlist works on PDP, missing on collection cards,” or the reverse after a section reorder. Some themes hide the icon under a hover-only overlay that never appears on touch devices.

Fix: in Theme editor, confirm wishlist blocks on both the product template and the card / collection sections you actually publish. Check mobile layout — CSS that uses :hover only, or display:none under a breakpoint, looks like “the button is gone.” Cart drawer Section API bugs after add-to-cart are still cart drawer / AJAX cart not updating— different surface from a dead wishlist click.

06

Two wishlist apps, custom liquid, and scripts fighting the click handler.

Stores that migrated from one wishlist / save for later app to another often leave the old app embed, leftover liquid snippets, or a custom “wishlist” button that preventDefaults the new app’s listener. Custom CSS that sets pointer-events:none or display:none on the heart wrapper also looks like “the button does nothing.”

Fix: keep one wishlist owner. Disable the old app embed and remove orphan liquid / sections on a development theme first. Check console for uncaught errors when the product page loads. Search theme CSS for wishlist-app class hides. Back-in-stock notify apps fighting the sold-out form are still back-in-stock email not sending— different product from a dead wishlist / save for later click after a successful app-block install.

07

You tested product reviews, cart drawer, variant picker, or back-in-stock email instead.

A blank product reviews widget is product reviews not showing. Stale cart drawer / AJAX cart after add is cart drawer / AJAX cart not updating. Stuck product variant picker / swatches is variant picker / swatches not updating. Missing back-in-stock notify emails are back-in-stock email not sending.

The only honest test for this page: a published product’s wishlist / save for later control appears on the live product template (and cards if you use them), app embed is on, guest vs logged-in behavior matches the app setting, only one wishlist owner is installed, console is clean on click, and the list / drawer updates after a successful request. Anything else is a different product.

08

When to stay DIY vs pay $997.

Stay DIY if you can spend one afternoon on the list above: prove click vs wishlist update, enable app embed and product / card template app blocks on the live theme, align customer accounts with guest vs login-required settings, restore heart / save-for-later placement on mobile, and remove competing wishlist apps or CSS hides. That is the whole playbook. No agency required. Short answers also live on the merchant FAQ. Related pages: product reviews not showing, cart drawer / AJAX cart not updating, variant picker / swatches not updating, back-in-stock email not sending.

Pay for help when the work is not the wishlist toggle — it is connecting the stack you already have so lead capture is not dying in DMs, storefront and checkout-ready exceptions land in a channel you already check, and the live store is one workflow instead of a spreadsheet plus a Slack bot you forgot. That is the Latch AI Ops install.

What $997 USD one-time buys: lead capture on the live store, ops alerts in a channel you already check, and a checkout-ready workflow. 72 hours after collaborator access, not after payment. One live Shopify store. Access plus a delivery thread. Store URL collected at checkout. Not a SaaS seat, not a theme rebuild retainer, not a conversion guarantee, not a brand or theme job.

Other shops’ public ranges, not testimonials: a checkout / ops install typically runs $500–$2,500. A full ops consulting block typically runs $2,000–$5,000. $997 is the cheap end of that work, sold as a 72-hour install of three systems — not as an earnings number or conversion-lift claim.

What it does not buy: more orders, recovered revenue, perfect wishlist buttons forever, or a case study. Latch AI Ops has not published customer proof because there are no customers yet. You are buying the install.

Checkout is on Whop. Operator is Nico. United States offer. You can revoke collaborator access after handoff. We do not take owner passwords.