Shopify gets a store onto Google faster than any other platform: install the Google & YouTube channel, connect a Merchant Center account, and the catalogue syncs on its own. The problems start after that, and they are specific enough that knowing them in advance saves the week most merchants lose to them.
What Shopify sends, and what it leaves for you
The channel maps Shopify's fields to Google's automatically — title, description, price, availability, images, variants. Three things it cannot invent, and every one of them is a disapproval:
- The barcode. Google needs a GTIN — or a brand plus MPN for products that genuinely have none — to match your product to its catalogue (Shopify documents this). It lives in the barcode field on each variant, which holds a UPC, EAN, ISBN or GTIN, and which most stores leave empty because nothing else in Shopify needs it. Our GTIN guide covers what to do when you truly don't have one.
- At least one image per product. A product without one will not sync at all — it fails before Google ever sees it.
- Availability on both sales channels. A product has to be published to the Online Store and to Google & YouTube. Published to only one, it surfaces as an “unavailable landing page” error, which reads like a broken website and is really a checkbox.
The traps that are specific to Shopify
Variants are the whole catalogue. Shopify thinks in products with variants; Google thinks in individual items that declare they belong together. Each variant is its own row in Merchant Center, with its own barcode and its own price. A store with 300 products and four sizes each is a 1,200-item feed, and an identifier missing on one size is one disapproved item, not one disapproved product.
Markets change the price, and the feed has to follow. If you sell into several countries with Shopify Markets, each market can have its own price, currency and tax treatment. Google compares the feed against the landing page for that country, so a feed that carries one price into a market that shows another is a price mismatch — the single most common way a healthy-looking Shopify store gets its products pulled.
Shipping comes from one profile. Only the rates in your General shipping profile reach Google, and the country you target needs a shipping zone in it. Custom profiles for heavy or fragile goods are invisible to the channel, which produces missing-shipping errors on exactly the products you were most careful about.
The part nobody plans for: freshness
Google expires product data that has not been refreshed. Shopify's own documentation describes the guarantee plainly: Google enforces a strict 30-day expiry policy on synced product data, and the channel updates your products within that period.
Thirty days is the right promise for a catalogue that rarely moves. It is the wrong one for a flash sale, a sell-out, or a price change you made this morning — and price and availability are precisely the two fields Google checks against your live page before it disapproves anything. The gap between “the feed is correct” and “the feed is current” is where most Shopify disapprovals actually live, and it is invisible in the dashboard, because nothing is broken.
Checking a Shopify store without installing anything
You do not need a feed, an app, or an account to see what Google would object to. Every Shopify storefront publishes its catalogue as a public product list, so pasting your store address into the free feed check is enough — we read it directly. That works on headless storefronts too, where the catalogue is served from the underlying Shopify origin.
One honest limit: the public list does not carry barcodes (they are a field on the variant that the storefront does not expose), so identifier checks are skipped and the report says so rather than guessing. For those, connect the store or check a real feed.
How FeedRobin handles it
FeedRobin connects to Shopify over its API and listens for webhooks, so a price or stock change reaches us in minutes rather than inside a thirty-day window, and every feed is rebuilt when a channel fetches it — Google, Meta, Microsoft and the European comparators all read today's catalogue, not the last export. Variants carry their own identifiers and group correctly, market prices stay with their market, and if your store is unreachable the last good snapshot keeps serving instead of an empty file.
Sources
Shopify Help Centre: syncing your products to Google, Google & YouTube channel requirements and understanding barcodes; Shopify dev docs for the ProductVariant barcode field. Google Merchant Center Help: the product data specification and the GTIN attribute.