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.
Required and recommended properties
Google has two sets of rules:- Merchant listings (free product listings) require
name,imageand anoffersobject withprice(greater than zero) andpriceCurrency;availabilityis recommended. - Product snippets require
nameplus at least one ofoffers,revieworaggregateRating.
nameimageofferswithprice,priceCurrencyandavailability
skuandgtin— needed for merchant listingsbranddescriptionaggregateRatingandreviewwhere reviews genuinely existshippingDetailsandhasMerchantReturnPolicy— 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
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 thewrite_themes scope; on the standard Shopify connection the agent tells you what to add to your theme instead.

