Can variants (size, color) be addressed?
Why it matters An agent can fulfil “size M in navy” only if the variant is defined with its own URL and price.
- Category
- Product data
- Weight
- 2 of 100 points
- Critical blocker
- No. If it fails, it only costs its own weight.
- Applies to
- Online stores
- Effort
- 1-2 days · developer
- Score model
- v2.4
How we measure it
Variants described as ProductGroup + hasVariant in structured data pass; if there are at least two colour variants, each colour needs its own distinct image, otherwise it’s a partial pass (size-only variants aren’t checked for images). If the page has a size/colour selector but no such data: options with their own URLs are a partial pass, options without fail. Products without a selector are not applicable.
What the result page says
These are the sentences in the test result; “…” is replaced by what we found on your site.
- PassedVariants are defined with ProductGroup + hasVariant or separate offers.
- PartialVariants open at their own URLs, but structured data has no ProductGroup + hasVariant.
- PartialColour variants don’t each declare their own image, so an agent asked for “the black one” can’t show the right photo.
- FailedThere’s a size/color picker, but variants don’t open at their own URLs; an agent can’t pick the right variant and link to it.
How to fix it
Target: Every variant opens at its own URL; structured data uses ProductGroup + hasVariant and variesBy.
Example code
{
"@type": "ProductGroup",
"name": "Sample product",
"productGroupID": "GROUP-001",
"variesBy": ["https://schema.org/size", "https://schema.org/color"],
"hasVariant": [
{ "@type": "Product", "sku": "GROUP-001-M", "size": "M",
"offers": { "@type": "Offer", "price": "49.90", "priceCurrency": "USD", "url": "https://example.com/products/sample?size=M" } }
]
}
Example values (example.com, product name, price) are placeholders; replace them with your own.
How to verify it yourself
Open a variant URL (e.g. ?variant=… or ?size=M) in a new tab: the right option and price should load.
Fix it with an AI coding agent
Paste this into Claude Code, Cursor or another coding agent working on your store’s code. Review the change before you deploy it.
You are working on my online store. Specoria’s agent readiness test checks the item below. Fix it so AI shopping agents can read the store and act on it.
## 1. Can variants (size, color) be addressed? (variants)
Target: Every variant opens at its own URL; structured data uses ProductGroup + hasVariant and variesBy.
Example fix (adapt it to this codebase and platform; example values are placeholders):
```
{
"@type": "ProductGroup",
"name": "Sample product",
"productGroupID": "GROUP-001",
"variesBy": ["https://schema.org/size", "https://schema.org/color"],
"hasVariant": [
{ "@type": "Product", "sku": "GROUP-001-M", "size": "M",
"offers": { "@type": "Offer", "price": "49.90", "priceCurrency": "USD", "url": "https://example.com/products/sample?size=M" } }
]
}
```
Reference: https://specoria.com/method/checks/variants/
## Rules
- First look through the codebase and tell me which files or templates you will change, before editing anything.
- Change only what these checks need, and keep the visible page and the structured data saying the same thing.
- Never invent prices, stock, shipping or return terms, reviews or product identifiers (GTIN): take them from the store’s real data or ask me.
- Don’t block or slow down real visitors and don’t add tracking.
- After deploying, run the free test again at https://specoria.com/ to verify the fix.
Specifications and guidance
The check is based on these open sources; links go to the publisher’s own pages.
Where it sits in the 196-criteria framework
The result of this check counts as evidence for these items of the readiness framework:
2.9Variants are modelled correctly