Product variants: stop recommending the wrong size or colour
Product variants: how to stop a shopping assistant recommending the wrong size or colour
A shopper asks for size 9 trainers in white and gets a link to the black size 7. The product was right; the variant was wrong. This guide covers parent products and variants, variant attributes, the GTIN edge cases that trip up matching, and how to link to the exact variant they asked for.
A shopper asks for "white running trainers, size 9, under £90". The assistant finds a good model and links to it. The shopper clicks through and lands on the black version in size 7, or on a page where size 9 is sold out. The recommendation was nearly right, which in shopping terms means wrong. Most of these failures come from one thing: treating a product and its variants as the same record.
Parent products and variants
A parent product is the model: one name, one description, one set of shared specifications. A variant is a specific version a shopper can actually buy: a size, a colour, a capacity or a configuration. The parent is never in stock and has no single price. Only variants do.
Product
Parent (shared)
Variant attributes (differ)
Running trainers
Model name, upper material, drop, weight class
Size, width, colour
Wireless headphones
Model, driver size, codecs, battery claim
Colour, sometimes regional charger
Fridge freezer
Model family, energy class, features
Finish, door hinge side, width
Phone
Model, screen, camera
Storage, colour, network lock
Keep the two levels separate in your data. Shared specifications live on the parent. Price, availability, identifiers, images and the buy link live on each variant. If your data merges them, an assistant has no way to tell the shopper which version a price belongs to.
Make variant attributes explicit
Retailers often hide variant information in the title, such as "Trail Runner 4 - Mens - White/Grey - UK 9". That works for a human reading a page but not for filtering. Each variant attribute should be its own field with a consistent name and value:
Size, with its system"UK 9" and "US 10" are not the same thing. Store the size system with the value.
Colour, as named and as normalisedKeep the retailer's name ("Midnight") and a plain colour group ("black") for filtering.
Capacity or dimensions, with units256 GB, 1.7 litres, 60 cm wide. Numbers without units are guesses.
ConfigurationHinge side, plug type, network lock, left or right-handed. These decide whether the item works for the shopper.
Variant-level identifiers and stockEach variant should carry its own GTIN where one exists, its own availability and its own price.
Carry the shopper's constraints all the way through
Size and colour are hard constraints. Many assistants extract them correctly and then search at parent level, dropping them on the way. Treat them as filters to apply to variants, not as words to mix into a keyword query. Our guide to natural-language versus keyword product search covers why intent needs to become structure before it is useful.
If the exact variant is not available, say so. "This model fits, but white in size 9 is not showing as available. Grey in size 9 is." That answer is more useful than a quiet substitution.
Do product variants have their own GTIN?
In the normal case, every variant has its own GTIN: each colour and size of a trainer is a separate trade item. That makes GTIN the best way to confirm two retailers sell the same variant. There are exceptions worth knowing about:
Parent GTIN copied to every variant: some catalogues repeat one barcode across all sizes. If several variants share a GTIN, treat it as unreliable for variant matching.
Variants without GTINs: made-to-order items or small brands may have none. Fall back to brand, MPN and the variant attributes together.
One MPN for many variants: brands sometimes use a single model code for all colours. Brand plus MPN then identifies the parent, not the variant.
Packs and bundles: a two-pack has a different GTIN from a single item, even if the retailer lists it as a variant.
The last step is the one most often skipped. A link to the parent page usually opens on a default variant, which may be a different colour, a different size or out of stock. Wherever the retailer supports it, link to the variant URL, which often carries a variant parameter or its own path.
Good
Link opens on white, UK 9, with the price you quoted.
Acceptable
Link opens on the parent page, and the answer says "choose white and UK 9 on the retailer's page".
Avoid
Link opens on a different variant with a different price, and the answer does not mention it.
Google's product variant structured data guidance is a useful neutral reference if you also publish your own product pages, because it describes how variants and their URLs can be marked up.
A quick test set
Before you trust variant handling, run a few requests where the variant is the whole point: "kettle in cream", "size 6 wide school shoes", "256 GB phone in blue", "left-hinged fridge freezer". For each one, check that the answer names the variant, that the price belongs to that variant, and that the link opens on it.
Frequently asked questions
What is the difference between a product and a variant?+−
A parent product is the model, with one name and shared specifications. A variant is a specific version a shopper can buy, such as a size, colour or capacity, and it is the variant that has a price, stock and usually its own GTIN.
Should I show one result per parent or one per variant?+−
Usually one per parent, with the variant that matches the shopper's constraints selected. Showing every size as a separate result clutters the answer.
What if the retailer has no variant-level URL?+−
Link to the parent page and tell the shopper exactly which options to select. Do not imply the link opens on their variant.
Is colour a hard constraint?+−
Treat it as hard when the shopper names it. If nothing matches, say so and offer the closest colours rather than substituting silently.