Nobody reads a disapproval email calmly. Google flags a batch of products on a Friday afternoon, the listings drop out of Shopping, and revenue leaks while you work out what “limited performance due to missing identifiers” is supposed to mean.
Here’s the useful part: disapprovals are predictable. Run enough feed audits and the same handful of problems shows up in almost every catalog. This post walks through the five that do the most damage: identifiers, titles, images, availability, and price. For each one, what Google checks, what it costs you, and the fix.
Why does Google disapprove products at all?
Merchant Center is a trust system. Google shows your product data directly in search results, so it holds that data to a stricter standard than your website. Three things get checked constantly: required fields (no price, no listing), data quality (a title in all caps reads like a scam), and consistency (the feed says in stock, the landing page says sold out).
Fail a required field and the item is disapproved outright. Fail a quality check and the item quietly loses auctions instead. The second kind is worse, because nothing tells you it’s happening.
What do missing identifiers actually cost?
GTIN, MPN, and brand connect your item to Google’s product graph. With them, Google knows your SKU is the same product it already has reviews, price benchmarks, and search history for. Without them, your item floats free: it still shows, but with limited visibility and worse auction matching.
This is the quiet killer of Shopping performance, because there is no red disapproval to react to. The item looks fine in Merchant Center and underperforms every day.
The fix depends on what you sell. If you resell branded goods, GTINs come from your supplier; chase them. If you sell own-brand or handmade products, you likely have no GTIN, so set brand plus MPN and tell Google identifiers don’t exist for those items. Even brand alone improves matching.
Why do long titles lose clicks?
Google accepts titles up to 150 characters, truncates anything longer, and in most placements shows around 70. Whatever sits past that point is invisible in the ad.
The common failure isn’t length itself, it’s order. Feeds fill up with titles like “FREE UK DELIVERY | Shop The Summer Sale | Blue Ceramic Coffee Mug 350ml”, spending their visible characters on boilerplate. Flip it: brand, product type, key attribute first. The mug should lead with “Brewell Blue Ceramic Coffee Mug 350ml” and let the delivery message live in your ad settings, where it belongs.
All-caps titles get flagged too, and shoppers trust them less. Fix the export, or fix it with a transform rule between your source and the channel.
What image problems get items rejected?
Two show up constantly. A missing image is an instant disapproval: Shopping is a picture format, and Google won’t list an item it can’t show. Images served over plain http are subtler. Mixed-content images get blocked or endlessly re-crawled, so listings flip in and out of approval and you end up chasing a ghost.
The http case is usually a one-line fix. If your CDN serves both protocols, a replace rule swapping http:// for https:// on the image field cleans every affected item at once. Missing images need fixing at the source, best sellers first.
Why is availability wording so strict?
Google accepts exactly four values: in stock, out of stock, preorder, backorder. Your platform’s export might say “yes”, “available”, “1”, or “usually ships in 2 days”. All of those are rejections.
It’s an easy fix (a lookup rule mapping your values to the standard set) and an easy thing to break silently when someone changes the export. If availability starts failing after a platform update, look here first.
How do price errors become account problems?
A missing or unreadable price kills a single listing. A batch of zero prices is worse: outside a few specific programs, zero-price items are disapproved on sight, and enough of them at once can trigger a review of the whole account. Currency gaps cause quieter trouble. A price with no currency gets your account default assumed, which is wrong exactly when it matters, on multi-currency stores.
Zero prices are usually placeholder rows or a broken export column, not real products. Exclude them from the feed until the source is fixed. That keeps the account clean while you sort it out.
What’s the fastest way back to approved?
Triage by consequence, not alphabetically.
- Required-field failures first: price, availability, image, link, title. These items are earning nothing at all.
- Account-level risks second: zero prices and widespread mismatches, because they put everything else at risk.
- Quality improvements last: identifiers, title order, descriptions. These compound over weeks.
Then make each fix once, in one place, and let it apply to every future version of the feed. A spreadsheet fix rots the next time the export runs. A rule sitting between your source feed and the channel keeps working.
That layer between source and channel is what SKULayer is. It audits the feed you already have, explains every finding in plain English with the affected items listed, and lets you fix them with rules you preview before anything ships. Your first audit runs in about ten minutes on a free trial, no card needed to sign up.