Skip to content

EVAL-004Compare

Availability explicit

Checks that product pages state stock availability in words or structured data an AI agent can read, per variant where there are variants.

What we check

On each sampled product page we look for a schema.org availability value on every Offer in the Product JSON-LD, and for stock wording in the page text ("In stock", "Sold out", "Auf Lager", "Op voorraad" and equivalents in several European languages). For products with variants we look for availability per variant, and we check that structured data and page text do not contradict each other.

Why it matters

An agent asked to buy needs to know whether the chosen size or colour can be ordered. A coloured dot with no text, one stock line for ten sizes, or "ask in chat" gives it nothing to act on.

How we check

We read up to 3 product pages. FAIL: a page has neither availability on all its JSON-LD offers nor any stock wording; if it defers instead ("ask in chat", "check with the manager", "check your local store"), we quote it. Deferral wording is only considered when nothing is stated, and chat widgets, dialogs and live regions are ignored. WARN: all offers agree on one state and the page states only the opposite; or a product with more than one variant has no per-variant availability. Per-variant availability counts when options carry data-availability, data-in-stock, data-stock or itemprop="availability", when unavailable options are disabled, when two or more options carry stock words, or when there is an offer with availability for every variant. PASS otherwise. Text in a closed accordion and image alt text count. SKIPPED when no product pages were captured.

How to fix it

  1. State stock in words ("In stock", "Out of stock", "Ships in 3 days"), not only as a coloured badge or an image without alt text.
  2. Set offers.availability to a full schema.org URL such as https://schema.org/InStock, one Offer per variant.
  3. Disable unavailable options in your variant selector, or mark each option's stock state.
  4. Replace "ask in chat" or "check with the manager" with a stock status.
  5. Keep JSON-LD availability and on-page wording in agreement.

What good looks like

<p class="stock">In stock</p>
<label for="size">Size</label>
<select id="size" name="size">
  <option value="s">S</option>
  <option value="m">M</option>
  <option value="l" disabled>L (sold out)</option>
</select>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Linen shirt",
  "offers": [
    { "@type": "Offer", "sku": "LS-S", "price": "49.00", "priceCurrency": "EUR", "availability": "https://schema.org/InStock" },
    { "@type": "Offer", "sku": "LS-M", "price": "49.00", "priceCurrency": "EUR", "availability": "https://schema.org/InStock" },
    { "@type": "Offer", "sku": "LS-L", "price": "49.00", "priceCurrency": "EUR", "availability": "https://schema.org/OutOfStock" }
  ]
}
</script>

Sources