JSON-LD Shopify Liquid patterns that stay in sync with the cart
· Visora
JSON-LD Shopify Liquid patterns that stay in sync with the cart
Shopify merchants fight duplicate JSON-LD from theme plus review apps plus feed connectors. GEO requires one authoritative Product node whose Offer reflects the variant in the URL or selected state.
Pattern 1 — Variant-aware Product
Output schema on product.liquid using selected_or_first_available_variant for sku, price, availability. When variant query param present, match that variant's Offer.
Pattern 2 — Markets currency
Use localization-aware price filters; set priceCurrency from cart.currency or market context—not hardcoded USD on EU URLs.
Pattern 3 — FAQ metafield block
Store FAQ pairs in metafields; loop into visible accordion and FAQPage @graph in same snippet to guarantee parity.
Pattern 4 — ItemList on collections
Emit ItemList with ListItem url and name; avoid marking every grid tile as full Product.
Testing
Use Rich Results Test and Visora /audit after theme updates. Compare incognito PDP price to Offer.price in view-source.
Anti-patterns
Static schema in theme settings never updated. Multiple Product @id values. AggregateRating from apps without visible reviews.
FAQ
Should schema live in theme or app? Theme or single owned snippet—you need version control.
Does Hydrogen differ? Yes—serialize JSON-LD in route loaders from Storefront API data.
Can bundles use Product schema? Use isRelatedTo links or dedicated Bundle types where appropriate; document in FAQ.
Ship Liquid changes behind /audit validation so HTML–JSON mismatches never reach production silently.
Put this into practice
Audit your PDP or category page with Visora, then fix schema and FAQ gaps that block AI citations.
Run a free GEO audit →https://geovisora.com/en/blog/json-ld-shopify-liquid-patterns