Shipping data for AI agents
"Ships in time for Friday" and "under $150 delivered" are ordinary shopping constraints and both require shipping data an agent can compute with. A store that publishes cost and delivery window as structured fields can satisfy them. A store with a shipping page cannot.
Machine-readable shipping data is schema.org OfferShippingDetails attached to a product offer, expressing shipping cost, destination and delivery time as structured values so an AI agent can evaluate delivery-constrained and total-cost queries.
The two queries that need it
Shipping data is not a nice-to-have field; it is what makes two entire classes of query answerable.
- Delivery-constrained
- "I need it by Friday." Without a transit time an agent cannot include you in the candidate set at all — it will not guess.
- Total-cost
- "Under $150 delivered." A $139 product with unknown shipping cannot be compared against a $145 product with free shipping; the unknown loses.
The shape
OfferShippingDetails carries the rate, the destination it applies to, and the time. Transit time is expressed as a range in days, which is what an agent needs to reason about a deadline.
"offers": {
"@type": "Offer",
"price": "129.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "0",
"currency": "USD"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "US"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 0,
"maxValue": 1,
"unitCode": "DAY"
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 2,
"maxValue": 5,
"unitCode": "DAY"
}
}
}
}Common mistakes
Shipping is the field most often published in a form that technically validates and practically tells an agent nothing.
| Mistake | Effect |
|---|---|
| Free-shipping threshold only in a banner | Not machine-readable; total-cost queries treat shipping as unknown |
| Delivery time as prose ("ships fast") | Deadline queries cannot include the product |
| No shippingDestination | Cannot be applied to a buyer in a specific country |
| Handling time folded into transit time | Underestimates the deadline; produces recommendations you miss |
| One rate for a multi-region catalogue | Wrong for most buyers; contradiction at checkout costs trust |
Conditional free shipping
Threshold-based free shipping is common and awkward to express. The workable approach is to emit the rate that applies to that offer as configured, and to state the threshold in your policy page and llms.txt so an agent evaluating basket-level questions has it.
Do not emit a zero rate on every product because free shipping exists above $75. An agent that quotes free delivery on a $20 item has produced a wrong answer with your name on it.
Frequently asked questions
- How do I publish shipping information for AI agents?
- Attach schema.org OfferShippingDetails to the product offer with shippingRate, shippingDestination, and deliveryTime split into handlingTime and transitTime as day ranges. A shipping policy page is not machine-readable enough to answer a deadline query.
- Why does delivery time need to be structured?
- Because deadline queries — "I need it by Friday" — are evaluated against a computable range. An agent will not infer a transit time from prose; it will exclude the product from the candidate set instead.
- How should I handle free shipping over a threshold?
- Emit the rate that actually applies to that offer and state the threshold in your policy page and llms.txt. Marking every product as free shipping because a basket threshold exists produces recommendations that are wrong at the item level.
- Does shipping data matter if I only sell domestically?
- Yes, and it is simpler: one shippingDestination, one rate, one transit range. The field still decides whether you can appear in total-cost and deadline queries within that market.
Check your shipping and returns signals
The scan reports which policy terms are machine-readable and which exist only as prose.