A

Structured data

HIGH

Offer `availability` is a Schema.org URL

Each Offer's `availability` is a canonical Schema.org IRI (InStock / OutOfStock / PreOrder / BackOrder). Agents suppress out-of-stock or ambiguous items; a valid availability URL keeps you eligible.

What this check looks for

Agents read availability from JSON-LD to decide whether to surface a product in shopping flows. Free-text values like `"in stock"` aren't recognized — Google and ChatGPT require one of the canonical Schema.org IRIs. We accept http or https with or without trailing slash. Coverage ≥ 90% across PDPs with Offers passes; ≥ 50% partial; otherwise fail.

Which AI surfaces it affects

  • Google AI Mode (UCP)100
  • ChatGPT (ACP)90
  • Microsoft Copilot70
  • Meta AI70
  • Perplexity60

Weighted against the live specs — ACP 2026-04-17, UCP 2026-04-08.

How to fix it

Use a canonical Schema.org availability IRI on every Offer

Shopify

Developer
  1. In your Product JSON-LD template, render `availability` as `"https://schema.org/{% if product.available %}InStock{% else %}OutOfStock{% endif %}"`.
  2. For pre-orders, conditionally render `PreOrder` based on a product tag.

BigCommerce

Developer
  1. In `templates/components/products/product-view.html`, render `availability` as `"https://schema.org/{{#if product.stock_level}}InStock{{else}}OutOfStock{{/if}}"`.

WooCommerce

A few minutes
  1. Yoast / RankMath emit the correct IRI when WooCommerce stock management is enabled.
  2. Settings → Products → Inventory: enable `Manage stock`; per-product Stock status drives the emitted IRI.

Custom / headless

Developer
  1. Map your stock state to the four canonical Schema.org IRIs.
  2. Render the URL exactly — extra whitespace or trailing characters break the match.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Example Hat",
  "offers": {
    "@type": "Offer",
    "price": "49.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}
</script>

The spec it's pinned to

  • schema.org/ItemAvailability

    schema.org defines `availability` as an ItemAvailability IRI — one of InStock, OutOfStock, PreOrder, BackOrder. Free-text values are not recognized.

  • Google merchant listing — Offer availability

    Google's merchant listing rich result requires an `availability` value on the Offer, expressed as a canonical Schema.org ItemAvailability IRI.

schema.org/ItemAvailability

Does your store pass this check?

Run the full audit — 82 checks across five AI shopping surfaces. Most tools only check whether you get mentioned; we check whether an agent can buy from you.

Related structured data checks

← All 82 checks