Product schema
Product schema (schema.org/Product) is structured data that provides search engines with explicit, machine-readable information about the products on your e-commerce pages. When implemented correctly, it can enable product-specific rich results — including price, availability, and ratings — directly in Google search results, improving click-through rates and shopping visibility.
Learning objectives
After completing this module, you will be able to:
- Understand what Product schema communicates and what it can unlock.
- Implement required and recommended product markup properties.
- Avoid misleading or invalid product markup that triggers guideline violations.
Core schema types
Product schema combines several interconnected types:
| Type | Purpose |
|---|---|
Product | The product itself: name, image, description, brand, identifiers |
Offer | Purchase details: price, currency, availability, condition, URL |
AggregateRating | Average rating and review count (only for visibly displayed reviews) |
Review | Individual review content (only for reviews shown on the page) |
Brand / Organization | Brand identity for the product |
Required and recommended properties
For product snippet eligibility
Google requires at minimum:
name— the product name.image— a high-quality product image URL.- One of:
review,aggregateRating, oroffers.
For richer eligibility (price, availability in SERPs):
Offerwithprice,priceCurrency,availability, andurl.
Full implementation
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Nike Air Max 90",
"image": "https://example.com/images/nike-air-max-90.jpg",
"description": "Iconic running silhouette with Max Air cushioning.",
"brand": {
"@type": "Brand",
"name": "Nike"
},
"sku": "NIKAM90-BLK-10",
"gtin13": "012345678901",
"offers": {
"@type": "Offer",
"url": "https://example.com/shoes/nike-air-max-90",
"priceCurrency": "USD",
"price": "120.00",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "312"
}
}
Merchant listings vs product snippets
Product snippets appear in organic search results — price, rating, and availability shown beneath the listing title. Triggered by Product schema on product pages.
Merchant listings appear in Google Shopping surfaces, including the Shopping tab and sometimes within image search. Enabled through Merchant Center integration and feed quality.
Product schema on your website and product feed data in Merchant Center are complementary signals — they should be consistent.
Visible content requirement
Google's core rule: only mark up content that is visible to users on the page. This applies to:
- Ratings: If you show an average rating of 4.7 on the product page, you can mark it up. If you do not display ratings on the page, do not include
aggregateRatingin schema. - Reviews: Only mark up reviews that users can actually read on the page.
- Price: Must match the price displayed on the page.
- Availability: Must match the visible availability state.
Mismatches between schema and visible content are a common reason for manual action or loss of rich result eligibility.
Keeping schema synchronized with inventory
For sites with dynamic inventory, automated schema generation is essential:
- Price changes must be reflected in schema within a reasonable time.
- Availability status (
InStock/OutOfStock) must update when inventory changes. - Template-based schema generation from the product database ensures consistency.
Manual schema updates for large catalogs are impractical and error-prone.
Checklist
- Product schema matches visible page content for all properties.
- Price and availability update automatically with inventory.
- Ratings and reviews are real, current, and visible on the page.
- Product images are crawlable (not blocked by robots.txt).
- Required fields validate in Rich Results Test without errors.
- Product feed (Merchant Center) and on-page schema are not in conflict.
Measurement
| Metric | What it tracks |
|---|---|
| Rich Results Test pass rate | Schema validity |
| GSC product enhancement reports | Template-level errors and warnings |
| Product snippet impressions and CTR | Search visibility impact of rich results |
| Merchant listing visibility | Shopping surface presence |
| Template error rate | Systematic schema quality |
Common mistakes
Marking up fake or aggregated ratings. Using a rating aggregated from internal sources not shown on the page, or inflating review counts, violates Google's guidelines and results in rich result removal.
Letting price or availability become stale. A product marked "InStock" at "$89" in schema that actually costs "$119" and is out of stock creates a frustrating user experience and policy violations.
Missing required offer fields. price, priceCurrency, and availability are required for product rich results. Missing any of these means the rich result will not appear.
Adding Product schema to non-product pages incorrectly. Adding product schema to a blog post about a product category, a brand overview page, or a comparison page is a misuse — schema should match the actual page type and content.
Ignoring validation after template changes. A CMS or platform update can silently break schema templates. Schedule regular Rich Results Test and GSC enhancement report reviews after any template deployment.