A Shopping campaign goes live, impressions start rolling in, and two days later half the catalog vanishes from ads. Merchant Center shows a red “Disapproved” next to each one. The store owner scrolls through the reasons and none of it makes sense. Sound familiar?
There’s actually a short list of repeat offenders behind most disapprovals, and they show up in store after store regardless of platform. Here’s what breaks most often, and how to catch it before Google does.
GTIN and brand: where half the trouble starts
Google requires a GTIN (barcode – EAN, UPC, ISBN) and a brand for products in categories where the industry assigns them: electronics, branded apparel, books, toys. List a pair of name-brand headphones without a GTIN in the feed, and the item gets rejected with something like “missing product identifier.”
Here’s the part that trips people up. Store-brand or private-label products are exempt from the GTIN requirement – but only if the feed explicitly sets identifier_exists=”no”. Skip that flag and Google keeps demanding a barcode that doesn’t exist, disapproving batch after batch.
The reverse happens too: the GTIN is there, just wrong – copied from a supplier record that changed packaging years ago, or typed by hand with one digit off. The field looks filled in, feed validation waves it through, and then Google checks the number against its own product database and rejects it as a brand or category mismatch.
Price and availability: one number in the feed, another on the page
This is arguably the most frustrating one, because it doesn’t show up right away – it surfaces days or weeks after launch. Google periodically crawls landing pages and compares price and stock status against what’s declared in the feed. A mismatch of even a dollar sends the item into “Price mismatch” status, and repeated violations can trigger an account-level warning, not just a single disapproved item.
It happens most often when the feed regenerates once a day on a schedule while site prices move faster than that – a sale ends at 10am, the feed doesn’t catch up until the overnight run. Or a product sells out at noon, the site flips to “out of stock,” and the feed still says “in stock” until the next refresh.
Images: it’s the rules, not the aesthetics
Google is strict about formal image requirements, not how good a photo looks. Watermarks and seller logos over the product, any text baked into the image (even a small “-20%” badge in the corner), borders, “image coming soon” placeholders standing in for a real photo, and – a sneakier one – the wrong product’s photo entirely. That last one shows up when listings get cloned from a supplier catalog and nobody swaps the image for a different color variant.

The detail people miss
The minimum image size for most categories is 100×100 pixels, and apparel has tighter rules on top of that. If the feed pulls a thumbnail instead of the full-size photo from the CDN, the item clears feed-level validation but gets rejected once Google’s crawler actually looks at the image.
Required fields nobody remembered to fill in
Shipping and condition are the fields most likely to fall through the cracks after a platform migration, when some attributes just didn’t make the jump. Without a shipping cost declared either in the feed or configured directly in Merchant Center, a listing can technically pass review and still perform worse – Google doesn’t reward incomplete data even where it stops short of an outright rejection.
Condition (new, refurbished, used) is mandatory for certain categories, and the classic mistake is a store selling refurbished electronics while the feed defaults every item to “new,” because that’s what the CMS fills in for the whole catalog unless someone overrides it.
Prohibited content and promises that go too far
“Cures a cold overnight,” “guaranteed results,” “100% natural” with nothing to back it up – Merchant Center’s automated review flags this kind of language constantly, especially in supplements, cosmetics, and health categories. The same bucket catches items restricted in a specific target country: certain medications, weapons, counterfeit goods. A store running one feed across several countries can easily forget that something legal to sell at home shows up on the restricted list for another region in the same campaign.
Product category picked by eye
Google Product Category isn’t a free-text field – it’s a fixed taxonomy with several thousand entries. Auto-mapping from a site’s own categories tends to grab the closest-sounding match rather than the correct one: athletic wear lands under “Clothing” instead of “Sporting Goods > Athletic Apparel,” and the ad either reaches the wrong audience or gets rejected outright if that category requires attributes the listing doesn’t have.
The landing page URL has its own failure modes
Three recurring ones. First: the feed links to a page that now redirects somewhere else – the product got discontinued, and nobody pulled the URL from the feed. Second: the page technically exists but carries a noindex tag, usually left over on a staging or recently-migrated domain where a developer forgot to remove it after launch. Third, and genuinely annoying: the domain in the feed doesn’t match the one verified in Merchant Center – this happens after a store moves to a new domain and the verification never gets redone.
What actually checking feed health looks like
Merchant Center’s Diagnostics tab doesn’t just show an overall error rate – it breaks disapprovals down by specific cause, with example products for each. It’s worth checking not once a month but a day or two after every significant catalog update, since a fresh batch of products always brings its own set of errors.
There’s also a per-item status on the Products page, and it’s not just “Active” or “Disapproved” – there’s a “Pending review” state that can sit longer than store owners expect, especially for new accounts or large batches.
One habit that actually saves time: run the feed through a validator – a custom script or a third-party tool – before uploading, checking required fields, GTIN format, image dimensions, and link validity. Catch it there instead of finding out from Google’s disapproval report after the fact.
Keeping the feed and the site in sync isn’t a one-time setup
A feed generated once and forgotten starts living its own life, separate from the store. Prices, stock levels, and shipping details change on the site in real time; the feed only updates on its schedule. The shorter that interval – every few hours instead of once a day – the less likely Google is to catch a gap between what’s on the product page and what the ad promises.
For catalogs that change often – sales, seasonal lines, supplier switches – it’s worth generating the feed straight from the same database that powers the site, rather than from a separate export someone updates by hand once a week.
Read also: API Integrations That Don’t Break: Building Reliable Sync Between CRM and Warehouse Systems; Conversion Optimization Without a Redesign: Small Changes That Move the Needle.
Related services: Website design, Corporate website, Website improvements.