Top Google Shopping Feed Errors and a Quick Remediation Playbook
The 10 Google Shopping feed errors that disapprove the most SKUs, with a 30-minute triage runbook covering diagnosis, fix order, and rollback-safe re-export.

A wave of Merchant Center disapprovals always feels worse than it is. Most catalogs sit on the same 6 to 10 recurring error families, and once you have a fix order for each one, the 200-product red wall in Diagnostics becomes a 30-minute triage. This playbook is the order we work in.
The triage order that matters
Before opening a single CSV, decide what you’re optimising for. You can fix the highest-count error first (looks good in reports) or the highest-impact error first (recovers revenue faster). For Google Shopping, impact wins almost every time, and impact comes from a small list:
- Identifier errors disapprove the SKU entirely and break Performance Max product groups.
- Mismatch errors (price, availability, currency) suspend the product and can trigger account-level warnings if they cluster.
- Image errors disapprove the SKU and are the slowest to recover because Google has to re-crawl the image URL.
- Policy errors disapprove individual SKUs but rarely cascade.
- Quality warnings don’t disapprove but suppress impressions.
Work top to bottom. A clean GTIN fix on 500 SKUs almost always recovers more revenue than a perfect title rewrite on the same SKUs.
The 10 errors that account for ~80% of disapprovals
1. Missing or invalid GTIN
The most common identifier error. A GTIN (Global Trade Item Number, UPC, EAN, JAN, or ISBN) is required for branded products with a manufacturer-assigned barcode. Google checks the GTIN against its database; an unknown or malformed value disapproves the product.
Fix order:
- Confirm the brand in your catalog matches the GTIN registration.
- For products without a real GTIN (custom, private label, vintage), set
identifier_existstonorather than inventing one. - For products with a GTIN that Google doesn’t recognise, file the GTIN with GS1 first, there’s no shortcut.
2. Price mismatch between feed and landing page
Google crawls your landing page and compares the <meta itemprop="price"> or structured data price against your feed value. A mismatch over the tolerance (currently around 2%) triggers price_mismatch. The same applies to availability_mismatch.
Fix order:
- Add
sale_price_effective_dateto all promotional pricing. - Use server-side currency formatting that matches Merchant Center’s feed currency exactly (no thousands separators where the locale doesn’t use them).
- If you run A/B tests on price, set the test variant landing pages to
noindexor exclude them from your feedlinkfield.
3. Image link issues
image_link_broken, image_size_too_small, image_promotion_overlay, and image_link_pending_crawl are four different failures with the same surface symptom: the SKU is disapproved and your impressions disappear.
Fix order:
- Minimum 800×800px for accurate rendering on mobile. Square is safest.
- No overlays: no logos, watermarks, text, “Free shipping” callouts, or promotional badges. Google’s policy is unambiguous on this and the disapproval rate at the 2026 enforcement level is harsh.
- Serve image URLs from a CDN with stable hostnames. If image URLs change on every deploy, you’ll wait through a full re-crawl cycle every time.
4. Title and description quality
This is the slow killer. It rarely disapproves the SKU outright, but it cuts impressions silently. Google’s product data specification recommends titles that lead with brand, then product type, then defining attributes (size, colour, material). Generic or stuffed titles get demoted.
Fix order:
- Audit titles longer than 150 characters and shorter than 20.
- Remove ALL-CAPS, promotional language (“BEST”), and repeated punctuation.
- Run the catalog through a title rewrite pass that follows the brand → product type → attribute pattern. AI title optimisation (the kind we automate in AI Shopping Feeds) makes this a one-pass job for catalogs over 1,000 SKUs.
5. Missing or wrong google_product_category
When you leave google_product_category empty, Google guesses based on title and description. The guess is often too broad, which loses you category-specific surfaces (Shopping ad formats with category filters, AI Max for Shopping’s category-driven query matching).
Fix order:
- Map every SKU to a leaf category from Google’s taxonomy.
- Use Merchant Center’s category-level performance report to find under-mapped categories. If a category has 0 impressions, the mapping is probably wrong.
6. Promotional overlay on image
Worth calling out separately because it accounts for a huge share of repeat disapprovals. Marketing teams add “20% off” badges to product images for site merchandising and forget that the same image flows into Merchant Center.
Fix order:
- Keep two image fields in your CMS: a marketing image (with overlays) and a clean product image (no overlays). The feed should always pull the clean version.
- If you don’t have separation today, exclude any product whose primary image was uploaded after the last promo campaign launched.
7. Shipping not configured
You’ll see missing_shipping or shipping_destination_mismatch for any country where Merchant Center can’t calculate a shipping cost. This blocks the SKU from showing in that country entirely.
Fix order:
- Set account-level shipping for every country you sell to, even if it’s flat-rate.
- For per-SKU shipping (heavy items, dangerous goods), use the
shippingattribute in the feed, don’t try to override at the account level. - If you sell in multiple currencies, validate
shipping_weightunits (lb/kg) match each region.
8. Returns policy not configured
Same shape as shipping. As of late 2025, Google enforces a returns policy as a soft requirement; absence triggers missing_return_policy warnings and, in some categories (apparel, electronics), a disapproval.
Fix order:
- Configure account-level returns in Merchant Center Settings > Shipping and returns.
- For categories with no returns (food, personalised goods), set return policy to
no returns acceptedexplicitly.
9. Tax setup wrong (US)
For US sellers, missing_tax is the silent disapproval. Without a tax setup, your SKUs disappear from California and several other tax-required states.
Fix order:
- Use Google’s “automatic tax” setting if your prices already include tax-equivalent values.
- For destination-based tax, upload state-level rates in Merchant Center.
10. Restricted content (claims, regulated categories)
disapproved_for_policy covers everything from medical claims (“clinically proven”) to restricted categories (CBD, alcohol in certain regions, weapons). The error itself is one line; the fix can take days because it requires content rewrites and category-level approvals.
Fix order:
- Pull every disapproved SKU into a single sheet sorted by policy code.
- Cluster by claim type: medical, financial, legal, restricted goods.
- Rewrite copy to remove unverifiable claims. Apply for category approval (Google requires per-account approvals for several regulated categories).
The 30-minute remediation runbook
Use this when you wake up to a flood of disapprovals. It assumes you have AI Shopping Feeds or a comparable feed manager in the loop; if you’re working directly in Merchant Center it’ll take longer.
Minutes 0-5, pull and group
Download the Diagnostics CSV. Group by error code. Look at the top 3 only. Resist the urge to start fixing SKU by SKU.
Minutes 5-15, fix identifiers
If GTIN, MPN, brand, or identifier_exists is in the top 3, fix it at the catalog source. Push a supplemental feed with just the corrected rows for the affected SKUs. Watch the first 50 SKUs return to Approved in the next fetch cycle (usually 1-4 hours).
Minutes 15-25, fix mismatch and image
Run a price/availability sync. If image links are in the top 3, generate a fresh image URL list and warm the cache by hitting each URL once before Merchant Center re-crawls.
Minutes 25-30, push and document
Re-export the full feed only after the 50-SKU validation slice is approved. Document the error code, the root cause, and the fix command in a runbook so the next occurrence is a 5-minute job.
What to avoid
Three things will make a disapproval wave worse:
- Patching the export file instead of the source. The next export overwrites the patch.
- Bulk-deleting disapproved SKUs to clear the dashboard. They re-enter on the next sync and you lose the diagnostic history.
- Pushing a full feed before the validation slice is approved. If your fix is wrong, you’ve now disapproved 1000 SKUs instead of 50.
Where automation actually helps
The single biggest leverage point is collapsing the catalog-source-to-Merchant-Center path so the fix lives in one place. AI Shopping Feeds runs feed audits before every export, catches the top 10 error families pre-publish, and keeps a supplemental fallback path so corrections deploy without a full re-export. For teams running 5,000+ SKUs across multiple channels, that’s the difference between weekly disapproval fire drills and a stable approval rate above 99%.
How to keep this from happening next month
Run the diagnostics export weekly even when nothing is wrong. The early warning is usually a slow climb in a single error code over 3-4 days, catch it at 50 SKUs instead of 500. Pair it with a Merchant Center feed automation cadence that publishes during low-traffic windows so you can roll back without revenue impact.
Sources
- Google Merchant Center Help, Product data specification
- Google Merchant Center Help, Fix disapproved products
- Google Shopping policies, Image requirements
- Google Merchant API, products.update reference
Why wait? Try it free today.
Stop managing feeds manually. Start optimising with AI in 30 seconds.
- 100% free forever, no credit card required
- 1 brand, 1 feed, 100,000 products per feed
- Full AI Product Optimisation, Rule Engine, and 200+ channel exports
- Pay only for AI credits when you need them