Writing Shopify product data that enriches well
What clean source data looks like in Shopify, real brands in the vendor field, valid barcodes in barcode, structured options, so your Google Shopping feed comes out strong instead of thin.
Feed enrichment is non-destructive, it never overwrites your Shopify data, but it works from what you give it. Put a real brand in the vendor field, real barcodes in the barcode field, and consistent option names on your variants, and the feed that comes out the other side is stronger, cleaner and matched to more searches. This is what good source data looks like, field by field.
Why source data still matters
Feed enrichment is non-destructive. It reads your Shopify catalogue, builds a corrected version in a supplemental layer, and serves that to Google: your Shopify data is never overwritten. So it's fair to ask: if the feed gets fixed downstream anyway, why fuss over what's in Shopify?
Because enrichment works from evidence, and your source data is the best evidence there is. A product that already carries a real brand, a valid barcode and clean option values gives the feed a firm base: it comes out matched to Google's catalogue, categorised at leaf depth, and complete on the attributes shoppers filter by. A product that's vague at source can still be improved, but it's a harder job with a weaker result. "Writing data that enriches well" means giving the feed the strongest possible starting point.
None of this means editing your storefront for Google's benefit. It means putting the right kind of thing in each field (the brand in the brand field, the barcode in the barcode field) so nothing has to be guessed that could have been known.
The brand belongs in the vendor field
Shopify's Vendor field is where Google's brand attribute comes from. That's its job: but Shopify never enforces it, so vendor gets used for suppliers, distributors, internal codes, or left blank.
What enriches well:
- The real manufacturer brand, spelled one way. "Nike", not "NIKE", "Nike EU" and "nike" scattered across products: those are one brand to you and four to Google, and they break brand filtering and catalogue matching.
- The brand a shopper would type, not your wholesaler. If you buy Barbour coats through a distributor, the vendor is "Barbour", not the distributor's name.
- Left empty rather than faked for genuinely unbranded own-label goods. An honest gap is better than a wrong brand, and unbranded products have their own identifier path (see the identifier guide).
Consistency matters more than any single entry. One canonical spelling per brand across the whole catalogue is what makes brand-based matching and reporting work.
Barcodes go in the barcode field: real ones only
The variant Barcode field is the only native source for Google's gtin, and GTINs are the single heaviest factor in whether a product gets matched to Google's catalogue and richer placements.
| What's in barcode | Result on Google |
|---|---|
| A valid GTIN (8/12/13/14 digits, correct check digit) | Matched to catalogue, eligible for richer placements |
| Empty | No gtin: misses matching, but no disapproval |
| An internal SKU or made-up number | Fails validation → "incorrect identifier" disapproval |
The order of preference is clear: a real GTIN is best, empty is acceptable, and a fake is actively harmful. Never park a SKU in the barcode field to "fill it in": an empty field is a gap, but a wrong field is an error that can suppress more than the affected product.
Source real GTINs from your suppliers where you can. Where barcodes are genuinely missing across a large catalogue, GTIN enrichment can match products against barcode databases at scale: but a supplier-supplied GTIN in the barcode field is always the cleanest start.
Structured options, named consistently
Google's color and size attributes are built from your variant option values: but only when the pipeline can recognise your option names. Shopify option names are free text, set per product, so a catalogue drifts: "Colour" on one product, "Shade" on another, "Col." on a third, "Colour way" on a fourth.
Data that enriches well:
- Consistent option names across products: pick "Colour" and "Size" and use them everywhere. This is the single biggest lever for making sure every variant ships with
colorandsizepopulated. - Clean option values: "Racing Green", not "RG-04" or "green (see swatch)". The value is what shoppers search and filter on.
- One concept per option: don't fold size and length into one "Size" option ("10 Short", "10 Long") if they're really two dimensions; split them so each maps cleanly.
Enrichment normalises option names into Google's expectations regardless of what you called them, so drift isn't fatal: but consistent source names mean fewer variants slip through without an attribute, and the whole variant family maps more reliably. See variants and item_group_id for how the grouping depends on variant-level data being present.
Titles and descriptions: write for the shopper, let the feed shape for search
A common instinct is to cram brand, type, colour and size into the Shopify product title so the feed inherits a "search-friendly" title. Don't. That degrades your storefront and isn't necessary.
- Title: write it clearly and readably for someone on your product page. The feed layer front-loads brand, product type and key attributes into the ~70 characters Google weighs most: without touching your on-site title. You get a shopper-friendly PDP and a search-shaped feed title, because they're separate.
- Description: put the real product facts in the body: material, fit, dimensions, care. Clean, factual sentences enrich far better than a wall of marketing adjectives or a raw HTML size-chart table. The feed strips HTML to clean text; give it real content to work with.
The principle throughout: say true, specific things in the right field, and let the feed layer handle the Google-facing shaping.
Deep dive The compounding effect of clean source data
Each field above helps on its own, but they compound. A product with a real brand, a valid GTIN and clean option values isn't just three attributes better: it clears the threshold to match Google's product catalogue, which unlocks richer placements, price benchmarking and catalogue-level trust that a partially-identified product never reaches.
That's why the Feed Health Score weights identifiers so heavily. Two catalogues can enrich from the "same" data on paper and land far apart, because one gave the feed real evidence at source and the other gave it blanks and guesses. Enrichment fills gaps well: but "confidently matched" always beats "reasonably inferred", and the difference is decided by what you put in Shopify.
Practically, this means the highest-leverage data hygiene is the boring kind: one brand spelling, real barcodes, consistent option names. Do those three at source and the rest of the feed (titles, categories, attribute completeness) enriches from a stronger base and comes out cleaner. And because enrichment is non-destructive, none of your effort is ever overwritten: your clean Shopify data stays yours, and the feed layer builds on top of it rather than around it.
A quick source-data checklist
Before a big sync, or after any bulk import, spot-check these at source:
- Vendor = the real brand, one spelling per brand, blank only for genuine own-label.
- Barcode = valid GTINs, or empty: never SKUs.
- Option names = consistent ("Colour"/"Size") across products; values clean and human-readable.
- Title = readable for shoppers; trust the feed to shape it for search.
- Description = factual product content, not marketing filler or raw HTML tables.
For the full catalogue of what goes wrong when these slip, see common Shopify feed mistakes. For where each Shopify field lands on Google, see the field mapping.
Frequently asked questions
If enrichment fixes things anyway, why does source data matter?
Enrichment is non-destructive, it never writes back to Shopify, and it fills real gaps well. But it works from evidence, and your source data is the strongest evidence there is. A real brand in the vendor field, a valid barcode in the barcode field, and clean option names give enrichment a firm base to build on, so more of your catalogue comes out matched, categorised and complete.
Should I stuff keywords into my Shopify title so the feed picks them up?
No. Keep your Shopify title readable for shoppers on your PDP. The feed layer front-loads brand, type and key attributes for Google without you having to compromise the on-site title, that's the whole point of a separate feed layer. Write your source title clearly and let the feed do the search-shaping.
My barcode field has SKUs in it, is that better than empty?
No, it's worse. Internal SKUs fail Google's check-digit validation and cause "incorrect identifier" disapprovals. Either put real GTINs in the barcode field or leave it empty, never park a SKU there. See the barcode section below.