Default Snippets Reference
This document describes all pre-installed rich snippets included with the SEO Rich Snippets module.
Snippet Installation Tiers
Snippets are installed in tiers based on priority and common usage:
- Tier 1: Primary Ecommerce Snippets (Product, Organization, WebSite)
- Tier 2: High-Value Enhancements (FAQPage, ItemList, ProductGroup)
- Tier 3: Business Information (Store, LocalBusiness, AboutPage, ContactPage)
- Tier 4: Media and Content (VideoObject, Article, BlogPosting)
- Tier 5: Additional Schemas (Event, Recipe, HowTo)
Tier 1: Primary Ecommerce Snippets
Product
Identifier: product
Page Type: Product pages
Status: Active by default
The main product schema with offers, reviews, and ratings.
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "{{product.name}}",
"description": "{{product.shortDescription}}",
"sku": "{{product.sku}}",
"image": "{{product.image}}",
"@djson if product.manufacturer": {
"brand": {
"@type": "Brand",
"name": "{{product.manufacturer}}"
}
},
"offers": "{{snippet.offer}}",
"@djson if product.reviewCount": {
"aggregateRating": "{{snippet.aggregate-rating}}",
"review": {
"@djson for productReviews as review": "{{snippet.review}}"
}
}
}
Features: - Product information (name, SKU, image, description) - Brand information (conditional) - Nested offer with pricing and availability - Aggregate rating (conditional on reviews existing) - Individual reviews with loop
Dependencies:
- {{snippet.offer}} - Offer snippet
- {{snippet.aggregate-rating}} - AggregateRating snippet
- {{snippet.review}} - Review snippet
Offer
Identifier: offer
Status: Active (reusable component)
Product offer with pricing, availability, shipping, and return policy.
{
"@type": "Offer",
"url": "{{product.productUrl}}",
"priceCurrency": "{{store.currencyCode}}",
"price": "{{product.finalPrice}}",
"priceValidUntil": "{{enum.priceValidUntil}}",
"availability": "{{enum.availability.InStock}}",
"itemCondition": "{{enum.itemCondition.NewCondition}}",
"seller": "{{snippet.organization}}",
"shippingDetails": "{{snippet.shipping-details}}",
"hasMerchantReturnPolicy": "{{snippet.merchant-return-policy}}"
}
Features: - Current price and currency - Price valid until date - Availability status - Item condition (new/used) - Seller organization - Shipping details - Return policy
Dependencies:
- {{snippet.organization}} - Organization snippet
- {{snippet.shipping-details}} - ShippingDetails snippet
- {{snippet.merchant-return-policy}} - ReturnPolicy snippet
Shipping Details
Identifier: shipping-details
Status: Active (reusable component)
{
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "0",
"currency": "{{store.currencyCode}}"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "US"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 0,
"maxValue": 1,
"unitCode": "DAY"
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 3,
"maxValue": 7,
"unitCode": "DAY"
}
}
}
Customization: Update handling/transit times and destination based on your shipping policy.
Merchant Return Policy
Identifier: merchant-return-policy
Status: Active (reusable component)
{
"@type": "MerchantReturnPolicy",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnWindow": {
"@type": "QuantitativeValue",
"value": 30,
"unitText": "Day"
},
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn"
}
Customization: Update return window and fees based on your policy.
Review
Identifier: review
Status: Active (reusable component)
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "{{review.rating}}",
"bestRating": "5"
},
"author": {
"@type": "Person",
"name": "{{review.nickname}}"
},
"reviewBody": "{{review.detail}}",
"datePublished": "{{review.createdAt}}"
}
Usage: Used inside Product snippet with @djson for productReviews as review loop.
Aggregate Rating
Identifier: aggregate-rating
Status: Active (reusable component)
{
"@type": "AggregateRating",
"ratingValue": "{{product.ratingValue}}",
"reviewCount": "{{product.reviewCount}}",
"bestRating": "5",
"worstRating": "0"
}
Note: ratingValue is automatically converted from Magento's 0-100 scale to Google's 1-5 scale.
Organization
Identifier: organization
Page Type: Homepage
Status: Active by default
Company information for Google Knowledge Graph.
{
"@context": "https://schema.org/",
"@type": "Organization",
"name": "{{config.general.store_information.name}}",
"url": "{{config.web.secure.base_url}}",
"logo": "{{config.web.secure.base_url}}media/logo/default/logo.svg",
"address": "{{snippet.organization-address}}",
"sameAs": "{{snippet.organization-social-links}}",
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer service",
"telephone": "{{config.general.store_information.phone}}",
"email": "{{config.trans_email.ident_general.email}}"
}
}
Required Configuration:
- Store name (Stores → Configuration → General → Store Information)
- Store phone and address
- Upload logo to pub/media/logo/default/logo.svg
Dependencies:
- {{snippet.organization-address}} - Organization address
- {{snippet.organization-social-links}} - Social media links
Organization Address
Identifier: organization-address
Status: Active (reusable component)
{
"@type": "PostalAddress",
"streetAddress": "{{config.general.store_information.street_line1}}",
"addressLocality": "{{config.general.store_information.city}}",
"postalCode": "{{config.general.store_information.postcode}}",
"addressCountry": "{{config.general.store_information.country_id}}"
}
Organization Social Links
Identifier: organization-social-links
Status: Disabled (requires customization)
[
"https://www.facebook.com/yourpage",
"https://www.instagram.com/yourpage",
"https://www.twitter.com/yourpage",
"https://www.linkedin.com/company/yourcompany",
"https://www.youtube.com/channel/yourchannel"
]
Customization: Update with your actual social media URLs, then enable the snippet.
WebSite
Identifier: website
Page Type: Homepage
Status: Active by default
Enables Google search box in search results.
{
"@context": "https://schema.org/",
"@type": "WebSite",
"url": "{{config.web.secure.base_url}}",
"potentialAction": {
"@type": "SearchAction",
"target": "{{config.web.secure.base_url}}catalogsearch/result/?q={q}",
"query-input": "required name=q"
}
}
WebPage
Identifier: webpage
Status: Disabled (enable as needed)
Generic webpage schema.
{
"@context": "https://schema.org/",
"@type": "WebPage",
"name": "{{page.title}}",
"description": "{{page.description}}",
"url": "{{page.url}}",
"publisher": "{{snippet.organization}}"
}
BreadcrumbList
Identifier: breadcrumb-list
Page Types: Product, Category pages
Status: Active by default
Breadcrumb navigation for better search results.
{
"@context": "https://schema.org/",
"@type": "BreadcrumbList",
"itemListElement": {
"@djson for breadcrumbs as breadcrumb": {
"@type": "ListItem",
"position": "{{breadcrumb.position}}",
"name": "{{breadcrumb.label}}",
"item": "{{breadcrumb.link}}"
}
}
}
Features: - Automatically loads breadcrumbs from page - Shows navigation trail (Home → Category → Product) - Improves search result display
Tier 2: High-Value Enhancements
FAQPage
Identifier: faq-page
Status: Disabled (demo content - customize before enabling)
{
"@context": "https://schema.org/",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is your return policy?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We accept returns within 30 days of purchase. Items must be unused and in original packaging."
}
},
{
"@type": "Question",
"name": "How long does shipping take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Standard shipping takes 5-7 business days. Express shipping is available for 2-3 day delivery."
}
}
]
}
Customization: 1. Update questions and answers for your business 2. Assign to FAQ CMS page 3. Enable snippet
ItemList
Identifier: item-list
Page Type: Category pages
Status: Disabled (requires custom implementation)
Product listing for category pages.
{
"@context": "https://schema.org/",
"@type": "ItemList",
"itemListElement": {
"@djson for products as product": {
"@type": "ListItem",
"position": "{{product.position}}",
"url": "{{product.productUrl}}",
"name": "{{product.name}}"
}
}
}
Note: Requires custom variable provider to supply products collection on category pages.
ProductGroup
Identifier: product-group
Page Type: Product pages (configurable products)
Status: Disabled (requires variant implementation)
For configurable products with variants.
{
"@context": "https://schema.org/",
"@type": "ProductGroup",
"name": "{{product.name}}",
"description": "{{product.description}}",
"url": "{{product.productUrl}}",
"brand": {
"@type": "Brand",
"name": "{{product.manufacturer}}"
},
"productGroupID": "{{product.sku}}",
"hasVariant": {
"@djson for productVariants as variant": {
"@type": "Product",
"name": "{{variant.name}}",
"sku": "{{variant.sku}}",
"image": "{{variant.image}}",
"offers": {
"@type": "Offer",
"price": "{{variant.finalPrice}}",
"priceCurrency": "{{store.currencyCode}}",
"availability": "https://schema.org/InStock"
}
}
}
}
Note: Requires custom implementation to provide productVariants collection.
Tier 3: Business Information
Store
Identifier: store
Status: Disabled (requires configuration)
Physical store location with opening hours.
{
"@context": "https://schema.org/",
"@type": "Store",
"name": "{{config.general.store_information.name}}",
"image": "{{config.web.secure.base_url}}media/store/storefront.jpg",
"telephone": "{{config.general.store_information.phone}}",
"address": "{{snippet.organization-address}}",
"geo": {
"@type": "GeoCoordinates",
"latitude": "40.7128",
"longitude": "-74.0060"
},
"url": "{{config.web.secure.base_url}}",
"openingHoursSpecification": {
"@djson for storeHours as hours": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": "{{hours.day}}",
"opens": "{{hours.open}}",
"closes": "{{hours.close}}"
}
}
}
Customization:
1. Update geo coordinates
2. Add storefront image
3. Implement storeHours variable provider
4. Enable snippet
LocalBusiness
Identifier: local-business
Page Type: Contact page
Status: Disabled (requires configuration)
For businesses with physical locations.
{
"@context": "https://schema.org/",
"@type": "LocalBusiness",
"name": "{{config.general.store_information.name}}",
"description": "{{store.description}}",
"telephone": "{{config.general.store_information.phone}}",
"email": "{{config.trans_email.ident_general.email}}",
"url": "{{config.web.secure.base_url}}",
"logo": "{{config.web.secure.base_url}}media/logo/default/logo.svg",
"image": "{{config.web.secure.base_url}}media/store/storefront.jpg",
"address": "{{snippet.organization-address}}",
"geo": {
"@type": "GeoCoordinates",
"latitude": "40.7128",
"longitude": "-74.0060"
},
"openingHours": "Mo-Fr 10:00-18:00",
"priceRange": "$$"
}
AboutPage
Identifier: about-page
Status: Disabled (assign to About Us page)
{
"@context": "https://schema.org/",
"@type": "AboutPage",
"name": "About Us",
"description": "Learn more about our company and mission",
"url": "{{config.web.secure.base_url}}about-us",
"mainEntity": "{{snippet.organization}}"
}
ContactPage
Identifier: contact-page
Page Type: Contact page
Status: Disabled (demo)
{
"@context": "https://schema.org/",
"@type": "ContactPage",
"name": "Contact Us",
"description": "Get in touch with our team",
"url": "{{config.web.secure.base_url}}contact",
"mainEntity": {
"@type": "Organization",
"name": "{{config.general.store_information.name}}",
"contactPoint": {
"@type": "ContactPoint",
"telephone": "{{config.general.store_information.phone}}",
"email": "{{config.trans_email.ident_general.email}}",
"contactType": "customer service"
}
}
}
Customization Examples
Example 1: Add Social Proof to Product
Edit the Product snippet to include trust badges:
{
"@type": "Product",
"name": "{{product.name}}",
"offers": "{{snippet.offer}}",
"@djson if product.reviewCount": {
"aggregateRating": "{{snippet.aggregate-rating}}"
},
"award": "Best Product 2024",
"isSimilarTo": "https://example.com/similar-product"
}
Example 2: Multi-Language Organization
Create separate Organization snippets per language:
English (Store View: en)
German (Store View: de)
Example 3: Extended Product Information
Add additional product properties:
{
"@type": "Product",
"name": "{{product.name}}",
"weight": {
"@type": "QuantitativeValue",
"value": "{{product.weight}}",
"unitCode": "KGM"
},
"material": "{{product.material}}",
"color": "{{product.color}}"
}
Testing Snippets
Google Rich Results Test
- Visit https://search.google.com/test/rich-results
- Enter your page URL
- Review detected schemas
- Fix any errors
Expected Results
Product Page: - Product snippet with offer - Aggregate rating (if reviews exist) - BreadcrumbList - Organization (on homepage only)
Category Page: - BreadcrumbList - ItemList (if enabled)
Homepage: - Organization - WebSite
Troubleshooting
Snippet Not Appearing
- Check snippet is Active
- Verify Page Type matches current page
- Check Store View assignment
- Flush all caches
- View page source for
application/ld+json
Invalid Schema
- Test with Google Rich Results Tool
- Validate JSON with JSONLint
- Check for unresolved variables (
{{...}}) - Enable pretty debug mode
Missing Data
- Check required Magento configuration (store info, email)
- Verify product has all required attributes
- Check variable names match exactly
- Review debug logs
Best Practices
- Start Simple - Enable Product, Organization, WebSite first
- Test Thoroughly - Always validate with Google Rich Results Test
- Keep Updated - Review snippets when Magento configuration changes
- Use Conditionals - Hide optional sections when data doesn't exist
- Nest Wisely - Reuse snippets via
{{snippet.identifier}}to reduce duplication - Monitor Performance - Disable unused snippets
- Document Changes - Note customizations for future reference
Next Steps
- Learn DJson Syntax to customize snippets
- Review Variables Reference for available data
- Read Advanced Topics to create custom snippets