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 (written as the short name such as InStock, or as the schema.org URL with http or https, all of which Google accepts), 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. schema.org/ItemAvailability lists the availability values. We, not schema.org, require stock to be readable for each variant.

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 (PreOrder and PreSale in the markup mean "not in stock yet", so they agree with "Pre-order" on the page); 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

Read more

  • How an AI agent reads a web page

    Raw HTML, the rendered page, the accessibility tree, structured data, Markdown versions and llms.txt, and what each one means for an agent trying to read your product page.

Could an agent buy from your store?

The free scan runs all 51 checks on your store in about five minutes.

Scan my store
The storewalk.ai app on a phone, scanning a clothing store: it checks a product, views its details and compares options.