It is one of the most repeated threads among Shopify merchants: the store is live, the app says it is syncing, and yet half the catalog is missing in Merchant Center while the products that do arrive come back disapproved. Almost always these are two separate problems, with separate causes and separate fixes. Mixing them is exactly why the corrections never seem to work.
So before touching anything, split your catalog into two lists: items that do not exist in Merchant Center at all, and items that exist but are disapproved. The first list is a submission problem. The second one is a data quality problem. They never share a solution.
A. It is not in Merchant Center
You search for the item id and nothing comes up. It was never submitted: the problem is between Shopify and the app that builds the feed.
B. It is there, but disapproved
The item exists with a reason attached. The submission works; what fails is the data or a policy requirement.
A. The products that never reach Merchant Center
If you sync with a third-party app instead of the Google & YouTube channel, the first step is not to look at Shopify: it is to look at what the app actually sends. Open one of the missing products in Merchant Center and check the final item attributes. If the item is not there at all, Google did not reject it — it never received it.
From there, the usual causes are three:
Not published on the sales channel
The app reads one specific sales channel. If the product is not published on that channel, it does not exist for the app, even if it looks perfectly fine on your online store.
Zero stock
With zero stock and "continue selling when out of stock" turned off, the product stops being submitted. It is the silent cause that makes whole groups of products vanish at once.
Variants without their own link
Each variant needs its own item. If the app only sends the parent product URL, Google cannot tell sizes and colours apart and the item never arrives.
How each variant has to be submitted
| Attribute | Value |
|---|---|
id | The variant id (not the product id). |
item_group_id | The product id, shared by all its variants. |
link | The URL with the variant parameter: /products/handle?variant=1234 |
Apps that only send the parent product URL are the number one reason behind the classic "it is published in Shopify but it does not show in Google". If your catalog runs on sizes and colours, check this before anything else — and if you are still deciding how to connect the store, the Shopify connection guide covers the setup step by step.
B. The products that arrive and get disapproved
Here the method mistake is reading reasons product by product in the interface. With two hundred disapproved items you will never see the pattern. Download the report from Products → Needs attention: it gives you the exact reason per item id, and grouping by reason usually shows that almost everything comes down to two or three causes.
By actual frequency, this is what tends to come up:
| Reason | What happens | How to fix it |
|---|---|---|
| Missing GTIN on a branded product | The item has a brand but no identifier. By far the most repeated reason. | Get the GTIN from the manufacturer or supplier. identifier_exists: no is only valid for handmade, vintage or custom-made goods; using it as a blanket workaround flags the whole account. |
| Invalid images | Promotional text on the photo, watermarks, overlaid logos or placeholder images. | Use a clean product image at a sufficient size: below 100x100 px (250x250 px for apparel) it is an outright rejection. |
| Price or availability mismatch | What the feed says is not what Google crawls on the product page. | Check currency conversion apps and cart-level discounts: they are the classic reason why the displayed price and the feed price drift apart. |
| Titles that are too long | Titles over 150 characters. | Trim them to a useful structure: brand, product type and the attributes buyers actually search for, without keyword stuffing. |
| Shipping and returns not accessible | The policy exists, but it can only be read inside the checkout. | Publish shipping and return terms on pages reachable from the store itself, linked from the footer. |
Timings: nothing is instant
A good part of the frustration in these threads comes from expecting immediate results. Merchant Center works on its own schedule:
Up to 3 days for the first full read.
3 to 5 days for the item to be evaluated again.
They go through in minutes, but the approval clock does not change.
Knowing this saves you from fixing the same thing twice because you assumed the first fix did not work.
How to narrow it down in one afternoon
Take three products: one that is missing and two disapproved for different reasons. Compare the feed attributes with the store page field by field — title, price, availability, image, identifiers, link. Do not extrapolate from what you think the app sends; read what it actually sent.
Almost every time, it turns out to be one single systematic thing affecting hundreds of items — one channel not published, one variant link missing, one currency app rewriting prices. Three products are enough to find it; the remaining hundreds are the same fix repeated.
Frequently asked questions
Why are my products published in Shopify but missing in Merchant Center?
Because in most cases they were never sent. Open one of the missing products in Merchant Center and look at the final item attributes: if the item is not there at all, this is not a rejection, it is a submission that never happened. The usual causes are a product that is not published on the sales channel the app reads, zero stock with "continue selling when out of stock" turned off, or variants without their own link.
Does every Shopify variant need its own item in the feed?
Yes. Each variant needs its own item, with id set to the variant id, item_group_id set to the product id, and link including the variant parameter, like /products/handle?variant=1234. Apps that only send the parent product URL are the number one reason behind the classic "it is published in Shopify but it does not show in Google".
Can I set identifier_exists: no to skip the GTIN?
Only if the product genuinely has no identifier: handmade, vintage or custom-made goods. Using it as a blanket workaround on branded products fixes nothing and flags the whole account, not just those items.
Why do I get price or availability disapprovals if my store looks fine?
Because Google compares the feed with what it crawls on the product page, and that is where the mismatch shows up. It is very common with currency conversion apps and with cart-level discounts: the price in the feed and the price the crawler sees do not match.
How long does Merchant Center take to approve products after a fix?
Nothing is instant. A new feed can take up to 3 days for the first read, and re-reviews after a fix take 3 to 5 days. API submissions go through in minutes, but the approval clock stays exactly the same.
How Girofeeds solves it
Everything above can be done by hand, and on a small catalog it is worth doing at least once: you learn where your data breaks. The problem starts when the same systematic error affects hundreds of items and comes back with every product update. Girofeeds cleans product data and fixes Merchant Center errors from the CMS itself — Shopify, PrestaShop, WooCommerce and Magento — using AI, so the correction lives in the source data instead of being patched on top of the feed.
Fix it at the source, not in the feed
Start with the free catalog analysis: you get the list of items with issues and the reason behind each one, grouped so you can see the systematic problem instead of two hundred individual alerts.
Related: the 10 most common Merchant Center errors · product images and content · price monitoring · all Shopify guides .