{"title":"Product rich data snippet","slug":"product-rich-data-snippet","url":"https://support.storeconnect.com/articles/product-rich-data-snippet","url_markdown":"https://support.storeconnect.com/articles/product-rich-data-snippet.md","subtitle":null,"summary":"The product JSON-LD snippet was renamed to rich_data_json.liquid in v21. A backward-compatible shim keeps the old path working. The snippet now outputs multiple product images, price range for variant products, Open Graph price meta tags, and hasVariant/isVariantOf/variesBy fields for Google rich results.","type":"Developer_Documentation","video_url":"","keywords":"liquid, json-ld, rich data, structured data, product, snippet, theme, open graph","last_modified":"2026-08-23T23:35:49+0000","body_markdown":"StoreConnect generates product JSON-LD structured data using a built-in snippet. In v21, this snippet was renamed and extended with new fields for richer Google search results.\n\n## Template rename\n\nThe product JSON-LD snippet was renamed from:\n\n```\nsnippets/products/product/json-ld.liquid\n```\n\nto:\n\n```\nsnippets/products/product/rich_data_json.liquid\n```\n\nA backward-compatible shim means the old path (`snippets/products/product/json-ld.liquid`) continues to work without changes. You do not need to update any existing theme templates that reference the old snippet name.\n\n:::note\nThe shim provides backward compatibility for the old snippet name. Check with StoreConnect support for the timeline if you want to migrate to the new name.\n:::\n\n## What's new in the rich data snippet\n\n### Multiple product images\n\nMultiple product images are now included in the JSON-LD output, in line with Google's recommendations. Previously, only the primary image was included.\n\n```json\n\n\"image\": [\n  \"https://example.com/image1.jpg\",\n  \"https://example.com/image2.jpg\"\n]\n```\n\n### Price range for variant products\n\nVariant products now output a price range using `lowPrice` and `highPrice` (schema.org `Offer` fields) when variants have different prices. When all variants share the same price, a single `price` field is used instead.\n\n```json\n\n{\n  \"@type\": \"Offer\",\n  \"lowPrice\": \"29.99\",\n  \"highPrice\": \"59.99\",\n  \"priceCurrency\": \"USD\"\n}\n```\n\n### Variant relationship fields\n\nThe following fields are now included for variant products to help Google correctly understand product relationships:\n\n| Field | Description |\n|-------|-------------|\n| `isVariantOf` | References the parent `ProductGroup` object |\n| `variesBy` | Array of `DefinedTerm` objects representing the attributes variants differ by (for example, `[{\"@type\": \"DefinedTerm\", \"name\": \"https://schema.org/color\"}]`) — note the lowercase schema.org URL format |\n| `productGroupID` | The Salesforce SFID of the parent product group. This is a stable internal identifier, not the product code |\n\n### Availability and price\n\nThe snippet always outputs a price value (the sale price if set, otherwise the list price). Availability is always `InStock` unless **Track Inventory** is enabled on the product and the item is out of stock.\n\n### Additional fields\n\nThe following fields are included in the JSON-LD output when the relevant data is present on the product:\n\n| Field | Condition | Notes |\n|-------|-----------|-------|\n| `brand` | Set on the product | Output as a `Brand` object with `name` |\n| `gtin` | UPC is present | Prefixed with `\"0\"` to produce a 13-digit GTIN-13 (for example, `\"0123456789012\"`) |\n| `itemCondition` | Always | `https://schema.org/NewCondition` or `https://schema.org/UsedCondition` |\n\n### Schema types used\n\nThe snippet uses the following schema.org types:\n\n| Type | Used for |\n|------|----------|\n| `ProductGroup` | The parent product (with variants) |\n| `Product` | An individual product or variant |\n| `Offer` | Price for a single product, variant, or price range across a product group |\n| `Brand` | Brand associated with the product |\n| `DefinedTerm` | Individual variant attributes within `variesBy` |\n\n## Open Graph price meta tags\n\nIn addition to the JSON-LD block, StoreConnect adds Open Graph price meta tags to the `\u003chead\u003e` of each product page via `snippets/meta_data.liquid`:\n\n```html\n\n\u003cmeta property=\"og:price:amount\" content=\"29.99\" /\u003e\n\u003cmeta property=\"og:price:currency\" content=\"USD\" /\u003e\n```\n\nThese tags are used by social platforms and some shopping integrations to read the product price directly from the page head, independently of the JSON-LD block. They reflect the same price used in the JSON-LD output (sale price if set, otherwise list price).\n\n## Customizing the snippet\n\nIf you want to override the built-in JSON-LD output, create a snippet template in your theme with the key:\n\n```\nsnippets/products/product/rich_data_json\n```\n\nYour custom snippet replaces the built-in output entirely. See [Theme templates](theme-templates) for how to create snippet templates."}