Practical Lens 67
Practical Lens 67: Product variants need their own identity
The image shows the black model. The price belongs to the red one. The stock status belongs to size 42. A mixed variant can create doubt before purchase and returns after it.
Board-level signal
A parent product can look correct while a selectable size, colour or configuration carries the wrong price, image or availability. If that mixed record reaches search or an AI commerce experience, the customer may compare the wrong offer, abandon the purchase or order an unintended item.
What this lens means
Lens 66 controls the current facts for a product across channels. Lens 67 goes one level deeper: every purchasable variant needs a stable identity and a self-consistent set of facts. The parent groups related variants; it must not replace the unique item record for each selectable version.
Parent product
The shared product family that groups legitimate variants, such as one shoe model offered in several sizes and colours.
Variant
One specific purchasable selection with its own item identifier and its own price, availability, URL state and image.
Key terms
- Item ID
- A stable identifier unique to one specific item or variant.
- Group ID
- A separate stable identifier shared only by variants of the same parent product.
- Variant option
- The characteristic that changes between variants, such as colour, size, material or configuration.
- Direct variant URL
- A stable page address or URL state that opens with the exact variant selected and shows its correct purchase facts.
Why this happens
Storefronts often display several variants on one page while feeds export one row per item. If parent and item identifiers are confused, or if the selected page state is not preserved in the URL, the image, price, availability and cart action can refer to different versions of the product.
What this usually indicates
- Several variants reuse one item ID.
- The parent SKU is submitted as if it were a purchasable item.
- A feed URL opens the page with a different variant selected.
- The image does not change with colour or configuration.
- Availability is recorded at parent level although variants differ.
- The cart receives a different item from the visible selection.
What to verify (evidence-only)
- Choose one variant family. Start with a high-value product whose variants differ in price or stock.
- Separate group and item IDs. Give every purchasable variant one stable item ID and use a different shared group ID.
- Open every variant URL. Confirm the intended option is selected without another click.
- Compare the full fact set. Check title, option, image, price, availability and structured or feed data for the same item ID.
- Test the cart outcome. Add the visible variant and verify that the cart retains the same item, options and price.
Variant identity register
Use one row for each purchasable variant. Enter yes only when the page and feed match the item and the cart preserves the selected variant.
group_id,item_id,variant,url,image,price,availability,page_match,feed_match,cart_match,owner
[parent],[unique item],[options],[direct URL],[image URL],[amount currency],[status],[yes/no],[yes/no],[yes/no],[role]Terminal check: find variant identity failures
Open Terminal in the folder containing variant-check.csv, paste the command and press Enter. The expected result is every duplicate item ID or failed page, feed or cart match.
python3 -c 'import csv,sys,collections; r=list(csv.DictReader(open(sys.argv[1],encoding="utf-8-sig"))); c=collections.Counter(x["item_id"] for x in r); bad=[x for x in r if c[x["item_id"]]>1 or any(x[k].strip().lower()!="yes" for k in ("page_match","feed_match","cart_match"))]; [print("{} | {} | {} | owner: {}".format(x["group_id"],x["item_id"],x["variant"],x["owner"])) for x in bad]; print("Variant failures: {}/{}".format(len(bad),len(r)))' variant-check.csvBusiness meaning: any listed row can present or sell a different variant from the one the customer intended.
PowerShell check: find variant identity failures
Open PowerShell in the folder containing the same CSV, paste the commands and press Enter. The expected result is the same list and count.
$rows = Import-Csv .\variant-check.csv
$duplicates = $rows | Group-Object item_id | Where-Object Count -gt 1 | Select-Object -ExpandProperty Name
$issues = $rows | Where-Object { $duplicates -contains $_.item_id -or $_.page_match -ne 'yes' -or $_.feed_match -ne 'yes' -or $_.cart_match -ne 'yes' }
$issues | Format-Table group_id,item_id,variant,owner -AutoSize
'Variant failures: {0}/{1}' -f $issues.Count,$rows.CountBusiness meaning: resolve the exact item-level mismatch before approving the family for another shopping surface.
Decision rule for CXOs
Do not approve variant distribution when the business can show only a correct parent product. Require a unique item ID, direct selectable URL, matching image, current price and availability, and a cart test for every high-value variant. Correct grouping supports understanding; it does not guarantee display or recommendation.
Evidence boundary
OpenAI’s current product feed specification says variants should use separate item rows, distinct item IDs, a shared group ID and item-specific price, availability, URL and images. Google’s product variant documentation likewise requires unique variant and group identifiers and a directly selectable URL state showing the correct image, price and availability. These requirements support accurate variant representation; they do not guarantee visibility, recommendation or conversion.
Frequently Asked Questions
What counts as a product variant?
A variant is a specific version of the same product that differs by a defined option such as size, colour, material or configuration. A related product or bundle is not automatically a variant.
Why does each variant need a separate identifier?
The identifier keeps the selected options attached to the correct image, price, availability, URL and offer. Reusing one item ID across different selections makes those facts easier to mix.
Does every variant need its own page?
Not necessarily. A single product page can represent several variants, but each variant should be directly selectable through a stable URL state that shows the correct facts and purchase option.
Does correct variant markup guarantee visibility?
No. Correct variant data can help systems understand and validate the offer, but it does not guarantee eligibility, display, recommendation, ranking or conversion.
Founded in 2025, VerisAI helps teams test whether product identity survives from page to feed to purchase.