Why does Google keep flagging my preorder products as inaccurate availability?
Google Merchant Center is flagging preorder products as inaccurate because Shopify has no native preorder status, and the fix is making one setting drive both your page and your feed.
What's going on
A merchant sets up preorders for a not-yet-released product, and the product page clearly says something like preorder, ships August 15, but Google Merchant Center disapproves the listing or flags it under an inaccurate or mismatched availability policy. Meanwhile the feed says something different: in stock, out of stock, or a stale preorder date that no longer matches the page.
The root cause is that Shopify doesn't have a built-in preorder product status. Most stores actually use inventory tracking combined with a setting that continues selling once inventory hits zero, which lets customers keep buying but doesn't tell Google, or the theme, whether that means preorder, backorder, or just in stock. Merchants then bolt a preorder badge onto the storefront using a tag, metafield, or theme section, and that badge often isn't connected to whatever value actually gets pushed into the Google Shopping feed.
The result is two systems describing the same product differently: the page might say preorder, ships in three weeks, while the feed reports in stock with no availability date, or the feed still says preorder for a product that shipped weeks ago. Google's shopping policies require that the availability attribute in your product feed match what a shopper actually sees on the landing page, and this gets checked both automatically and by manual review.
Why it happens
Shopify's inventory system is built around a simple in-stock or out-of-stock state plus one override for continuing to sell at zero inventory, not around Google's four-state availability model of in_stock, out_of_stock, preorder, and backorder. Anything more nuanced, like distinguishing a genuinely not-yet-released preorder item from a temporarily backordered one, has to be layered on top using tags, metafields, or theme customization, and that layer is rarely wired into every place availability gets displayed or exported.
Because the storefront badge and the feed value are usually generated by separate mechanisms, theme code and structured data for the page versus a sales channel or feed app for Merchant Center, they can be updated independently. A theme edit that changes preorder copy, or a product that quietly moves from preorder to in stock, doesn't automatically propagate to the other side unless someone built that connection deliberately.
Google has also tightened enforcement around out-of-stock and preorder listing requirements over time, so mismatches that used to slip through are now more likely to trigger disapprovals or diagnostics warnings.
5 ways to fix it
Make one field the single source of truth for preorder status
Pick one place to store preorder status, such as a product tag or metafield, and have everything else read from it: the on-page badge, the JSON-LD structured data availability value, and whatever feeds your Google Merchant Center listing. Don't let the storefront badge come from a theme setting while the feed reads inventory levels independently, since that's how the two quietly drift apart. If you're adding a preorder badge to a product template, make sure the same field also drives the schema.org availability output, not just the visible text.
Use the correct Google availability value, not just in stock
Google Merchant Center recognizes four availability values: in_stock, out_of_stock, preorder, and backorder. preorder is meant for items that haven't shipped to anyone yet and requires an availability_date; backorder is for existing products temporarily out of stock that you're still accepting orders for. Shopify's inventory tracking plus a continue-selling-when-out-of-stock setting keeps a product purchasable, but it doesn't tell Google which of those two states applies, so you need to set that explicitly through your sales channel app or feed app's product-level settings.
Override availability by tag using Merchant Center feed rules
If your feed source doesn't cleanly expose a preorder state, Merchant Center's feed rules let you override the availability attribute for products matching a label or tag, without touching theme code. Tag preorder products in Shopify, map that tag to a rule that sets availability to preorder along with the ship date, and you can avoid building a custom integration just for this.
If you use a dedicated feed app, configure its preorder mapping
Apps built specifically for managing Google Shopping feeds usually include their own rules for setting availability, separate from raw inventory counts. If you're already paying for one, use its availability or condition overrides tied to your preorder tag rather than relying on the default sync, which typically just mirrors Shopify's in-stock or out-of-stock status.
Recheck Merchant Center diagnostics and spot-test live pages
Mismatches tend to reappear after a theme update changes preorder wording, or after a product moves from preorder to actually in stock and someone forgets to update the tag. Check Merchant Center's diagnostics for availability-related warnings during a launch window, and periodically compare a few live preorder product pages against their corresponding feed entries to confirm the wording and dates still line up.
Bottom line
This is fundamentally a data consistency problem, not a missing feature: Shopify has no native preorder status, so it's easy for the badge on your product page and the availability value in your Google feed to come from two different sources that quietly fall out of sync. Fixing it is mostly a one-time setup exercise: pick one tag or metafield to drive both the page copy and the feed value, use the correct preorder versus backorder attribute with an availability date, and check Merchant Center's diagnostics periodically. A feed management app can help if you're already running one for other reasons, but no app decides for you which setting should be authoritative.
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.