Product schema
Product gets you stars, price, and availability badges in the SERP — and, if you have a Merchant Center account linked, into the free shopping listings tab.
Required fields
- name — product name as displayed on the page.
- image — at least one URL. Multiple aspect ratios is better; Google picks the one that fits the slot.
- offers — exactly one
Offer(orAggregateOfferfor variants) withprice,priceCurrency(ISO 4217), andavailability(use the schema.org URL form likehttps://schema.org/InStock).
Recommended
- aggregateRating —
AggregateRatingwithratingValueandreviewCount. The stars. - review — at least one
Reviewwithauthor,reviewRating, andreviewBody. Without this, the "review snippets" rich result is not shown. - brand —
BrandorOrganizationwithname. Used by Google's product knowledge graph. - sku and gtin — required for shopping listings to merge identical products from different sellers.
- description — falls back to meta description if absent, but explicit is better.
Rules Google enforces
- The product page must show the same price and availability as the schema. Mismatches trigger the "Inaccurate price" manual action in Search Console.
- Stars from
aggregateRatingmust reflect first-party reviews on this page, not aggregated from third-party sources. - For variant products (size, color), use a single
ProductwithhasVariantplus separateOfferobjects — not multiple top-levelProductblocks.
Common mistakes
availabilityas plainInStockstring. Google accepts both, but the URL formhttps://schema.org/InStockis strictly correct.- Hard-coded sale price in schema while live price is regular. A common source of warnings. If you have time-limited offers, generate the schema from the same data the page renders.
- Missing
priceValidUntilfor sale prices. Without it, Google may stop showing the price after 6 months.
CMS notes
- Shopify: native Product schema is good but stops at basics. Use a Liquid snippet to add GTIN, brand, and shipping details if needed.
- WooCommerce: built-in schema is barebones. Rank Math WooCommerce module fills gaps.
- Headless: generate from product API data; mirror it field-by-field with what the page displays.
Generate it below
Last verified: 2026-05-15. Found something inaccurate? Email hello@schemapreview.dev.