Technical Definition & Architecture
Shopify stores frequently struggle with variant indexing. When an item comes in multiple sizes and colorways, naive theme templates often output conflicting Product schemas on the same URL, triggering 'Duplicate schema' warnings in Google Search Console.
The modern solution defined by Google and schema.org is ProductGroup. The parent object represents the overarching product concept with a productGroupID, while individual variant child items are declared under the hasVariant array.
Smart Schema structures complex Shopify variant matrices into clean ProductGroup hierarchies, allowing search engines to index individual SKUs and prices accurately without tripping duplication filters.
Syntax Example for Shopify JSON-LD
{
"@context": "https://schema.org",
"@type": "ProductGroup",
"name": "Classic Merino Crewneck",
"productGroupID": "CREW-001",
"variesBy": ["https://schema.org/size", "https://schema.org/color"],
"hasVariant": [
{
"@type": "Product",
"sku": "CREW-001-S-BLK",
"offers": { "@type": "Offer", "price": "120.00" }
}
]
}
Stop editing raw liquid theme templates. Smart Schema injects verified, error-free structured data server-side in 60 seconds.
Start 14-Day Free TrialFrequently Asked Questions
Use ProductGroup whenever a product page contains selectable options (size, color, material) where each combination possesses its own SKU, price, or barcode.