ShipworkSite inspection
Availability

Crawlability

PaginationAre paginated pages set up right?Internal searchIs site search eating crawl budget?URL parametersAre parameters creating duplicates?Log analyserWhat does Googlebot actually crawl?Robots builderNeed a robots.txt file?Soft 404sAre pages “not found” but returning 200?JavaScriptCan crawlers see it without running JS?FreshnessIs my site quietly going stale?Robots.txtDoes robots.txt say what I think?

Indexing

Sitemap lastmodAre my sitemap dates valid?SitemapIs my sitemap actually fetchable?IndexingIs Google allowed to index my pages?CanonicalsIs Google indexing the wrong URL?Index signalsDo sitemap and index signals agree?Sitemap generatorNeed a sitemap.xml for my site?Bulk URL statusWhere does each of these URLs really land?Redirect builderNeed the redirect rules?RedirectsAre my URLs answering directly, over HTTPS?

On-page

Keyword ideasWhat are people searching for?SERP previewHow does my page look in Google?Content qualityAre your pages too thin or too alike?Image weightAre images slowing the page?CannibalizationAre pages competing with each other?On-page checkDoes the page use its target phrase?ImagesAre my images accessible and loading?Meta tag builderWhat should my title and share tags say?DuplicatesDo my pages compete for one query?

Links

Orphan pagesWhich pages can no link reach?Link graphHow deep do your pages sit?Anchor textDo links say what they point at?Outbound linksAre external links still alive?Broken linksAre internal links sending visitors nowhere?

Structured data

Rich resultsIs my markup eligible for a rich result?Structured dataIs my product schema valid?Schema coverageDo my key pages carry structured data?Social previewHow does my page look when shared?Schema vs pageDoes markup match the page price?Schema builderNeed valid JSON-LD?

International

Hreflang sitemapDo page and sitemap hreflang agree?HreflangDo my language versions link back?Hreflang builderNeed the hreflang tags?Page DoctorWhy is this page not doing well?Redirect planMy site has dead links — what redirects do I write?Sitemap diffIs anything missing from my sitemap?Robots simulatorWhat does my robots.txt actually block?Can Googlebot?Can Googlebot fetch this URL?
Every error, explainedGuides
Pricing Learn Error guides Run free audit

+1 free check

Welcome to Shipwork

Sign in free and your next check this month is on us.

Continue with GoogleContinue with email

We email you a 6-digit code. No password.

No card needed. Reports and watches follow you to any device.

All errorsInaccurate availability status

Why Shopify pre-orders and zero-stock products trigger inaccurate availability

What the error means

The feed value for availability disagrees with the landing page at the moment Google verifies it. On Shopify the classic structural case: products at zero inventory with backorders enabled are emitted as InStock by the product structured data, so the page says buyable while the inventory says zero — and every verification fails.

Why Google rejects it

Availability is compared twice: feed against page, and page against what a shopper can actually order. The Shopify case is structural, not a mistake you made: the Google & YouTube app and the theme markup both report InStock for zero-inventory backorder products, and Shopify’s systems do not emit the BackOrder status. Fixing it needs a decision about the source of truth, not a manual edit that the next sync overwrites.

Zero stockPage: buyableFeed: out of stock
The Shopify backorder gap: buyable page, zero inventory.

How to fix it

  1. Decide per product whether backorder is real. If it is not, turn off "continue selling when out of stock" — the page must not take orders at zero stock.
  2. For genuine pre-orders, set availability to preorder with an availability_date, so the feed and the page agree on a state Google accepts.
  3. Check what the page markup says for zero-stock products: if the structured data says InStock while checkout blocks the sale, that mismatch is the finding.
  4. Tighten the sync schedule and let automatic item updates handle the small residual drift — but fix the structural cases first, because a scheduler cannot fix a lie.
  5. Watch the catalogue daily: this failure recurs with every stock change, and the watch records the day each product’s availability story changed.

Common causes

Backorders on at zero stock

"Continue selling when out of stock" is enabled, inventory hits zero, and the page keeps an active add-to-cart button. The structured data says InStock, the feed may say out of stock, and whichever one Google checks disagrees with the other.

Pre-orders sold as in stock

A product that ships in six weeks is listed as in_stock because the platform has no pre-order state by default. Google expects preorder with an availability date for items that cannot ship now.

Variants with different stock

The default variant is sold out but others are available, or the reverse. The page loads the first variant, the feed item refers to another, and the availability each one reports does not match.

Stale cache or slow feed sync

The page is served from a CDN cache that still shows the old stock state, or the feed updates once a day while stock moves hourly. The mismatch window is the time between a stock change and the next fetch.

Apps that override the buy button

Pre-order, back-in-stock and wholesale apps change what the button says with JavaScript. Google may read the server-rendered markup while shoppers see the app's version.

Fix it on your platform

On Shopify

  1. Open each affected product, go to the variant's inventory settings and decide whether "Continue selling when out of stock" is real. Turn it off where you cannot actually fulfil backorders.
  2. For genuine pre-orders, use a pre-order app or feed rule that sends availability preorder plus availability_date to Merchant Center, and make sure the product page states the ship date in text.
  3. View the page source of a zero-stock product and search for "availability" in the JSON-LD. If it says InStock while the product cannot ship, that template or app is the source to fix.
  4. In the Google & YouTube app, confirm products sync and that the last sync time is recent.

On WooCommerce

  1. In the product's Inventory tab, check stock status and "Allow backorders". Set backorders to "Do not allow" unless you truly accept them.
  2. Check which availability your feed plugin sends for onbackorder products and map it to backorder or preorder rather than in_stock.
  3. Confirm your SEO plugin's Product schema reads the same stock status the product page shows.
  4. Purge the page cache after bulk stock updates so crawlers see the new state.

On other platforms

  1. Make the feed read stock from the same source that controls the product page, not from a nightly export.
  2. Map every internal stock state (backorder, pre-order, discontinued) to one of Google's values: in_stock, out_of_stock, preorder or backorder.
  3. Make sure the structured data availability, the visible page text and the feed agree for every variant.

How to confirm it is fixed

  1. Pick three affected products and compare, side by side, the feed availability in Merchant Center, the visible page text, and the availability value in the page's JSON-LD.
  2. Run the availability check to find other products with the same disagreement.
  3. Use Search Console URL Inspection's live test on one product to confirm Google receives the updated markup.
  4. Wait for the next feed fetch and product recrawl before judging; Merchant Center keeps the old status until Google checks again.

Questions

What does "inaccurate availability status" mean in Merchant Center?
Google compared the availability you submitted with what it found on the product page, or with what a shopper could actually do there, and they disagreed. The item can be disapproved until the two match. It is a data-consistency problem, not a penalty.
Should I use backorder or preorder for items I am waiting on?
Use preorder for products that have not been released or are not yet available to ship, and backorder for products that are temporarily out of stock but can be ordered now and shipped later. Both should include an availability date, and the product page should say the same thing.
Does Shopify send backorder status to Google?
Not by default. Products that keep selling at zero inventory are generally reported as in stock by the default theme markup, which is why this error is common on Shopify stores. A feed rule or app is needed to send backorder or preorder.
Will automatic item updates fix availability mismatches?
Automatic item updates can correct small, short-lived differences by using what Google sees on your page. They do not fix a structural problem such as a page that always claims in stock at zero inventory. Fix the source first, then let updates handle the drift.
How fast does Google recheck availability after I fix it?
It depends on your feed schedule and Google's recrawl of the page. Updating the feed more often and using the Content API or scheduled fetches shortens the delay. Expect the status to clear over days rather than minutes.
Find out if this is happening to you

Shipwork reads your public catalogue and the availability markup on your product pages, and reports every product whose stock state disagrees across surfaces — including the zero-inventory-but-buyable Shopify case. Free, no account, no signup. Paste your store address.

Check my store for Inaccurate availability status

Go deeper: Availability mismatch, explained

Other errors like this