An AI shopping agent cannot read a price out of a styled <span>, and it does not click your variant dropdown. Every fact it needs to complete a purchase has to exist as a machine-readable statement β€” in practice, the Product and Offer types in your JSON-LD. Below are the fields that decide whether an agent gets from your product page to a completed order, taken from the schema.org vocabulary itself (release 30.0, published 2026-03-19).

The four questions an agent has to answer

1. Which product is this? sku is “a merchant-specific identifier for a product or service”. gtin is the market-wide one, and schema.org defines it strictly: “an all-numeric string of either 8, 12, 13 or 14 digits, or a ‘GS1 Digital Link’ URL”, with a valid GS1 check digit. A SKU identifies the item inside your systems; a GTIN lets an agent match your listing against the same product elsewhere.

2. What does it cost? price together with priceCurrency, whose guidance names the ISO 4217 format β€” "USD". A number with no currency is not a price, and an agent comparing offers has no way to guess which one you meant.

3. Can it be bought right now? availability β€” “the availability of this itemβ€”for example In stock, Out of stock, Pre-order”. inventoryLevel, “the current approximate inventory level”, is the optional refinement.

4. Which variant? This is the one that quietly breaks transactions.

Variants: the group is not the thing you sell

schema.org models variants with ProductGroup β€” “a group of Products that vary only in certain well-described ways, such as by size, color, material”. The decisive sentence is the next one:

While a ProductGroup itself is not directly offered for sale, the various varying products that it represents can be.

If your markup exposes a group carrying a price range and nothing purchasable beneath it, an agent has correctly parsed your page and still has nothing to buy. The group is a template, not an offer. Three properties close the loop:

  • hasVariant β€” points from the group to each member Product.
  • variesBy β€” “indicates the property or properties by which the variants in a ProductGroup vary”, referenced by short name, e.g. color, size.
  • isVariantOf / inProductGroupWithID β€” each variant points back, the latter carrying the group’s productGroupID.

variesBy is what turns “Blue / Large” into a resolvable coordinate instead of free text an agent has to guess at β€” schema.org’s own note is that the properties are “referenced by their short name”.

The fields that make an offer actionable

Identity, price and stock get an agent to the buy decision. These decide whether it trusts the offer enough to act:

  • priceValidUntil β€” “the date after which the price is no longer available”. It tells an agent how long your quote holds without re-fetching the page.
  • shippingDetails β€” “information about the shipping policies and options associated with an Offer”. A total the agent cannot compute is a checkout it may abandon.
  • hasMerchantReturnPolicy and itemCondition β€” “a predefined value from OfferItemCondition specifying the condition of the product”.

What an audit actually looks for

AgentReady’s structured-data pillar checks this exact shape: a parseable Product node (on the product page, or failing that the homepage), price and priceCurrency together β€” price alone scores partial credit β€” availability, brand, and at least one identifier among sku, gtin and mpn. Missing availability is scored as a hard failure, because without it an agent cannot tell a sold-out page from a live one.

None of this is about ranking. A page can be perfectly readable and still be unbuyable, and the gap between the two is almost always a missing field rather than missing content β€” which is also why an agent abandons a checkout it technically reached.

Sources

  • schema.org vocabulary, release 30.0 β€” definitions quoted above for Offer, price, priceCurrency, availability, inventoryLevel, sku, gtin, ProductGroup, hasVariant, variesBy, isVariantOf, inProductGroupWithID, productGroupID, priceValidUntil, shippingDetails, hasMerchantReturnPolicy, itemCondition.
  • schema.org release log β€” version 30.0, dated 2026-03-19.

Discovery gets an agent to your product page; these fields are what let it finish the transaction once it is there.