Google Shopping Feed Optimization: The Feed Attributes That Decide Whether Your Products Show Up
Google Shopping placement isn't won on the search results page. It's won in the feed — the structured file of product data you hand to Merchant Center — and it's lost there too, usually silently. A store owner sees products missing from Shopping results and assumes a ranking problem. Nine times out of ten it's not a ranking problem; the products were disapproved or quietly limited weeks ago, the notice is sitting unread in Merchant Center's Diagnostics tab, and the products aren't losing the auction — they were never entered in it.
The Shopping feed is unforgiving in a way organic SEO is not. Organic tolerates imperfection; a mediocre page still ranks somewhere. Merchant Center works on pass/fail rules: an attribute is missing or mismatched, the product is out, and no amount of authority compensates. That's the bad news. The good news is the rules are knowable, and a store that actually satisfies them is ahead of most of its competitors, because most competitors never look.
The identifiers: GTIN, MPN, and brand
The attribute that disqualifies more products than any other is the GTIN — the barcode number (UPC in North America, EAN in Europe). Together with brand and MPN (manufacturer part number), these unique product identifiers are how Google matches your listing to its catalog of known products, which unlocks price comparison placement and, per Google's own numbers, materially better conversion rates.
The rules in practice:
- If the product has a GTIN, you must provide it. Reselling branded goods with the GTIN field empty gets you "Limited performance" warnings at best and disapproval at worst.
- Never fabricate one. Stores pad empty fields with made-up or reused numbers, and Merchant Center cross-checks against the GS1 database — invalid GTINs trigger disapprovals that are worse than the gap they papered over.
- Genuinely no GTIN — custom, handmade, vintage? Set identifier_exists to false and supply brand plus MPN where they exist. That's the sanctioned path, not the workaround.
Where does this data live? In your catalog, in fields nobody filled in. WooCommerce doesn't even have a native GTIN field — it comes from your SEO plugin or a product add-on — and on BigCommerce the UPC and MPN fields exist but sit empty on most catalogs we audit. Filling them across a thousand SKUs is classic bulk catalog work: tedious, mechanical, and worth more per hour than almost anything else on the store.
Titles and descriptions: the feed is not the product page
Your feed title is the single strongest relevance signal in Shopping, and the default — piping the product page title straight through — wastes it. Shopping queries are specific: people search "men's trail running shoes size 11 blue," not "the AeroGlide experience." The feed title should lead with what people type: brand, product type, and the deciding attributes — size, color, material, model — in roughly that order, front-loaded because display truncates around 70 characters even though the field allows 150. Keep it factual; promotional language ("Best!", "Free Shipping!") in titles is itself a disapproval trigger.
The same logic applies to product_type and google_product_category. The latter must come from Google's fixed taxonomy — the most specific node you can honestly claim, because "Apparel & Accessories" tells Google nothing that helps it match queries. The former is your own category path and can mirror your store's structure. Both feed the matching engine.
The disapproval codes you'll actually see
Merchant Center's Diagnostics tab speaks in specific codes, and the frequent flyers are worth knowing by name:
- Price mismatch — the feed says $49.99, the landing page says $54.99. Usually a stale feed meeting a live sale, a currency setting, or tax-inclusive display on one side only. Google crawls your pages to verify, so the feed must match the rendered page, including sale pricing.
- Availability mismatch — feed says in stock, page says sold out. Same root cause: feed refresh lag. High-turnover stores need feeds regenerating on a schedule that matches how fast inventory moves.
- Image quality / promotional overlay — watermarks, "SALE" badges, or text burned into the product image. Google wants clean product photography on white or transparent backgrounds; overlays that are fine on your site are violations in the feed.
- Missing or invalid GTIN — covered above, and stubbornly common.
- Landing page not crawlable — robots.txt blocking Googlebot from product URLs, or pages returning errors. The feed is only as good as the pages it points to.
The pattern across all of them: Merchant Center continuously reconciles feed against site, and every divergence is a strike. Feed optimization is really consistency engineering — one source of truth, propagated everywhere.
Feed, page, and schema must tell one story
That reconciliation goes a layer deeper than most stores realize. Google also reads your product pages' structured data, and when the feed says one price and the Product schema says another, the mismatch can hold products in limbo just as effectively as a wrong page price. Feed attributes, page content, and schema markup are three copies of the same record, and they must agree — the same identifiers, the same price, the same availability. On stores with hand-edited schema or multiple plugins each emitting their own markup, they frequently don't. It's the same class of problem we cover in schema at scale: correctness is a template-level property, verified on rendered pages, not assumed from settings screens.
Working the queue
A neglected feed doesn't get fixed by resubmitting and hoping. The sequence that works: export the full Diagnostics disapproval list, group by code rather than by product — five hundred disapprovals are usually six root causes — fix each cause at the source (the catalog data, the template, the feed mapping), regenerate, and request re-review where required. Then keep watching, because feeds decay: every price change, stock-out, and new product is a fresh chance for divergence.
Our team runs this as a standing discipline — feed diagnostics and repair paired with the underlying product data completeness work, because the feed is only ever as clean as the catalog behind it. The payoff is unambiguous: disapproved products can't sell, and approved, well-titled, correctly identified products enter every auction they're eligible for. In Shopping, showing up is the whole game, and the feed decides who shows up.