Product Schema Guide for Magento 2
Comprehensive guide to configuring Product structured data with the Rich Snippets Suite extension. Product schema is the most important schema for e-commerce, enabling rich results in Google Search with prices, availability, ratings, and more.
What Product Schema Does
Product schema tells Google about your products:
- Name and description - What the product is
- Images - Visual representation
- Price and currency - Cost information
- Availability - In stock or out of stock
- Condition - New, refurbished, or used
- Brand - Manufacturer or brand name
- Ratings and reviews - Customer feedback
- GTIN/SKU/MPN - Product identifiers
This information can appear as rich results in Google Search, showing star ratings, prices, and stock status directly in search listings.
Basic Setup
Location: Magmodules → Rich Snippets Suite → Schema: Products
- Set Enable to Yes
- Configure Show Stock to display availability
- Set up Attributes mapping (Description, Brand)
- Click Save Config
Offer Schema (Price & Availability)
The Offer schema contains purchase-related information.
Stock Status
| Setting | Description |
|---|---|
| Show Stock | Enable to include availability in the offer. Google shows "In Stock" or "Out of Stock" in results. |
Product Condition
| Option | When to Use |
|---|---|
| Fixed value | All products have the same condition (most common for new items) |
| Use attribute | Different products have different conditions |
Condition Values:
NewCondition- Brand new productsRefurbishedCondition- Factory refurbishedUsedCondition- Second-hand items
Price Valid Until
Google requires priceValidUntil for Offer schema. Options:
| Mode | Description |
|---|---|
| Use special price date | Uses Magento's special price end date if set |
| Custom fallback | Always use a date X days in the future |
Tip: Set a custom fallback (e.g., 30-90 days) to ensure all products have valid dates.
Ratings & Reviews
Display star ratings and review counts in search results.
Aggregate Rating
| Setting | Description |
|---|---|
| Display Rating | Include overall rating in Product schema |
| Rating Source | Where ratings come from (Native Magento or third-party platform) |
| Rating Metric | How to display the rating scale |
Individual Reviews
| Setting | Description |
|---|---|
| Add Separate Review(s) | Include individual Review schemas |
| Number of reviews | How many reviews to include (default: 10) |
Best Practice: Enable both aggregate rating and individual reviews for maximum visibility.
Attribute Mapping
Map your Magento attributes to schema.org properties.
Required Mappings
| Schema Property | Recommended Attribute |
|---|---|
| Description | Short Description |
| Brand | Manufacturer |
Extra Attributes
Add custom mappings for additional product data:
- GTIN (barcode)
- MPN (manufacturer part number)
- SKU
- Color, Size, Material
- Weight, Dimensions
Example mappings:
| Schema Property | Magento Attribute |
|---|---|
| gtin13 | ean |
| mpn | manufacturer_part_number |
| color | color |
| material | material |
Configurable Products
Configurable products need special handling to show variant information.
The Problem
A configurable product (e.g., "T-Shirt") has multiple simple products (e.g., "T-Shirt - Red - Small", "T-Shirt - Blue - Large"). Each variant may have different:
- Price
- Stock status
- SKU/GTIN
- Images
The Solution: ProductGroup with Variants
Enable Split Configurable Products Snippets with Use Variants mode.
This generates:
{
"@type": "ProductGroup",
"name": "T-Shirt",
"hasVariant": [
{
"@type": "Product",
"name": "T-Shirt - Red - Small",
"offers": { "price": "29.99" }
},
{
"@type": "Product",
"name": "T-Shirt - Blue - Large",
"offers": { "price": "29.99" }
}
]
}
Configuration Options
| Setting | Description |
|---|---|
| Use reviews from parent product | Apply parent's reviews to all variants (recommended) |
| Use Parent Data for Simples | Which attributes variants should inherit from parent |
Inherit from Parent:
- Name (if variants don't have unique names)
- Description (usually same for all variants)
- Brand (always same)
- Image (only if variants don't have unique images)
Don't Inherit:
- Price (variants may have different prices)
- SKU/GTIN (always unique per variant)
Bundle Products
Bundle products contain multiple items sold together.
Enable Split Bundle
Set Split Bundle Products Snippets to Yes to generate schemas for each bundle item.
| Setting | Description |
|---|---|
| Use reviews from parent product | Apply bundle reviews to items |
| Use Parent Data for Simples | Attributes to inherit from bundle |
Grouped Products
Grouped products display multiple related items.
Enable Split Grouped
Set Split Grouped Products Snippets to Yes for individual item schemas.
| Setting | Description |
|---|---|
| Use reviews from parent product | Apply grouped product reviews to items |
| Use Parent Data for Simples | Attributes to inherit from grouped parent |
Video Object
Include product videos in structured data.
| Setting | Description |
|---|---|
| Video Object Enable | Include VideoObject schema for products with videos |
| Video Object Source | For configurables: use parent or child videos |
Requirements for VideoObject:
- Video must have a URL (YouTube, Vimeo, or direct link)
- Video should be associated with the product in Magento
Advanced Settings
Hide Offer When Price is Zero
Enable to exclude the Offer schema when product price is €0.00. Useful for:
- "Price on request" products
- Free downloadable products
- Products with required options
Custom Price Attribute
If you use a custom attribute for pricing (not Magento's standard price):
- Enable Use non-default attribute for price
- Select your custom price attribute
Example Output
Complete Product schema output:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Premium Wireless Headphones",
"image": "https://store.com/media/headphones.jpg",
"description": "High-quality wireless headphones with noise cancellation",
"brand": {
"@type": "Brand",
"name": "AudioTech"
},
"sku": "AT-WH-001",
"gtin13": "1234567890123",
"offers": {
"@type": "Offer",
"url": "https://store.com/headphones",
"price": "199.99",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"priceValidUntil": "2025-12-31"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "127"
},
"review": [
{
"@type": "Review",
"author": { "@type": "Person", "name": "John D." },
"reviewRating": { "@type": "Rating", "ratingValue": "5" },
"reviewBody": "Excellent sound quality!"
}
]
}
Validation Checklist
After configuration, validate your Product schema:
- Use Rich Results Test
- Check for errors (red) - must fix
- Check for warnings (yellow) - recommended to fix
- Verify all expected fields appear
Common issues:
- Missing brand → Map brand attribute
- Missing priceValidUntil → Configure price validity
- Image too small → Use larger product images
Need More Help?
Documentation:
- All Help Articles - Complete documentation overview
Support:
- Contact Support - Get help from our team