Open Shopify admin and a product shows plenty of inventory, ready to sell. Open Google Shopping and the same product shows "out of stock," greyed out, buried below every in-stock competitor — or it doesn't show at all. Nothing in Shopify is wrong. Shopify and Google Merchant Center are simply two separate systems reporting availability on two separate schedules, and when they drift apart, Shopify has no way to tell you.
The reverse happens just as often and is worse: Google still shows a product as in stock after it's actually sold out. Shoppers click an ad or a Shopping listing for an item that isn't there, land on a sold-out page, and bounce — and you've paid for or earned a click that could never convert.
Why two "sources of truth" stop agreeing
Shopify's inventory count is authoritative and updates the instant a sale, a restock, or a manual edit happens. But Google Merchant Center doesn't read that count directly — it reads whatever your product feed tells it, and the feed is a separate pipeline with its own update cadence:
- Scheduled fetches instead of live pushes. Some feed setups pull a fresh file on a fixed schedule (say, once every 12 or 24 hours) rather than pushing changes the moment inventory shifts. Between fetches, Google is working from a snapshot that's already stale.
- Two feed sources disagreeing with each other. Stores that run both Shopify's native Google & YouTube channel app and a legacy or third-party feed app can end up submitting the same product twice, with the two apps reporting different availability for the same GTIN.
- Structured data on the page contradicting the feed. Google cross-checks your feed's
availabilityvalue against what it can verify on the live landing page, including theoffers.availabilityfield in your theme's JSON-LD. If a theme caches that value or a variant-level app updates the visible "Sold out" badge without touching the schema, the page and the feed tell Google two different stories. - Variant-level stock not reflected at the product level. A product with ten variants where nine are sold out and one remains can report availability inconsistently depending on which variant the feed treats as canonical, especially after a variant is deleted or reordered.
Want to know if your feed and your live pages currently agree? We compare what your product pages say against what your Merchant Center feed reports and flag drift automatically — read-only, no admin access, about 2 minutes. → free scan
Why this is invisible in Shopify admin
Shopify admin only ever shows you Shopify's own view: current inventory, current variant status, current "Active" listing state. It has no visibility into what Google Merchant Center currently believes about that same product, because that belief lives entirely on Google's side, driven by a feed pipeline Shopify doesn't monitor after it hands the data off. A product can sit in Shopify admin looking perfectly healthy while its Merchant Center listing is quietly suppressed, disapproved, or showing the wrong stock state — and there is no notification for that gap inside Shopify itself. You only find out from Merchant Center's own diagnostics, if you happen to check them.
What it costs you
In-stock product showing as out of stock: Google's Shopping algorithm deprioritizes listings marked unavailable, so the product effectively disappears from Shopping results even though it's fully sellable. You lose the impressions and the sale without any error being raised anywhere.
Out-of-stock product still showing as in stock: worse, because you're actively spending impressions — and often ad budget — sending shoppers to a product they can't buy. Beyond the lost click, a pattern of "available" listings that turn out to be unsellable is exactly what Google's misrepresentation policy is designed to catch, and repeated mismatches can escalate from a warning to a full account-level suspension.
How to check your own store
- In Google Merchant Center, open Products → Diagnostics and filter for availability-related warnings; this shows exactly which items Google currently believes are mismatched.
- Pick five of your currently out-of-stock products and view each one's page source — search for
"availability"inside the JSON-LD block and confirm it saysOutOfStock, notInStock. - If you run more than one sales-channel or feed app connected to Google, check Merchant Center's Apps and Products tabs for duplicate submissions of the same item under different feed sources.
- Check your feed's update frequency: in Shopify's native Google & YouTube app this is automatic on inventory change, but a secondary feed app may be on a manual or scheduled sync — confirm it isn't running on a 24-hour-or-longer delay for fast-moving SKUs.
This is the same category of failure as the redirect-to-homepage mismatch and the price mismatch trap we've covered separately: Merchant Center is comparing your feed's claims against the live reality of the page, and any gap between the two — price, landing page, or availability — gets treated as misrepresentation, not as a stock update.
The fix: one source of truth, pushed live
- Use a single feed source. If you're running Shopify's native Google & YouTube channel alongside a separate feed app, pick one and disconnect the other — duplicate submissions are the most common cause of contradictory availability for the same product.
- Confirm your feed pushes on inventory change rather than on a fixed schedule, especially for products that sell out quickly.
- Keep theme JSON-LD in sync with real stock — this usually means confirming your theme (or the inventory app you use) actually updates
offers.availabilitywhen a variant sells out, not just the visible "Sold out" label on the page. - Re-check after any theme or app change. A theme update or a new inventory app is the single most common moment this drifts, since it's exactly when the code that writes the schema gets touched.
Next in this cluster
Not sure if this is happening on your store right now?
Scan my store for free