If you run Google Shopping ads for a Shopify or WooCommerce store, you've seen it: products quietly marked Disapproved in Merchant Center, silently cutting your reach and wasting spend. The frustrating part is that the causes are almost never interesting — they're boring data problems in your product feed.
Here are the ones that bite most often in 2026, and a free tool I built to find them instantly.
The usual suspects
1. Invalid GTIN. Every barcode number ends in a check digit computed from the others. One mistyped digit fails validation and disapproves the item. And here's the trap: never invent a GTIN to make the error go away — fabricated identifiers can get your whole account suspended. If a product genuinely has no barcode (handmade, custom, own-brand), set identifier_exists = no instead.
2. Price format. Google wants a number plus an ISO currency code: 24.99 GBP. A currency symbol (£24.99) or a comma decimal (24,99) gets rejected. The feed price also has to match the landing page.
3. Availability values. It must be exactly in_stock, out_of_stock, preorder, or backorder. Friendly-looking values like available, in stock, or yes are rejected.
4. Titles. Promotional text (Free shipping, Sale, Best price), ALL-CAPS titles, and titles over 150 characters are all common triggers. Titles should describe the product, not advertise it.
5. Missing fields. Every item needs a unique id, title, description, link, image_link, price, and availability. A blank description (common when a Shopify product's body is empty) is enough to disapprove it.
Finding yours without reading diagnostics row by row
Merchant Center will tell you that something is wrong, but digging through it product by product is slow. So I built Feed Doctor — a single page where you drop your product feed (a Shopify CSV export or a Google feed, CSV/TSV/XML) and it validates every row against Google's product-data spec, returning a ranked, plain-English list of what will be disapproved and why.
The part I care about most: it runs entirely in your browser. Your product data is never uploaded anywhere — there's no backend to send it to. Close the tab and it's gone. For something touching your store's catalogue, that mattered to me.
It checks GTIN check digits, price/availability formatting, title issues, missing fields, and the identifier logic above. There's a one-click paid fixer if you want the corrected feed generated for you, but the audit itself is free and needs no signup.
Try it: https://yoonustaji.github.io/feed-doctor/
If you want to go deeper on any single error, I wrote up the full list of disapproval reasons and a dedicated guide to fixing invalid GTINs the safe way.
Built with a small, dependency-free JS validation engine — happy to talk about how the GTIN check-digit and rule layer work if anyone's interested.
Top comments (0)