Google Merchant Center: Why Your Products Silently Drop Out of Shopping
The nastiest thing about Merchant Center is that products get rejected silently. Nobody sends you an angry email. They simply stop showing in Shopping, your reach sags, and for a week you can't work out why traffic dropped. You dig into Diagnostics and half the catalog is disapproved.
Let's go through what breaks feeds most often.
GTIN — the main source of pain
A GTIN is the product's barcode. For branded products with a manufacturer barcode it's mandatory. No GTIN where there should be one means an identifier error and a rejected product.
But there's an inverse trap. For unique products without a barcode (handmade goods, your own brand), a GTIN physically doesn't exist. In that case you have to tell Google explicitly: identifier_exists = false. Don't tell it, and Google waits for a GTIN, doesn't find one, and rejects the item. Set it wrongly on a product that does have a GTIN, and that's an error too.
This is where the confusion usually sits: people either forget the GTIN or set identifier_exists = false on a branded product that is required to have a barcode.
Availability mismatch
The feed says "in stock" and the product page says "out of stock." Google cross-checks the feed against the page via structured data, sees the discrepancy and rejects the item — it doesn't want to send people to a product that isn't there.
The cure is synchronization: the schema.org/Product markup on the page has to match what's in the feed. If your stock levels change, the feed and the markup both need to update together rather than live separate lives.
Price mismatch
Same logic. One price in the feed, another on the page, and you get a disapproval. The reasons are usually boring: tax calculated differently, a discount applied on the site but not in the feed, feed currency not matching the page currency, rounding.
It's infuriating, because technically "everything is right" — it's just right in two different ways in two places. Compare the feed price against the final price on the page, the one the buyer actually sees.
Brand and MPN
For branded products the brand field is mandatory. Leave it empty and you get an error. MPN (the manufacturer part number) is needed less often, but paired with brand it satisfies the identification requirement when a GTIN isn't available.
Where to fix all of this
Diagnostics in Merchant Center shows every error product by product. And feed rules let you fix a lot directly inside Google without touching the site: rename fields, set default values, override availability. For quick edits it's a lifesaver — no need to push a ticket through development.
The take: half of all "dropped Shopping traffic" is neither Google's algorithm nor your competitors — it's silently rejected products in your own feed. Before you raise bids and blame the auction, open Diagnostics. The answer is often sitting right there, fixable in an hour with a feed edit.
SKAdNetwork and SKAN 4.0: Why Your iOS Attribution Lies, and What to Do About It
SKAN 4.0 without the fluff: conversion values, three postback windows, the lock window. How to set up iOS attribution for a fintech app.
Read →Enhanced Conversions for Leads: How to Stop Paying for Leads That Never Make You Money
Set up Enhanced Conversions for Leads in Google Ads via GTM and server-side upload. Send CRM deal status back so Google optimizes for money, not forms.
Read →Consent Mode v2: Do You Need It in the CIS, or Is It Another Google Scare Story?
Consent Mode v2 in GTM without the panic: Basic vs Advanced, when a CIS project really needs it, and how many conversions you lose without it.
Read →