Why does Google keep pulling my preorder products for saying "in stock" when they're not?
When a preorder app and your product page disagree about availability, Google Merchant Center treats it as misrepresentation and pulls the listing. Here's how to find and fix the actual mismatch.
What's going on
You turn on preorders for a product that's temporarily out of stock, and a few days later it's gone from Google Shopping entirely. Merchant Center's diagnostics show a disapproval for mismatched or misrepresented availability: Google thinks the product is in stock when your storefront actually shows it as a preorder or sold out. Repeated instances of this can escalate from a single item being disapproved to whole batches of products getting suppressed.
The root cause is almost never the preorder app lying on purpose. It's that Shopify's inventory settings, your theme's structured data, your preorder app, and Google Merchant Center can each read "availability" from a different place, and nothing forces them to agree. An out-of-stock item set to continue selling can still report as plain available stock. Many preorder apps only change what shoppers see on the page, like a button label or badge, without touching the schema.org markup that Google's crawler actually reads. And Merchant Center itself can override your submitted feed values with whatever its own page crawl detects, so even a correctly configured feed can get flipped back to "in stock" behind your back.
The practical result is a moving target: fixing the app's settings alone often isn't enough if the theme's structured data or Merchant Center's auto-update behavior are still out of sync, which is why merchants report the problem coming back even after they think they've fixed it.
Why it happens
Shopify separates tracked inventory quantity from the "continue selling when out of stock" setting, and a preorder app typically just switches the second one on without changing how availability is expressed anywhere else. That leaves the door open for the theme markup, the app's display logic, and the submitted feed to each keep reporting a different state.
Most Shopify themes generate structured data for products at the template level, driven by inventory settings, not by a preorder app's client-side script. Unless the app specifically documents that it rewrites this markup, the page's machine-readable availability tag can stay "InStock" even while the visible button says "Preorder," and Google's crawler trusts that markup over the button text.
Merchant Center's automatic item updates are meant to correct honest feed errors by trusting its own crawl of the live page. But when the live page's structured data is itself wrong, this feature works against a correctly configured feed, repeatedly overwriting good data with bad.
5 ways to fix it
Fix your product page's structured data first — that's usually the real source
Most Shopify themes generate the product's schema.org JSON-LD or itemprop availability tag from the variant's inventory settings, not from whatever your preorder app displays on the button. If the app only swaps the button text to "Preorder" with JavaScript, without touching that underlying markup, Google's crawler still reads "InStock" on the page even though your feed says otherwise. Check your theme's product template for the availability tag, and ask your preorder app's support team directly whether it actually updates this markup — many don't.
Turn off automatic item updates in Google Merchant Center
Merchant Center has a setting, usually found under Tools in the older interface or Settings in the newer one, that lets Google override your submitted feed values with whatever it detects by crawling your live page. If your page's structured data is wrong or just hasn't caught up yet, this setting can quietly flip a correct "preorder" or "out of stock" value back to "in stock." Turning it off forces Google to trust your feed instead of its own crawl, though it only helps once the feed value itself is accurate.
Set your inventory and preorder status deliberately, not just "continue selling"
The "Continue selling when out of stock" setting under a product's inventory options is what most preorder apps rely on, but a zero-inventory item with that setting on can still read as plain available stock rather than backorder or preorder to anything consuming your product data. If the product is genuinely a preorder, confirm wherever you manage your Shopping feed, whether that's Shopify's free Google & YouTube sales channel or a separate feed app, that it is actually submitting a preorder availability value with an expected date, not defaulting to in stock.
Check for more than one app writing to the same feed
If you've installed more than one marketing or feed app, for example a preorder app alongside a separate Google Shopping app and Shopify's own Google & YouTube channel, they can submit conflicting data for the same products. Open Merchant Center's diagnostics and look at exactly which issue is flagged and which feed or source it's coming from. Repeated misrepresentation flags are what actually get products or whole accounts suspended, so finding and removing a stale duplicate source is often the real fix rather than adjusting one app's settings.
Request a manual review once everything is corrected
After the structured data and feed values line up, use Merchant Center's request review option for the affected products instead of waiting for the next automatic crawl. Reviews are free and typically move faster than a passive re-crawl, and getting one cleared removes the misrepresentation flag from your account's history.
Bottom line
This is an alignment problem between three systems that each have their own idea of what "available" means, not a missing feature. Your theme's structured data, your preorder app's display logic, and Google Merchant Center's own crawl-based overrides all need to agree, and Google suspends listings the moment they don't. Correcting the theme markup and Merchant Center settings solves it for free in most cases; paying for a different preorder app is rarely the fix, though a one-time technical check of your theme's schema and feed setup can save a lot of guesswork if you'd rather not dig through the code yourself.
Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.