Sub-grade spoke

Availability Signals — do agents see what's actually in stock?

Agents recommending products to users need to know what's in stock right now. Schema.org's itemAvailability field is the canonical signal — in stock, out of stock, preorder, discontinued — and most e-commerce sites either skip it or let it go stale. The cost is real money: $1.2 trillion lost globally each year to stock-outs, including the share where the inventory existed but the agent didn't know it.

By Chris Mühlnickel · 2026-05-16

What is Availability Signals?

Availability Signals is whether your product pages emit accurate, up-to-date Schema.org itemAvailability values (InStock, OutOfStock, PreOrder, etc.) and surface stock status in extractable text — letting agents recommend only what's actually purchasable.

By the numbers

Why it matters

Agents recommending products to users need to know what's in stock right now. Schema.org's itemAvailability field is the canonical signal — InStock, OutOfStock, PreOrder, Discontinued — and most e-commerce sites either skip it or let it go stale. The cost is real money: $1.2 trillion lost globally each year to stock-outs per the IHL Group / Mirakl number, including the share where the inventory technically existed but the agent layer couldn't tell. An agent that recommends an out-of-stock item to a user pays the trust cost twice — once for the bad recommendation, once on the next query when the model weights the source lower for prior unreliability.

Only 19% of Product-schema implementations include the Offer block that exposes availability. The Digital Applied 5K-site audit puts the gap explicitly: four out of five e-commerce sites with Product markup stop short of the Offer object — meaning their schema technically validates but doesn't carry the field agents actually read for shopping comparison. Closing the gap is mostly mechanical: the data already exists in the inventory system, the Offer schema just needs to surface it. The leverage is being citable for in stock queries rather than being routed around for opaque availability.

The 35-day stock-out duration sets the freshness bar. Opensend's data on average stock-out duration is 35 days — over a month of misrepresented inventory if the schema isn't updating with the catalog. A daily-refresh feed is wrong for most of every day in any high-velocity catalog. Real-time webhook-driven updates triggered by inventory changes are the pattern that survives the agent-comparison cadence; scheduled batch updates are the pattern that quietly trains agents to distrust the source.

Out-of-stock pages have asymmetric value. Hiding out-of-stock pages kills the indexed URL and loses its citation weight; keeping them live with accurate OutOfStock schema preserves the URL's standing and signals reliability to agents reading the state. The asymmetry matters because the page often comes back into stock — and an indexed URL with accurate state through the out-of-stock window resumes its position immediately, while a deleted-and-recreated URL has to rebuild every signal from scratch.

Where it's heading

Real-time availability becomes the default expectation. Agent commerce surfaces (ChatGPT Instant Checkout, Google's Gemini shopping, Perplexity Shop) all cite availability in the recommendation. Stores that lag reality train their agents to route around them; stores that match reality compound the trust on each successful recommendation. The cadence target moves from update daily to update on every inventory change over the next 18 months.

Availability signals expand beyond binary in-stock-or-not. Schema.org's existing values cover the cases the e-commerce ecosystem has historically needed, but agent commerce is pushing for richer surface: available in 3 days, limited stock — 4 remaining, restocking weekly. Expect Schema.org extensions or community conventions that capture these nuances, and sites with basic availability today are positioned to layer them on cheaply.

Webhook-driven freshness becomes mandatory. Scheduled batch updates that lag inventory by hours are the current default and the source of most schema-vs-reality drift. Webhook-driven schema updates triggered at the inventory-change moment become table-stakes — first across the major platforms (Shopify, BigCommerce, Magento), then everywhere.

Common mistakes

  • Skipping `itemAvailability` entirely. The Product schema validates without it, so the gap is silent — and the schema fails its actual purpose for agent commerce the moment availability matters.
  • Daily-refresh feeds against high-velocity inventory. The 35-day average stock-out duration means a 24-hour refresh window can be wrong for most of every day. The fix is webhook-driven incremental updates, not a faster batch.
  • Hiding out-of-stock pages instead of marking them. Deleting the URL kills its citation weight; the right pattern is keeping the page live with OutOfStock schema and a notify-when-available form.
  • Single Offer block on multi-variant products. A Product with one Offer mis-represents the catalog the moment any variant is out of stock. Use ProductGroup with per-variant Offers to carry the right availability per SKU.
  • Inconsistency between the [product feed](/learn/clarity/product-feed) and per-page schema. Feed says InStock, page says OutOfStock — agents that catch the mismatch down-rank both surfaces, and the downstream trust cost compounds.

Frequently asked

What values does `itemAvailability` accept?

The canonical Schema.org values: InStock, OutOfStock, PreOrder, BackOrder, Discontinued, LimitedAvailability, SoldOut, InStoreOnly, OnlineOnly. Most e-commerce uses InStock and OutOfStock; the others matter for specific catalog patterns (PreOrder for upcoming releases, BackOrder for restocking timelines). Use the full URI — https://schema.org/InStock — not just the label.

Should I keep showing pages for out-of-stock products, or hide them?

Keep them. Hiding the page kills the indexed URL and loses its citation weight. The right pattern is keeping the page live with availability: OutOfStock (and ideally a notify-when-available form for users). Agents reading the schema understand the state and don't recommend the item — they may still surface the page in similar products context, which protects the SEO and AAIO value of the URL.

How fresh does availability data need to be?

As close to real-time as your inventory turns. The 35-day average duration that stocked-out products stay unavailable means even daily refresh is too slow for most high-velocity catalogs — by the time the daily feed runs, the item has been wrong for hours. Webhook-driven schema updates triggered by inventory changes are the table-stakes pattern.

What about variants — sizes, colors, configurations?

Each variant needs its own Offer block with its own availability. A single Product with one Offer that says InStock misrepresents the catalog the moment any variant is out of stock. Use ProductGroup with variant Product entries (each with its own Offer) to model the variant-level availability accurately.

Does this affect AI Overviews and ChatGPT shopping?

Yes, directly. Both surfaces consume Schema.org/Product Offer data for shopping comparison, and they cite availability in the answer. A site recommending an out-of-stock item to a user costs the agent's trust on the next query — and agents weight prior accuracy when ranking sources.

What's the cost of bad availability data?

The IHL Group / Mirakl figure puts global stock-out losses at $1.2 trillion per year — and that's just the direct lost-sale share, not the downstream trust cost. Stale availability also burns agent-channel trust: a recommendation that turns out to be unavailable trains the agent to weight your store lower for similar queries in the future.

How does this relate to the Product Feed?

Both signals need to match. The bulk feed carries availability at the channel level (Google Merchant Center, ACP, UCP); the per-page schema carries it at the URL level. Inconsistencies fork the agent's view — a feed that says InStock and a page that says OutOfStock costs credibility on both surfaces.