ReferenceUpdated 2026-07-06

Shopify to Google Shopping: the field-by-field mapping

The complete reference for how Shopify product fields map to Google Merchant Center attributes, what maps cleanly, what needs transformation, and which Google attributes Shopify simply doesn't have.

Plain-English summary

About half of Google's product attributes have a direct Shopify counterpart (title, price, barcode → GTIN). The other half either need transformation (product type vs Google's category taxonomy), live in awkward places (metafields), or don't exist in Shopify at all (age group, gender, material, unless you put them somewhere). This mapping is where most feed problems are born.

The mapping table

Google attribute Shopify source Notes
id Variant ID One offer per sellable variant
item_group_id Product ID Groups variants: see variants guide
title Product title (+ variant options) Variant titles need option values appended: "Rio Dress" alone can't represent Red / 10
description Body (HTML) Must be stripped to clean text; raw HTML with size-chart tables reads badly
link Product URL (+ ?variant= param) Variant-specific links keep price/availability crawls honest
image_link Variant image, else product image Variant-specific images matter for colour variants
price / sale_price Variant price / compare-at logic When compare-at > price: compare-at is price, price is sale_price
availability Inventory qty + policy In stock / out of stock; "continue selling when out of stock" → still in stock
brand Vendor Vendor field hygiene becomes brand hygiene
gtin Variant barcode Real GTINs only: validated, not just non-empty
mpn SKU (with care) Only when SKU genuinely is the manufacturer part number
google_product_category : (no native source) Needs mapping from product type/category via metafield or enrichment
product_type Product type / collection path Your own taxonomy; useful for campaign structure
color, size Variant options (when named that) Option names are free text: "Colour", "Shade", "Col." all mean color
gender, age_group, material, pattern : (metafields or nothing) Required for apparel categories; usually absent in Shopify
shipping_weight Variant weight Needed for carrier-calculated shipping
custom_label_0–4 : (tags/metafields via rules) See custom labels

The three classes of problem

1. Clean mappings that inherit dirty data

barcode → gtin is a perfect mapping: of whatever is in the barcode field. Same for vendor → brand ("Nike", "NIKE", "Nike UK" are three brands to Google). The mapping isn't the problem; the source hygiene is, and Google validates what Shopify never did.

2. Transformations someone has to own

Variant titles, HTML-to-text descriptions, compare-at sale-price logic, option-name normalisation ("Shade" → color). Every Shopify feed pipeline does these somewhere; the difference between integrations is how well.

3. Attributes with no Shopify home

google_product_category, gender, age_group, material, and (for identifier-less products) identifier_exists. For apparel and several other verticals these aren't optional: missing gender/age_group on clothing items limits serving or disapproves them. Your options: maintain metafields per product (accurate, laborious), or use an enrichment layer that derives them from titles, descriptions, images and category context.

Deep dive Why "the app handles it" undersells the problem

Google & YouTube channel app, feed apps, and enrichment platforms all "map Shopify to Google": but mapping is the easy 80%. The differentiating 20%:

  • Classification into Google's taxonomy at leaf depth ("Cocktail Dresses", not "Clothing") across thousands of products.
  • Gap-filling the no-home attributes from evidence rather than defaults (a default gender: unisex on a women's dress range is worse than absent).
  • Validation before submission (GTIN check digits, image URL liveness, price consistency) so Merchant Center Diagnostics stays quiet.
  • Non-destructive layering: fixes live in the feed layer, not written back into Shopify, so your store data stays yours and the enriched version serves every channel. This is the architecture /tools uses: Shopify is read, never written.

Whichever pipeline you choose, audit it against the table above: for each Google attribute, know exactly which Shopify field (or rule, or enrichment) supplies it. A feed you can't trace is a feed you can't fix.

Frequently asked questions

Where does Google's gtin come from in Shopify?

The variant Barcode field. If your barcodes are empty or hold internal codes instead of real GTINs, your feed inherits that gap, it's the most common single defect in Shopify-sourced feeds.

What fills google_product_category?

Nothing automatically. Shopify's product type and category are your inputs, but Google's taxonomy is its own tree of ~5,500 categories, something has to do the mapping, whether that's a metafield you maintain per product or an enrichment layer that classifies for you.

Do Shopify tags go anywhere?

Not by default. Tags are a useful raw signal (sale, new-in, clearance) that a feed layer can translate into custom labels, but no standard integration maps them for you.

Put this into practice. /tools rebuilds messy product data into Merchant Center-ready feeds. Connect a store and see your Feed Health Score in minutes.
Try /tools →