---
title: "Stock and delivery promises an agent can check"
description: "Agents filter on stock and check delivery before they recommend. How to state availability, handling and transit time so page, markup and feed agree."
source_url: "https://specoria.com/insights/stock-and-delivery-promises-an-agent-can-check/"
lang: "en"
---

[Insights](https://specoria.com/insights/) Product data

# Stock and delivery promises an agent can check: availability and shipping times that agree everywhere

Agents filter on stock and check delivery before they recommend. How to state availability, handling and transit time so page, markup and feed agree.

By [Specoria Team](https://specoria.com/about/) October 28, 2026 8 min read

In this article

- [Why agents weigh stock and delivery](https://specoria.com/insights/stock-and-delivery-promises-an-agent-can-check/#why-agents-weigh-stock-and-delivery)
- [Availability: one value per offer, from a short list](https://specoria.com/insights/stock-and-delivery-promises-an-agent-can-check/#availability-one-value-per-offer-from-a-short-list)
- [Preorder, backorder and sold out](https://specoria.com/insights/stock-and-delivery-promises-an-agent-can-check/#preorder-backorder-and-sold-out)
- [Delivery time: handling plus transit](https://specoria.com/insights/stock-and-delivery-promises-an-agent-can-check/#delivery-time-handling-plus-transit)
- [Keeping page, markup and feed in sync](https://specoria.com/insights/stock-and-delivery-promises-an-agent-can-check/#keeping-page-markup-and-feed-in-sync)
- [Turkey: the delivery time is a legal promise too](https://specoria.com/insights/stock-and-delivery-promises-an-agent-can-check/#turkey-the-delivery-time-is-a-legal-promise-too)
- [Common mistakes](https://specoria.com/insights/stock-and-delivery-promises-an-agent-can-check/#common-mistakes)
- [A practical checklist](https://specoria.com/insights/stock-and-delivery-promises-an-agent-can-check/#a-practical-checklist)
- [The bottom line](https://specoria.com/insights/stock-and-delivery-promises-an-agent-can-check/#the-bottom-line)

A shopper tells an assistant: "I need running shoes in size 43 that arrive before Saturday." Price is only one question. The agent also has to know whether that size is in stock and how long the order takes to arrive. If your page says "fast delivery" and your feed says nothing, the agent has a promise it can't check.

In this article, we look at how agents treat stock and delivery, the fields schema.org, Google Merchant Center and OpenAI's product feed use for them, and how to keep all three in agreement. Our [catalog guide](https://specoria.com/insights/preparing-your-catalog-for-shopping-agents/) touched on this briefly; this is the detailed version.

*This article is for information only and is not legal advice.*

## Why agents weigh stock and delivery

Agent instructions are explicit about both. The skill file Shopify publishes for agents using Shop MCP says search applies availability filtering by default, offers a `ships_to` filter for the delivery destination, and tells the agent to confirm the selected option's stock and price before recommending it or building a cart. It is just as careful about time: "Shipping eligibility does not establish arrival by a deadline." When a shopper gives a date, the agent is told to say that search can't confirm arrival by then and to point to the merchant's checkout.

So an agent will not assume your item arrives in time. It needs a number it can read before checkout. Google's Merchant Center help makes the same point from the shopper's side: shipping speed and cost are two of the most common reasons shoppers abandon a product.

## Availability: one value per offer, from a short list

**Structured data.** In schema.org, an `Offer` carries `availability`, whose values come from `ItemAvailability`. Google supports ten of them, including `InStock`, `OutOfStock`, `PreOrder`, `BackOrder` and `SoldOut`, and adds: don't specify more than one value.

**Merchant Center.** The `availability` attribute is required for all products, with four values for regular retail: `in_stock`, `out_of_stock`, `preorder` and `backorder`. Google publishes the mapping: for example, `SoldOut` and `Discontinued` both become `out_of_stock`.

**OpenAI's product feed.** `availability` is a required field with five values: `in_stock`, `out_of_stock`, `pre_order`, `backorder` and `unknown`. An omitted, empty or unrecognized value rejects the row. If you don't know, say `unknown` explicitly; it does not claim the item is in stock.

The same idea, three spellings. Generate all three from one stock field.

## Preorder, backorder and sold out

- **Preorder** is for a product that hasn't been released yet. Google says existing products that are out of stock and will come back should use backorder instead.
- **Backorder** means the item isn't available right now, but you accept orders and ship when it returns.
- **Out of stock** means you aren't accepting orders. Google accepts clear text such as "sold out" or a disabled buy button on the page.

For preorder and backorder, Merchant Center requires `availability_date`: the day the product becomes available for delivery, up to one year ahead. The date must also be visible on the landing page, and Google maps it to `Offer.availabilityStarts` in structured data.

OpenAI's spec adds a warning: availability values and dates do not schedule a future change. When the item arrives or sells out, you update the feed.

And from Google: don't mark products `out_of_stock` to pause them for maintenance or a holiday. Use `excluded_destination` instead.

## Delivery time: handling plus transit

Schema.org splits a delivery promise into parts. `deliveryTime` is the total delay between receiving the order and the goods reaching the customer. Inside it, a `ShippingDeliveryTime` holds:

- **`handlingTime`**: from receiving the order until the goods leave the warehouse.
- **`transitTime`**: from handing the order to the carrier until it reaches the customer.

On a product, this sits in `shippingDetails` (an `OfferShippingDetails`) next to `shippingRate` and `shippingDestination`. Google expects each time as a `QuantitativeValue` with `minValue`, `maxValue` and `unitCode` set to `DAY`. Its example: handling 0 to 1 day, transit 1 to 5 days.

Google recommends declaring a store-wide shipping policy once, with `hasShippingService` under `Organization`, and using offer-level `shippingDetails` only for products that differ. That version can also state a `cutoffTime` and `businessDays`; a handling time of 0 means same-day processing before the cutoff.

Merchant Center uses the same split: the `shipping` attribute takes `min_handling_time`, `max_handling_time`, `min_transit_time` and `max_transit_time`. Handling counts business days: an order placed on Tuesday that leaves by Friday has a maximum handling time of 3.

OpenAI's feed is different. `shipping_price` describes a charge, and the spec says it "does not quote a checkout total or guarantee a delivery date." An empty value means unknown, not free shipping. The optional `shipping` field, available only with feed-specific setup, takes `country:region:service_class:price`, and the spec states that handling and transit day suffixes are not part of it. So for that channel, the delivery time lives on your page and in your markup.

## Keeping page, markup and feed in sync

Google's rule is direct: availability must match across the landing page, structured data, checkout and your data source, and a mismatch in one triggers a disapproval. Google also recommends Product markup in the initial HTML, since markup generated by JavaScript can make Shopping crawls less frequent and less reliable for fast-changing data like availability and price.

For shipping, know which source wins. Google's order, strongest first: Content API account settings, Merchant Center or Search Console settings, product markup, organization markup. If your dashboard says 2 to 4 days and your page says next day, what Google shows will contradict your page.

We covered why disagreement costs you on price in [your feed, your page and your structured data should agree on price](https://specoria.com/insights/feed-page-and-structured-data-should-agree-on-price/). Stock and delivery follow the same logic.

## Turkey: the delivery time is a legal promise too

In Turkey's Distance Contracts Regulation, as currently published, the pre-contract information must include a delivery period consistent with what was promised in advertising and promotion. The seller must deliver within the period it committed to, and for goods, except those made to the customer's request, that period can't exceed 30 days from the order.

So a line such as "kargoya veriliş: 1 iş günü" on a Turkish product page is already a commitment. Mark it up as `handlingTime`, enter the same number in Merchant Center, and the agent reads the promise you are already making.

## Common mistakes

- **Words instead of numbers.** "Fast shipping" or "usually ships soon" gives the agent nothing to compare.
- **One availability for every variant.** A sold-out size hides behind an in-stock group. Each variant needs its own `Offer`; see [variant pages an agent can read](https://specoria.com/insights/variant-pages-an-agent-can-read/).
- **A delivery time only in checkout.** The agent has to start buying just to learn when the item arrives.
- **A feed refreshed once a day.** Stock sells out at noon, the feed says `in_stock` until tomorrow.

## A practical checklist

- Pick 20 products: best sellers, one sold out, one on preorder or backorder.
- In the page source, check that each `Offer` has exactly one `availability` value and that it matches the visible page and checkout.
- Check that preorder and backorder items show an expected date on the page and carry `availability_date` in the feed.
- Write handling and transit time as day ranges in markup, in Merchant Center, and in plain text on the page. Use the same numbers in all three.
- Compare Merchant Center shipping settings with your markup, since the account settings win.
- In any OpenAI feed, make sure every row has an explicit `availability`, and leave `shipping_price` empty only when the cost is truly unknown.
- Trigger a feed update whenever stock changes, not just once a day.

## The bottom line

Agents don't take "in stock" or "fast delivery" on trust. They read a stock status and a day range, and they check that the page, the markup and the feed say the same thing. A store that states one availability value per offer and an honest handling plus transit range, everywhere, gives the agent a promise it can repeat to the shopper.

Specoria checks whether your offers carry price, currency and availability, whether your shipping information is machine-readable, whether shipping cost and time appear on the page, and whether stock agrees between your catalog and your pages. Start with a [free readiness test](https://specoria.com/#contact).

### Sources

- Google Search Central, [Merchant listing (Product, Offer) structured data](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing), last updated September 8, 2026.
- Google Search Central, [Merchant shipping policy (ShippingService) structured data](https://developers.google.com/search/docs/appearance/structured-data/shipping-policy), last updated September 8, 2026.
- Schema.org, [OfferShippingDetails](https://schema.org/OfferShippingDetails), [ShippingDeliveryTime](https://schema.org/ShippingDeliveryTime) and [ItemAvailability](https://schema.org/ItemAvailability), accessed October 20, 2026.
- Google Merchant Center Help, [Availability (availability)](https://support.google.com/merchants/answer/6324448), accessed October 20, 2026.
- Google Merchant Center Help, [Availability date (availability_date)](https://support.google.com/merchants/answer/6324470), accessed October 20, 2026.
- Google Merchant Center Help, [Shipping (shipping)](https://support.google.com/merchants/answer/6324484), accessed October 20, 2026.
- Google Merchant Center Help, [Maximum handling time (max_handling_time), minimum handling time (min_handling_time)](https://support.google.com/merchants/answer/7388496), accessed October 20, 2026.
- OpenAI, [Product Feed Spec](https://developers.openai.com/commerce/specs/feed), accessed October 20, 2026.
- Shop, [Shop MCP agent skill](https://mcp.shop.com/skill.md), accessed October 20, 2026.
- Mevzuat Bilgi Sistemi, [Mesafeli Sözleşmeler Yönetmeliği](https://www.mevzuat.gov.tr/mevzuat?MevzuatNo=20237&MevzuatTur=7&MevzuatTertip=5) (Distance Contracts Regulation, Articles 5 and 16 as amended), accessed October 20, 2026.

## Related

- [A third of a product page is invisible to AI: how to make product pages machine-readable](https://specoria.com/insights/machine-readable-product-pages/)
- [Variant pages an agent can read: sizes, colors and the product group](https://specoria.com/insights/variant-pages-an-agent-can-read/)
- [Your feed, your page and your structured data should agree on price: how shopping agents read a contradiction](https://specoria.com/insights/feed-page-and-structured-data-should-agree-on-price/)
- [Agent protocol map: UCP, ACP, AP2, MCP, WebMCP](https://specoria.com/agent-protocols/) What each protocol does and what the free test checks
- [Scan API, MCP server and GitHub Action](https://specoria.com/developers/) Run the free test from your own scripts or CI

FREE TEST

## Is your store ready for shopping agents?

See in seconds how a shopping agent reads your store: free, instant, no email needed.

The free test runs in your browser and needs JavaScript. [Request the free deep audit by email instead →](https://specoria.com/#contact)

Your result opens on its own page. Want the full picture? The free deep audit and panel come next, by email.
