← Guides

ChatGPT says "out of stock" but the item is available

Why ChatGPT says your product is sold out

A shopper asks ChatGPT about your product and hears "that one's out of stock" — even though it's sitting in your warehouse and the page loads perfectly. The painful part: the customer never double-checks. They trust the assistant, buy from a competitor, and you never even learn about the lost order.

The cause is almost always a single field — availability inside your JSON-LD structured data. An AI agent doesn't look at the "Add to cart" button the way a human does. It reads the machine-readable schema.org/Product markup, and if that markup says OutOfStock — or the field is missing altogether — the model repeats it as fact. Availability lives in the "Product data" category, the heaviest one in the Botmetria AI-readiness audit: 30 of 100 points.

This is far from rare. Over two weeks in July, AI bots made more than a million requests to the three shops in our AI Traffic Index, and agents read the single most popular product card 73,715 times. Models crawl product pages constantly — and every one of those hits reads your availability.

What the model reads instead of your storefront

A human sees a green "In stock" badge and a "Buy" button. An agent sees roughly this:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Bariata X200 espresso machine",
  "offers": {
    "@type": "Offer",
    "price": "5990.00",
    "priceCurrency": "MDL",
    "availability": "https://schema.org/InStock"
  }
}

If availability reads InStock, ChatGPT will happily say "it's in stock, 5990 lei." If it says OutOfStock, is stale, or is written in plain words, the assistant scares the buyer off — or refuses to name the product at all.

Four reasons the answer is wrong

  1. The availability field is missing. Many themes output price and priceCurrency but forget stock status. Without it, the model plays safe and often assumes the worst.
  2. The value isn't a schema.org URL. "in stock", "yes", "true", "available" mean nothing to the model. It needs exactly one of the schema.org URLs.
  3. It's out of sync with the warehouse. The product is back on sale, but the markup still says OutOfStock because the status doesn't update with the stock count.
  4. Caching. The page is cached by a CDN or a plugin: visitors see the fresh version, the bot sees yesterday's, from when the item was gone.

The correct availability values

There are only a few schema.org values, and mixing them up hurts:

ValueWhen to use it
https://schema.org/InStockon hand, buyable right now
https://schema.org/OutOfStocksold out, purchase unavailable
https://schema.org/PreOrderpre-order before launch
https://schema.org/BackOrdernot in stock, but you'll accept the order

Always write the full https://schema.org/ URL — some parsers accept the short InStock, but not all. And mind the currency: MDL for Moldova, RON for Romania.

Keeping stock status accurate

Markup is only as useful as it is truthful. Three rules:

The Botmetria plugin for WooCommerce outputs JSON-LD Product with live availability automatically: the status comes straight from the stock count, and page caching won't trip you up.

How to check in five minutes

  1. Open the product page, choose "View page source," and find the application/ld+json block. Confirm availability is present and matches your warehouse.
  2. Run the URL through the free Botmetria audit — it shows your "Product data" score and flags a missing or non-schema.org availability value.
  3. Ask ChatGPT itself: "Is [product] in stock at [your site]?" — and compare the answer with your stock.

FAQ

Why does ChatGPT show the wrong stock status?

The assistant reads the availability field in your JSON-LD, not the storefront. If it's empty, stale, or not a schema.org value, it repeats the error as fact.

Which availability value means the item is in stock?

The full URL https://schema.org/InStock. Use OutOfStock for sold out, PreOrder for pre-orders, and BackOrder when you accept orders for out-of-stock items.

How do I quickly check availability in my markup?

Open the page source and find the application/ld+json block, or run the URL through the free Botmetria audit, which flags a missing or wrong availability value.

Related guides

Check your store for free

A 60-second audit shows how ready your store is for AI agents — and exactly what to fix first.

Run the free audit