Declare category explicitly
Set the new category property on every Product and ProductGroup, aligned with the google_product_category in your merchant feed. Feed and page must agree — conflicting signals get both discounted.
Google added an explicit category property, expanded ProductGroup for multi-variant catalogs, and started penalizing markup that does not match the page. Most Shopify and headless stores are currently non-compliant on all three. Here's the migration.
Product markup stopped being a rich-snippet nicety the moment shopping answers became generative. Price, availability, variant, and category data are now the raw inputs an AI surface uses to decide whether your product can be recommended at all.
Three 2026 changes matter: the explicit category property mapping to Google's merchant taxonomy, expanded ProductGroup support for multi-variant items, and formal penalties for content-schema mismatches. The first two are opportunities. The third is a liability sitting in most theme templates right now.
Set the new category property on every Product and ProductGroup, aligned with the google_product_category in your merchant feed. Feed and page must agree — conflicting signals get both discounted.
Collapse variant URLs into a ProductGroup with variesBy and hasVariant. Each variant keeps its own sku, gtin, price, and availability; the group keeps the name, brand, description, and reviews.
Price, currency, availability, and shipping details in markup must match what a user sees. Stale offer data is the most common trigger for a misleading-markup flag on ecommerce templates.
AggregateRating must reflect reviews rendered on the page. Feed-only, off-page, or aggregated third-party ratings shipped as your own are a manual-action risk.
Reference your Organization entity by @id from every product rather than repeating a brand string. That is how product-level trust rolls up into brand-level authority.
Run schema validation in CI so malformed or misleading markup never ships. Rich Results Test after deploy is a lagging indicator.
{
"@context": "https://schema.org",
"@type": "ProductGroup",
"@id": "https://example.com/products/trail-jacket#group",
"name": "Trail Jacket",
"category": "Apparel & Accessories > Clothing > Outerwear",
"brand": { "@id": "https://example.com/#organization" },
"productGroupID": "TRAIL-JKT",
"variesBy": ["https://schema.org/color", "https://schema.org/size"],
"hasVariant": [
{
"@type": "Product",
"@id": "https://example.com/products/trail-jacket?v=blk-m#product",
"sku": "TRAIL-JKT-BLK-M",
"color": "Black",
"size": "M",
"offers": {
"@type": "Offer",
"price": "189.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}
]
}The full entity model behind this — @id, sameAs, knowsAbout, about — is covered in schema and entity optimization. For store-wide fixes, see the Shopify SEO audit.
We can promise this because our methodology already works. Hundreds of pages now sit in position #1 across our clients' catalogs. The risk shouldn't be on you — it's on us.
Google added an explicit category field to Product structured data. It maps each listing to Google's internal merchant product taxonomy instead of leaving Google to infer a category from your breadcrumbs, collection names, or title text. Declaring it correctly places your product in the right comparison set across Shopping surfaces, AI Overviews, and agentic shopping flows.
Use ProductGroup whenever a single item ships in multiple purchasable variations — size, colour, material, capacity. The group carries the shared attributes and lists variesBy plus hasVariant; each variant carries its own sku, gtin, price, and availability. Shipping a flat Product per variant splits your review, price, and availability signals across URLs that should be one entity.
Product markup on a page with nothing purchasable, prices or availability that do not match the visible page, Review or AggregateRating markup for reviews users cannot see, FAQPage markup where the Q&As are not on the page, and shipping or returns data that contradicts your policy pages. Google now treats these as misleading rather than ignoring them, which risks a structured data manual action.
Start from your existing merchant feed's google_product_category values where they exist, reconcile them against your on-site collection structure, then declare the resulting value in the Product category property so feed and page agree. Where they disagree, the page markup and the feed compete — and Google trusts neither.
Heavily. Agentic and generative shopping surfaces need structured availability, price, variant, and review data to assemble an answer at all. A product with clean ProductGroup markup, correct category, and verifiable offers is eligible for those answers. A product whose facts are only in rendered HTML frequently is not.
We'll flag every misleading tag, map your catalog to the merchant taxonomy, and hand you the ProductGroup templates.