
Google Shopping feed optimization is the process of structuring your product data — titles, descriptions, GTINs, categories, images and attributes — so Google Merchant Center accepts the feed and matches your products to high-intent shopping queries. Done well, it cuts disapprovals, lifts impression share and improves ROAS. Done poorly, it caps your account before bidding can ever fix it.
This is the complete 2026 guide. It covers what feed optimization is, why it matters, the attributes that actually move performance, title and description systems, image and GTIN rules, how to fix Merchant Center rejections, and a step-by-step playbook you can run on your own catalog. It applies equally to teams that call this Google Shopping feed optimisation (UK spelling) — the mechanics are identical.
For a deeper attribute-by-attribute ROAS breakdown see Google product feed optimization; for country-specific rules see UK & EU Google Shopping feed optimisation; for the underlying transformation logic see attribute mapping.
What is Google Shopping feed optimization?
A Google Shopping feed is the structured file Google Merchant Center reads to build Shopping ads, Free listings and Performance Max product surfaces. Feed optimization is the ongoing discipline of making that file:
- Accepted — every required attribute present, valid and within Google's policy.
- Matched — titles, categories and descriptions worded so Google associates the SKU with the right queries.
- Competitive — prices, images and structured signals that win the auction once you're matched.
It is not a one-off task. Prices change, stock fluctuates, new SKUs launch, Google updates the spec. Optimization is a continuous loop, not a setup step.
Why Google Shopping feed optimization matters (ROAS & approval)
Two metrics depend almost entirely on the feed. Disapproval rate determines how much of your catalog Google will even serve — once disapprovals exceed about 2% of active SKUs, account-level warnings kick in and impression share drops across the board. ROAS follows feed quality because bidding can only optimise traffic Google chose to send you; the title, category and attributes decide which queries you ever appear on.
Most "Google Ads performance" problems we see in audits are actually feed problems wearing a bidding mask. Catch them upstream with a free product feed audit before adjusting campaign budgets.
How to optimize your Google Shopping feed (step-by-step)
A repeatable 7-step process you can run on any catalog:
- Audit the current feed. Export the active feed from Merchant Center, list every disapproval, warning and "limited performance" SKU. Group issues by attribute (title, image, GTIN, category) — this tells you where to spend time.
- Fix required attributes first. id, title, description, link, image_link, availability, price, brand, gtin/mpn, condition, google_product_category, identifier_exists. No optimisation matters until the feed is approved.
- Rewrite titles to the formula
[Brand] [Product Type] [Key Attribute 1] [Key Attribute 2] [Model/Size/Color]. Front-load the strongest match signals in the first 70 characters. - Restructure descriptions into two paragraphs — algorithm-first (facts dense), then human-first (benefits). Strip HTML residue from your CMS.
- Set the deepest valid google_product_category. Use Google's taxonomy file, not your internal naming. Keep
product_typeas your own classification for custom labels. - Validate images and GTINs. 1200×1200 minimum on white background, no overlays; GTINs verified against GS1 or
identifier_exists: FALSEfor unbranded. - Automate refresh and pre-flight validation. Sync inventory and price at least hourly, regenerate the full feed daily, and run a rule-based validator before each push.
The 12 attributes that actually move performance
Out of the 50+ attributes Google supports, only a handful materially affect performance. Priority order based on what we see across catalogs:
- title — primary matching signal. Failure: keyword-stuffed or generic.
- google_product_category — determines which auctions you enter. Failure: missing or wrong taxonomy.
- product_type — internal classification, helps custom labels. Failure: inconsistent depth.
- gtin — trust signal, unlocks Buy on Google. Failure: missing on new SKUs.
- brand — match signal for branded queries. Failure: empty or inconsistent.
- image_link — CTR driver in Shopping ads. Failure: low-res, watermarked, lifestyle vs studio.
- availability — filters out OOS impressions. Failure: stale (cached > 24h).
- price / sale_price — auction competitiveness. Failure: currency mismatch.
- condition — required for non-new items. Failure: defaulting to 'new' incorrectly.
- custom_label_0-4 — bidding granularity. Failure: unused or inconsistent.
- description — secondary match signal + Shopping tab. Failure: HTML residue from CMS.
- identifier_exists — trust signal for unbranded items. Failure: set to TRUE without GTIN.
Title optimization: the 70-character hierarchy
Google truncates titles at ~70 characters on most placements. The first 70 chars need to carry the match signal AND the click signal. The pattern that works across categories:
[Brand] [Product Type] [Key Attribute 1] [Key Attribute 2] [Model/Size/Color]Real example for a TV:
- ❌ Bad: Amazing 4K Smart TV with HDR - Best Deal Online! Free Shipping
- ✅ Good: Samsung 55" QLED 4K Smart TV QN90C - 2024 Model, HDR10+, Black
The good version front-loads brand and product type (the strongest match signals), then layers attributes by descending importance. The "Free Shipping" and "Best Deal" copy adds zero match signal and burns characters.
Per-vertical title formulas
- Apparel: [Brand] [Gender] [Product] [Color] [Size] [Material] → Nike Men's Running Shoe Pegasus 40 Black Size 10 Mesh
- Electronics: [Brand] [Model] [Spec1] [Spec2] [Color] → Apple iPhone 15 Pro 256GB 5G Titanium Blue
- Home goods: [Brand] [Product] [Material] [Dimensions] [Color] → IKEA Hemnes Dresser Solid Pine 6-Drawer 130cm White
- Beauty: [Brand] [Product] [Type] [Size] [Skin Type] → Olay Regenerist Cream Anti-Aging 50ml All Skin Types
Description optimization: algorithm reads, humans buy
The description has two audiences: Google's matching algorithm and the human reading the Shopping tab. They want different things. The algorithm wants structured, scannable, attribute-rich text. The human wants benefit-led, problem-solving, narrative text.
The solution is a two-paragraph structure:
- Paragraph 1 (algorithm-friendly): facts dense. Material, dimensions, compatibility, use cases. No marketing fluff.
- Paragraph 2 (human-friendly): the "why you'll love this" copy. Benefits, scenarios, differentiation.
Strip all HTML before submitting. Most CMS-generated descriptions arrive with <style> tags, <a href> links and <script> residue. Google flags these and they reduce match confidence.
Image, GTIN and MPN requirements
Images
- Resolution: 800×800px minimum, 1200×1200px recommended. Below 800 Google may still accept but won't promote.
- Background: plain white for general categories. Lifestyle goes in
additional_image_linkslots. - No overlays: no watermarks, no "SALE" badges, no promotional text. These get auto-disapproved.
GTIN, brand & MPN — the trust trio
For branded products, Google strongly prefers (and increasingly requires) two of: GTIN, brand, MPN. Missing GTINs are the most common cause of "limited performance" warnings.
- If the product has a real GTIN, submit it. Never invent one — Google validates against GS1.
- If the product is unbranded (private label, generic), set
identifier_exists: FALSEand skip GTIN. - MPN alone is rarely enough. Submit brand + MPN as fallback for products without GTINs (often apparel and home goods).
Attribute mapping: turn raw catalog data into a Google-ready feed
Most catalogs don't store data in Google's schema. You'll have colour where Google wants color, free-text sizes that need normalising, categories that don't map cleanly to Google's taxonomy. Attribute mapping is the transformation layer that converts your source-of-truth into Google's required structure — ideally with conditional rules, fallbacks and validation built in.
This is where automation pays back fastest: a mapping rule written once applies to every SKU forever and survives catalog changes that would break manual spreadsheets.
Mid-guide checkpoint: if you want to see exactly where your live feed is losing impressions today, run a free product feed audit — it scans for the issues described above and returns a prioritised fix list in minutes.
Fixing common Merchant Center rejections
- Missing GTIN on branded items (very high frequency) — pull from manufacturer data; set
identifier_existscorrectly. - Stock status stale (high) — sync availability hourly, not daily.
- Image too small (high) — replace at 1200×1200 minimum.
- Title duplicates description (medium) — restructure both following the formulas above.
- Wrong google_product_category (medium) — use the deepest applicable node.
- Price mismatch with landing page (medium) — sync price in real-time.
- HTML in description (medium) — strip with a sanitizer before submitting.
- Mixed currencies in same feed (low but critical) — split feeds by market. Our UK & EU regional optimisation guide covers this in detail.
Custom labels: the bidding granularity layer
Custom labels (custom_label_0 through custom_label_4) don't affect matching. They affect how you bid. Use them to slice your inventory for bid strategy:
- custom_label_0: Margin tier (high / mid / low)
- custom_label_1: Bestseller status (top / mid / slow)
- custom_label_2: Seasonal flag (Q4 / Summer / Evergreen)
- custom_label_3: Price range bucket
- custom_label_4: Promotional tag (clearance / new arrival / restock)
Automation: keeping the feed optimized as the catalog changes
Manual feed optimization breaks at ~5,000 SKUs. Beyond that you need automation that enforces the rules above on every catalog update, not once a quarter. The minimum automated pipeline:
- Hourly pull from source-of-truth (PIM, ERP or storefront).
- Rule-based attribute mapping with fallbacks per channel and market.
- Pre-flight validation against Google's spec — block bad SKUs before submission.
- Daily full-feed regeneration plus hourly delta updates for price and stock.
- Monitoring of disapproval rate and impression share by
product_typeandcustom_label.
IronFeed's feed optimization features are built around this pipeline — mapping rules, multi-market output, templating and pre-flight validation in one place.
Measuring optimization impact
Track these metrics weekly:
- Disapproved SKU %: should be <2%. Higher = systemic feed problem.
- Impression share for top 20% SKUs: trending up = optimization working.
- CTR by custom_label_0 segment: identifies which margin tier needs more title work.
- CPC drift on branded queries: rising CPC = competitors catching up; revisit title freshness.
- Conversion rate by product_type: identifies categories that need price or image work.
Next steps
Start with the audit step: you can't optimise what you haven't measured. Run a free product feed audit to score your live feed against the rules in this guide, then work through the 7-step process above on the highest-impact issues first.