Login does nothing / <log-in> and the show-customer-* displayers never react
Section titled “Login does nothing / <log-in> and the show-customer-* displayers never react”The whole customer module (login, show-customer-*, buyer-identified carts, the customer-pricing widget) is opt-in: it loads its separate customer.js chunk only when <storesynk-store> has customer-client-id="shp_…". With no such attribute nothing customer-related works - and <log-in> / <log-out> no-op silently. They also need a <storesynk-store> on the page (SSK-101) but not as an ancestor (they drive the store’s single module-level session). If login redirects but comes back logged-out, the OAuth callback URL isn’t allow-listed - set customer-redirect-uri to an allow-listed page.
The show-customer-* greeting is always blank
Section titled “The show-customer-* greeting is always blank”show-customer-email / -first-name / -last-name / -name read storeContext.customer, so they need a <storesynk-store> ancestor (SSK-101) with the customer module enabled (above). When anonymous they set hidden + [ss-empty] by design - gate the surrounding member chrome off storesynk-store[ss-logged-in] rather than expecting text. If a member is logged in but the field is still blank mid-load, that’s the customerStatus: 'pending' hold while the session restores - it settles on its own.
<account-link> goes nowhere / points at the wrong place
Section titled “<account-link> goes nowhere / points at the wrong place”The destination comes off the store’s customer-account-pages: default "shopify" derives the hosted customer portal lazily from the shop’s OAuth discovery (so the first click may briefly no-op until it resolves). For your own pages set customer-account-pages="custom" and customer-account-url="…" on <storesynk-store> - custom mode with no URL can’t link anywhere. Put a real <a> inside <account-link> (it stamps the href); with no <a> the host itself becomes the link. path="orders" appends a sub-page.
The customer-pricing widget never shows anything, on any product
Section titled “The customer-pricing widget never shows anything, on any product”Same self-hiding shape as the bundle/volume widgets - <storesynk-customer-pricing> sets [ss-empty] in every “nothing to say” case:
- Customer module not enabled. No
customer-client-idon the store → no login state → the widget can’t reach member mode (and, unconfigured, stays empty). See the first entry above. - No namespace configured. It reads the app’s
$app:customer_pricingmetaobjects, so it needs the concrete namespace (app--<numeric-app-id>) viaapp-namespaceon<storesynk-store>ornamespaceon the widget - neither warns SSK-211 and it stays empty with no network request (that absence is the diagnostic). - Not inside the page’s
<storesynk-product>. It consumesproductContextfor the product id (SSK-102). - No first-child template. The widget captures its first element child as the per-rule template (SSK-107); with none there’s nothing to clone.
- No live rule, or a logged-in non-member - by design. Only an
activerule inside its date window that targets the product qualifies; a logged-in shopper whose tags don’t match the rule gets nothing (a prompt would be wrong, a preview would lie).
The regular price disappears on products without a pricing rule
Section titled “The regular price disappears on products without a pricing rule”A regular price displayer (show-price / show-compare-price / show-unit-price) was authored inside <storesynk-customer-pricing> (SSK-111). The widget clones its first-child template only when a live rule targets the product - on products with no matching rule there is no clone, so a regular price riding inside the template vanishes with it and the shopper sees no price at all. The page looks fine on products that have a rule, which is why spot-checking misses it. Fix: keep the regular price displayers siblings of the widget (only show-pricing-* leaves belong in the template) and swap the halves in CSS on the reflected member state - .price-row:has(storesynk-customer-pricing[ss-member]) .price-anon { display: none } (build-patterns §2.12, the inline recipe).
The member preview price doesn’t match what checkout charges
Section titled “The member preview price doesn’t match what checkout charges”That’s by design and must stay visible. <show-pricing-price> is advisory - computed client-side from the current variant’s price × (1 − percentage), re-priced on every variant change. The cart’s discountAllocations (once the member’s buyer token rides the cart) are authoritative, and the app’s Discount Function applies the real cut at checkout. Always keep <show-pricing-note> (“Applied at checkout”) beside the price - dropping it misrepresents the charge. The prompt/member copy leaves (show-pricing-*) each need a <storesynk-customer-pricing> ancestor (SSK-105), and self-hide ([ss-empty]) in the mode they don’t belong to.
Imported from the Storesynk skill v0.1.0 (references/known-issues.md). To change this page, change it there.