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 errorsAvailability mismatch

When the feed says In stock but the page says sold out (or the reverse)

What the error means

Google verifies each listing by fetching the landing page and comparing the availability it finds against the feed value. When the two disagree — feed says available and the page is sold out, or the feed says unavailable and the page still sells — the item is disapproved or silently excluded.

Why Google rejects it

The feed is a promise and the page is the proof; a disagreement between them means one of them is lying to the shopper. The page-says-sold-out direction disapproves for misleading availability. The reverse is quieter: the item just stops appearing, while everything in your admin looks healthy.

One productFeed: in stockPage: sold out
One product, two truths — Google disapproves the mismatch.

How to fix it

  1. Decide the source of truth for availability per channel and make the feed read from it live — not from a cached export.
  2. Tighten the sync schedule. Daily is the minimum for stores with meaningful stock movement; faster shrinks the mismatch window.
  3. Check the "continue selling when out of stock" flag against reality: if you do not backorder, the page must not take orders at zero stock.
  4. Watch for the chronic version — a product unavailable for weeks is still "live" in the admin, so nobody rechecks it. A daily re-scan records the day each product’s availability changed.

Common causes

Variant selected on page differs from feed item

A feed item may represent a specific size, color, or variant while the landing page opens with a different option selected. Google then sees a sold-out selection even though another size is available. Send a variant-specific URL when supported and make the submitted variant the page's default selection.

Stock changes before the next feed update

The product page can update inventory immediately while a scheduled feed still contains yesterday's value. This is common when stock moves quickly or multiple systems update at different times. Compare the source inventory timestamp, page response, and most recent product data fetch for the same item.

Backorders are treated as ordinary stock

An existing product can accept orders while inventory is zero, but its feed or page may report in_stock instead of backorder. Google distinguishes backorder from preorder and requires an availability date for these cases; the expected shipping date should be visible on the landing page.

Availability changes by location

IP-based pages may show in stock in one region and unavailable in another, while the product data targets a wider country. Google expects customers in the targeted area to see consistent availability. Check geolocation rules, shipping eligibility, and the location used by the crawler.

Legacy schema or app output contradicts the visible state

A page can show Sold out while stale JSON-LD still says InStock, or the reverse. Theme markup, inventory apps, and caches may each use a separate stock source. Inspect the visible buy button, structured data, checkout behavior, and submitted availability together.

Fix it on your platform

On Shopify

  1. Open the affected product and compare the exact variant in the Google feed with its inventory at the location used for fulfillment. Do not rely on the parent product's stock total when one size or color is sold out.
  2. For variants intended to be purchasable at zero inventory, review the variant's continue-selling setting and how the feed app maps that state. If orders are not accepted, disable the setting and show unavailable consistently.
  3. For genuine preorders of unreleased products, ensure the feed uses preorder and an availability date, and that the date is visible on the product page. For existing products accepted on backorder, use backorder and its expected availability date instead.
  4. Check theme and inventory app output for availability JSON-LD, and purge storefront or CDN caches after bulk stock changes. Compare the selected variant's button and structured data.

On WooCommerce

  1. In the product Inventory tab, compare stock status, quantity, and Allow backorders for the exact variation. Confirm the storefront disables the purchase control when the item cannot be ordered.
  2. Inspect the feed plugin's availability mapping for out-of-stock and on-backorder states. Use the matching Merchant Center values and an availability date for preorder or backorder cases.
  3. Check the SEO plugin's Product Offer markup against WooCommerce stock status. If an inventory extension overrides one source, configure the feed and schema to read from that same source of truth.
  4. Purge page, object, and CDN caches after inventory updates. Test the public variation URL and checkout from a location included in your target country.

On other platforms

  1. Compare stock state in the catalog, feed integration, product page, and checkout for the same variant and delivery destination.
  2. Map preorder, backorder, in-stock, and out-of-stock states to the corresponding supported Merchant Center availability values. Show the expected date for preorder or backorder on the landing page.
  3. Remove IP-based availability changes or configure regional availability and pricing where available. A shopper and crawler in the target area should see a state consistent with the submitted product data.
  4. On custom sites, keep feed generation and Product Offer markup connected to one inventory source, then invalidate caches whenever that state changes.

How to confirm it is fixed

  1. Use a sample of affected items and record item ID, selected variant, feed availability, visible page state, JSON-LD availability, and checkout result.
  2. For preorder or backorder, verify the availability date in product data and the expected date on the landing page. Confirm the date and terms are not hidden behind a login or location prompt.
  3. Update and resubmit the product data, then use Merchant Center Diagnostics to see whether the issue remains. Google notes that diagnostics may take time to reflect changes.
  4. Run the availability check to compare public catalogue data and product-page availability markup on other products.
  5. If products are disapproved, request a review after the technical fix is live. Recheck the same variant after Google fetches the page and feed again.

A worked example

Hypothetical case: a shoe store's feed item for size 9 says in_stock, but Google lands on a product page preselected to size 11, which has sold out. Other sizes remain available, so the parent product looks healthy in the admin. The owner updates the feed link to include the size 9 variant and changes the product template to initialize that variant when the URL is opened. They also check that size 11 displays as unavailable in both the page and feed. After resubmitting the data and requesting a review, the item is checked again on the exact variant URL.

Questions

What causes a Google Merchant Center availability mismatch?
Google compares submitted availability with what it can see and what shoppers can do on the landing page. Common causes include stale feed updates, a sold-out variant selected by default, location-dependent stock, backorders reported as in stock, or structured data that disagrees with the visible buy button. Compare the same item and variant across each source.
Should I use preorder or backorder for an out-of-stock item?
Use preorder for a new product that has not been released yet. Use backorder for an existing product that is temporarily unavailable but can still be ordered for later shipment. Google requires an availability date for both, and that date should also be visible on the landing page.
Why does Google say my product is sold out when other variants are available?
The submitted feed item may point to one specific variant while the product page opens with a different, sold-out option selected. Use a variant URL where possible and preselect the exact item represented by the feed. Check the buy button and Offer markup for that same selection.
How do I fix an availability mismatch after changing inventory?
Update the product data and the page from the same inventory source, then resubmit the feed or refresh the ecommerce integration. Purge stale caches if they affect the public page. Check Merchant Center Diagnostics after its data updates, and request a review if the item remains disapproved.
Can a product be in stock in one region and out of stock in another?
Regional availability can vary, but the offer and product data need to describe the locations you target accurately. Avoid silently changing a page based on an unknown crawler IP. Use supported regional availability and pricing settings and make delivery restrictions clear to customers.
Find out if this is happening to you

Shipwork compares what your public catalogue says with what your product pages say, and reports every product whose stock state disagrees across surfaces. Free, no account, no signup. Paste your store address.

Check my store for Availability mismatch

Go deeper: Availability mismatch, explained

Other errors like this