Skip to main content
Product structured data tells search engines and shopping agents what a page is selling, at what price, and whether it is available. Most Shopify themes generate some product markup. Its quality varies widely, and incomplete markup is frequently ignored entirely rather than partially honoured. Google has two sets of rules:
  • Merchant listings (free product listings) require name, image and an offers object with price (greater than zero) and priceCurrency; availability is recommended.
  • Product snippets require name plus at least one of offers, review or aggregateRating.
In practice, ship all of these:
  • name
  • image
  • offers with price, priceCurrency and availability
Strongly recommended:
  • sku and gtin — needed for merchant listings
  • brand
  • description
  • aggregateRating and review where reviews genuinely exist
  • shippingDetails and hasMerchantReturnPolicy — see merchant listing markup

Example

The failures that matter

Markup that contradicts the page. A schema price differing from the rendered price is a violation and can cost rich results across the site. This happens constantly on stores where markup and display are generated separately. Stale availability. InStock on a sold-out product misleads shopping surfaces and agents, and erodes feed trust. Missing offers. Product without a valid offer is not eligible for merchant listings, and without reviews or ratings it is not eligible for product snippets either. Duplicate markup. A theme and an app both emitting Product schema produces conflicting blocks on one page. Check the rendered source, not the template. Variant confusion. Marking up one variant’s price on a page presenting several. See product variant markup. Review markup without visible reviews. A violation, and one that attracts manual action.

Validate

  • Rich Results Test — per URL
  • Schema.org validator — vocabulary correctness
  • Search Console → Shopping and Enhancements reports — sitewide errors, which is where scale problems appear
Always validate the rendered page.

What Ryze does

The Technical Audit checks JSON-LD schema on your top pages. Fix with agent adds or repairs the markup through a theme snippet. Theme edits require a Shopify Custom App connection with the write_themes scope; on the standard Shopify connection the agent tells you what to add to your theme instead.

Primary reference