our Google & YouTube app syncs your catalog to Google Merchant Center as an XML feed. Impressions are driven by the accuracy of GTIN/MPN, product category, availability and structured attributes (color, size, material) — not by ad spend. Feed disapprovals almost always trace back to five root causes: missing GTINs, price mismatches, incorrect availability, image quality flags, and policy triggers on prohibited claims.
- GTINs are the single highest-leverage attribute — presence alone lifts impressions ~30% on identifiable products.
- Google Product Category (a numeric ID) matters more than the free-text product type field.
- Feed refresh is not real-time — plan a 30–60 minute delay after a Shopify update.
- One disapproved variant can suppress the entire product across Shopping.
- The 'availability' attribute is refreshed on every sale — feed-side inventory bugs are the #1 cause of overselling on Shopping.
Merchant Center rewards structured data. Fill GTINs, map to Google Product Category, keep prices synced, and Shopping will lift impressions without touching ad spend.
How the feed actually works
The Google & YouTube app installs a Shopify-managed Merchant Center feed with a fixed schema. It reads your product data, transforms it into Google's XML product feed format, and pushes it to Merchant Center on a schedule (typically every 30 minutes). You cannot directly edit the XML — you edit Shopify product data and the app regenerates the feed. This is a feature, not a bug: your storefront and your Shopping feed can never drift, which eliminates the biggest source of feed disapprovals on other platforms.
The attributes that drive impressions
Google's algorithm rewards feeds that let it match products to searches confidently. Every missing attribute is a search you don't compete for.
| Attribute | Where to set in your store | Impact on impressions |
|---|---|---|
| GTIN / UPC / EAN | Product → Inventory → Barcode | Very high — enables comparison shopping |
| Google Product Category | Product → Product Category (Standard taxonomy) | High — matches search intent |
| Brand | Vendor field or `descriptors.brand` metafield | High for brand searches |
| Color, Size, Material | Variant options + Category metafields | High for attribute-filtered searches |
| Product Type | Product → Product Type | Medium — free text, weaker than Category |
| Custom Labels 0–4 | Tags or custom feed rules | Zero on organic, high for bid segmentation |
GTINs — the biggest single lever
A GTIN (or its regional variant: UPC in North America, EAN in Europe, ISBN for books) is the barcode number that uniquely identifies a manufactured product globally. Google prioritises products with valid GTINs because it can match them to price-comparison data. If you resell branded goods, the GTIN comes from the manufacturer — never invent one. If you sell your own brand, apply for GS1 GTINs via your national GS1 office; a block of 100 costs around €100/year and pays for itself in the first week of Shopping impressions.
A malformed GTIN triggers a hard disapproval. Missing GTIN just means Google flags the product 'no unique product identifier' and shows it less often. If you don't have a real GTIN, leave the field empty rather than making one up.
The Google Product Category is not the Shopify Product Type
Two different fields, confusingly named. our 'Product Type' is a free-text field ('T-Shirts', 'Coffee Mugs') and drives internal navigation. The 'Product Category' (Standard taxonomy) is a Google-defined tree with 5,500+ nodes and 8-digit numeric IDs. Google reads the Category, not the Type. Map every product to the deepest applicable node — 'Apparel & Accessories > Clothing > Shirts & Tops > T-Shirts' is better than 'Apparel & Accessories > Clothing'.
- Use the built-in Standard Product Category picker in the Shopify admin.
- Deeper categories unlock more Google category metafields (Size Type, Sleeve Length, Fit).
- One product = one category. Multi-category products dilute matching.
- Re-audit quarterly — Google adds ~200 new categories per year.
Availability — where feeds and reality diverge
The `availability` attribute is `in_stock`, `out_of_stock`, `preorder` or `backorder`. Shopify pushes this on the next feed refresh after inventory changes. On a fast-moving store during a launch, you can sell out on your store 20 minutes before Google catches up — the feed still shows `in_stock`, Google keeps advertising, buyers land on out-of-stock PDPs. Solutions: enable `Continue selling when out of stock` on backorderable SKUs (correct availability = `backorder`), or set a low-stock threshold in Flow automations that hides products from the sales channel before they hit zero.
The five disapproval reasons that account for 90% of feed problems
Merchant Center's diagnostic screen is thorough but overwhelming. In practice, five root causes explain almost every disapproval.
- 1Price mismatch
Feed price ≠ landing page price. Usually caused by market-specific pricing or an app that changes the price after the feed reads it. Fix: sync your feed market to your primary Shopify Market.
- 2Missing shipping cost
For destinations where you don't have configured shipping, Merchant Center marks the product ineligible. Fix: configure shipping in Merchant Center settings or restrict the feed target countries.
- 3Image quality / promotional overlay
Google rejects images with sale badges, logos or promotional text overlaid. Fix: use a clean image metafield (`marketing.hero`) for the feed and keep sale badges as separate storefront overlays.
- 4Editorial issues
Titles like 'BEST T-SHIRT EVER!!!' get flagged. Fix: strip promotional language from titles; describe the product neutrally.
- 5Prohibited category
CBD, weapons, adult goods and healthcare claims trigger category-level suppression. Fix: check the Merchant Center policy centre before listing.
Title and description templates that outperform
Google's algorithm ranks titles by keyword match density and structure. The templates that consistently outperform in our audits follow a predictable order.
Apparel: [Brand] [Gender] [Product Type] [Attribute] [Color] [Size]
→ 'Patagonia Men's Down Jacket Slim Fit Navy Medium'
Consumer: [Brand] [Product] [Model/Variant] [Key Spec]
→ 'Sony Wireless Headphones WH-1000XM6 Noise Cancelling'
Home: [Brand] [Product] [Material] [Color] [Size/Weight]
→ 'IKEA Sofa Cover Cotton Beige 3-Seat'
Grocery: [Brand] [Product Name] [Variant] [Weight/Count]
→ 'Lavazza Espresso Ground Coffee Crema Gusto 250g'Feed-specific overrides
Sometimes the storefront title, description or image is wrong for Shopping — for example, poetic marketing copy that doesn't match search intent. Shopify supports feed-specific fields via the Google & YouTube app: set `google.custom_product` or add `mm-google-shopping` metafields to override just the feed data without changing your storefront copy.
- `mm-google-shopping.custom_product` — force `TRUE` to include products flagged as private-label.
- `mm-google-shopping.google_product_category` — override the auto-mapped category.
- `mm-google-shopping.custom_label_0` through `_4` — segment products for Shopping campaigns.
- `mm-google-shopping.age_group` — required for apparel (newborn, infant, toddler, kids, adult).
- `mm-google-shopping.gender` — required for apparel (male, female, unisex).
Custom Labels don't affect organic Shopping impressions — they're for structuring Smart Shopping and Performance Max campaigns. Fill them with margin tiers, seasonality flags or bestseller status, not keywords.
Frequently asked questions
The most common questions merchants ask us about seo.