Agent Surface

Agentic Commerce

Product Data for Shopping Agents

Product and Offer structured data, merchant feeds, and catalog APIs that a shopping agent reads before it ever invokes a checkout protocol

Last verified 2026-10-29

Summary

A shopping agent reads a product page the same way a search crawler does: only the parts that are machine-parsable. Before any checkout protocol runs, the agent needs three things to already be correct - on-page structured data, a merchant feed the shopping surface ingests, and (increasingly) a catalog it can query directly. Get this layer wrong and nothing downstream matters: a perfect checkout integration still fails if the agent priced the item from a stale feed.

  • Mark up every purchasable product with schema.org/Product and a single nested Offer
  • Feeds for Google Shopping and ChatGPT overlap heavily but are not the same file - check both specs, not one
  • A catalog API (, platform-native, or your own) lets an agent query live state instead of trusting a cached feed
  • The Shopify product-page audit checks the same structured-data and pricing-accuracy signals described here

On-page structured data

Mark up every purchasable product with schema.org/Product and a nested Offer - not AggregateOffer, since merchant listing eligibility requires a single Offer per purchasable URL.

Required on the Offer:

  • price (a number greater than zero) and priceCurrency (ISO 4217), or priceSpecification in place of both

Strongly recommended:

  • availability (InStock, OutOfStock, PreOrder, and so on) - Google lists it as recommended rather than required for merchant listings, but an agent that cannot tell whether an item is in stock has little to act on, so treat it as mandatory in practice
  • Identifiers: sku, one of gtin/gtin8/gtin12/gtin13/gtin14, mpn, and brand
  • shippingDetails (OfferShippingDetails) for shipping cost and delivery estimate
  • hasMerchantReturnPolicy (MerchantReturnPolicy) for the return window and terms
  • aggregateRating and review where real reviews exist
  • For variants (size, colour, and so on), ProductGroup with hasVariant linking the individual Product entries, or isVariantOf / inProductGroupWithID on each variant

This is Google's merchant-listing structured-data requirement set; see Merchant listing structured data for the full property list and validation rules. See Structured Data for Agents for mechanics that apply beyond commerce.

Merchant feeds

Structured data on the page and a feed pushed to a shopping surface are different mechanisms that need to agree. A shopping agent that only reads your feed never sees a fix you made on the page, and vice versa.

Google Merchant Center

Google's product data specification defines every attribute a Merchant Center feed can carry. At minimum every product needs id, title (max 150 characters), description (max 5,000 characters), link, image_link, price (ISO 4217), and availability (in_stock, out_of_stock, preorder, or backorder; availability_date is required when preorder or backorder). brand is required for new products except movies, books, and musical recordings; gtin is strongly recommended when the product has one, and mpn is required only when it doesn't. Apparel in several countries (Brazil, France, Germany, Japan, UK, US) additionally requires color and gender; variants need item_group_id. image_link will require a minimum 500x500px image from 31 January 2027, and AI-generated content must carry a metadata label identifying it as algorithmically created.

OpenAI / ChatGPT product feed

OpenAI's product feed specification defines the feed ChatGPT ingests for shopping and (where eligible) checkout. Nine fields are required: item_id (stable per item or variant), title, description, url, brand, seller_name, image_url, availability (in_stock, out_of_stock, pre_order, backorder, or unknown), and price (as amount CURRENCY). Check them against the Stable products schema: it separates the Stable schema, which is supported for upload, from the Draft schema, which is for planning only; ads and checkout have their own conditional fields and onboarding; and standard uploads target the US market, with other markets needing confirmed setup. Parquet is the preferred upload format, ideally compressed; jsonl.gz, csv.gz, and tsv.gz are also supported. Feeds are delivered by SFTP, file upload, or a hosted URL rather than by crawling your product pages - see the file upload guide for the mechanics. The feed and the on-page structured data above should describe the same product from the same source; treat a mismatch as a data defect, not two valid representations.

Neither spec replaces the other. If you sell through both Google Shopping surfaces and ChatGPT, you maintain two feeds (or one superset feed) against two specs, and both need to reconcile with the live product page.

Catalog APIs

A feed is a snapshot; a catalog API lets an agent query current state directly instead of trusting whatever was last uploaded. UCP standardizes catalog search as one of its capabilities, alongside cart and checkout - see that page for the protocol-level detail. Platform-native catalog APIs (Shopify's, for example) expose the same query surface without requiring UCP specifically; see Shopify for what that looks like in practice. Whichever you expose, the same rule applies as for feeds: the catalog API, the feed, and the page must return the same price and availability for the same item, checked against a real SKU, not just schema-validated.

Two Shopify Catalog additions affect how you model price and eligibility. Catalog now returns eligible compare-at prices as list_price (2026-10-09), in minor units rather than OpenAI's major-unit amount CURRENCY form. And a US-only beta (2026-10-27) lets Catalog search return brands that don't sell on Shopify, for discovery only: those products carry eligible.native_checkout=false and check out on the brand's site.

What the Shopify product-page audit checks

Shopify's agentic-readiness product-page audit scans a live product URL and checks it against the same structured-data, real-time pricing accuracy, and trust-signal criteria described above - it is a useful second check specifically for a commerce storefront, whether or not you sell through Shopify. Shopify frames the check as informational: passing signals do not guarantee a product surfaces in an AI shopping result, only that the machine-readable groundwork is in place. See Shopify for how this fits the platform's wider agent surface.

Revalidate before commitment

Feeds and catalog responses can lag the source of truth. Recheck price, availability, and delivery eligibility immediately before an operation commits the buyer - see Checkout Protocols for where that revalidation sits in a session-based checkout flow, and Evaluating Product Journeys for testing the whole path from discovery through commitment.

On this page