Colour and size normalisation
How Optimise turns messy, inconsistent colour and size values into the consistent Google-friendly ones that win attribute-filtered searches, all in a supplemental layer, never overwriting your store.
Shoppers filter and search by colour and size, so Google needs those values to be clean and consistent, but store data is full of 'Jet/Coal/Onyx' for black and 'M/Med/Medium' for one size. Optimise normalises these messy values into consistent, Google-friendly ones, so your products match the filters and searches they should. Your store's original values stay exactly as they are.
Why messy attributes cost you searches
A big share of Shopping demand is attribute-led: "black ankle boots size 6", "red midi dress", "grey wool jumper medium". Google serves those searches (and powers its filter chips) from your color and size values. If your values are inconsistent, you lose the match even though the product is a perfect fit.
Store data is almost always inconsistent, because option names are free text set product by product. One catalogue can carry "Black", "Jet", "Coal" and "Onyx" for the same colour, and "M", "Med", "Medium" and "10-12" for the same size. To a shopper these are obvious; to Google they're distinct strings.
What normalisation does
Optimise reads each variant's colour and size values and maps them to consistent, Google-friendly ones:
| Messy source value | Normalised value |
|---|---|
| Jet / Coal / Onyx / Midnight | Black |
| Navy Blue / French Navy / Ink | Navy |
| M / Med / Medium | M |
| 10-12 / UK 12 / EUR 40 | 12 (with size_system set) |
| Rose Gold Metallic | Rose Gold |
The normalised value goes into the supplemental layer and is served to Google; your Shopify option values are left exactly as you wrote them.
Why consistency matters more than "correctness"
The goal isn't a single "right" colour name: it's that the same colour always gets the same value across your whole catalogue. A store where black is sometimes "Black" and sometimes "Jet" splits its own black products across two buckets, so a shopper filtering for black sees half of them. Consistency is what makes filtering and matching work.
Deep dive How normalisation feeds filtering, matching and variant grouping
Three separate systems downstream depend on clean colour and size values, which is why the payoff compounds.
Filter chips. Google's Shopping results show colour and size filters. Those chips are built from your submitted values. A product tagged "Onyx" doesn't appear under the "Black" chip: so every shopper who narrows by colour filters it straight out, regardless of how good the product is.
Query matching. Attribute-led queries ("red midi dress size 10") are matched partly against color and size. A dress whose colour is submitted as "Scarlet" is a weaker match for "red" than one submitted as "Red". Normalising to the term shoppers actually type widens the queries you're eligible for.
Variant grouping and completeness. Colour and size are the attributes that distinguish variants within an item_group_id family. If option names drift across products ("Colour", "Color", "Shade", "Finish") some variants ship without a usable color at all and drop out of attribute-filtered impressions. Normalisation here works hand in hand with variant grouping; see Shopify variants and item_group_id.
Size systems and cuts. Size is trickier than colour because "12" means different things in UK, EU and US, and cuts (petite, plus, maternity) refine it further. Normalisation sets size alongside size_system and size_type so a UK 12 isn't matched as an EU 12. Getting this wrong sends the right product to the wrong shoppers.
All of this is why colour and size completeness is a weighted part of your Feed Health Score: inconsistent attributes are invisible losses: the product is fine, the value is just in the wrong bucket.
How Optimise handles it
Optimise reads your variant option values, maps them to consistent Google-friendly color and size values (setting size_system and size_type where they apply), and writes the result to the supplemental layer described in How enrichment works. Your storefront keeps whatever names you chose (the brand colour on the product page, your own size labels) while Google receives the normalised versions that win filters and searches.
Where to go next
- See colour and size among the full field set in The 20 enriched fields
- Understand how they distinguish variants in Shopify variants and item_group_id
Frequently asked questions
Why does colour need normalising if the value is technically there?
Because Google groups and filters on the value, not the intent. "Jet", "Coal" and "Onyx" are all black to a shopper but three separate values to Google, so a shopper filtering for "black" misses two of them. Normalising to a consistent "Black" makes all three findable.
Does normalising overwrite my Shopify colour and size options?
No. The normalised value is written to the supplemental layer that feeds Google. Your Shopify option names and values are untouched, your storefront still shows whatever you called them.
What about brand colour names I want to keep?
The customer-facing name can live on your storefront; the feed just needs a value Google understands. Optimise maps the fanciful name to a standard colour for Google while your store keeps the brand name.