A shopper asks ChatGPT for black trail running shoes in size 10 that can be returned within 30 days. Two retailers sell the same shoe at 79.99 USD. One retailer’s feed gives a 30-day return window as a number. The other retailer’s feed leaves that field empty, and under OpenAI’s feed rules an empty return field means unspecified. The agent can verify one offer and not the other. A machine-readable product-context layer exists to fill that gap, and a standard product feed rarely fills it on its own.
Key Takeaways
- The Agentic Commerce Protocol feed specification reads an omitted optional field as unknown, and an agent cannot rank an unknown against a competitor’s stated fact.
- Stable identifiers for the item, its variant group and the seller’s offer let an agent follow one exact product from comparison into a signed AP2 cart.
- The feed tells an agent what you sell. Whether the agent considers your brand at all depends on independent sources on the open web agreeing with that feed.
What a Product Feed Gives an Agent, and What It Leaves Blank
OpenAI’s product feed specification for the Agentic Commerce Protocol (ACP) asks for nine required fields: item_id, title, description, url, brand, seller_name, image_url, availability and price. Those nine get a product listed. OpenAI’s own key-concepts guide says required fields make price and availability display correctly, while recommended attributes such as reviews and rich media improve ranking and relevance.
The more useful detail is how the spec handles missing values. An omitted shipping_price means unknown, and the spec says it should not be read as free shipping. An omitted accepts_returns is unspecified, and a return policy URL does not set it. An omitted review_count is unknown, while zero means the product has no reviews. The parser does not fill the gaps.
This is the mechanism that matters. A feed built for shopping ads was designed to match a query to a listing and show a price. An agent starts from the shopper’s constraints and filters. Each constraint the shopper names becomes a field lookup, and each empty field becomes a product the agent cannot vouch for.
An agent cannot recommend a product on a constraint it cannot verify, so every empty field is a comparison you have already lost.
Identity Has to Hold Still Through Price Changes and Variants
The ACP spec separates three identities. The item_id names the specific item, the group_id names its parent listing, and the offer_id names one seller’s offer. All three should stay the same when price, stock, title or images change, and the spec warns against ever putting price inside an offer ID. Each variant gets its own row with a distinct item_id, a shared group_id, listing_has_variations set to true and a variant_dict of the selected options. Each row carries its own price, availability, URL and image.
Google’s Agent Payments Protocol (AP2) shows why. Google describes two signed mandates. An Intent Mandate records what the shopper asked for, including price limits and conditions when the task is delegated. A Cart Mandate records the exact items and price the shopper approved, and that record cannot be changed afterwards. Google’s own example is a shopper who wants a jacket in green and will pay up to 20% more for it. The agent watches prices and availability until that variant appears.
That example only works if green has its own row with its own availability. A merchant who lists colours in a sentence inside the description has given the agent nothing to watch. Price drift causes the same problem. If the feed, the product page and checkout disagree, the agent ends up holding a signed cart for a price the merchant no longer honours.
Google announced AP2 with more than 60 organisations, including Mastercard, PayPal and Etsy, and describes it as an extension of A2A and MCP. AP2 does not define a product feed. It does assume that the product it pays for has one fixed identity.
Attributes Written for Constraints Rather Than for Browsing
Most of the optional fields in the ACP spec exist so an agent can check a constraint without guessing. Dimensions go in a structured object with an explicit unit, and the spec states that units are never inferred from the market. They measure the product itself, without its packaging. Weight requires a unit. Condition should always be stated for used or refurbished stock, because an empty value may be treated as new. Review counts exclude seller and store reviews. A return window is a positive whole number of days and is valid only when accepts_returns is set to true. A sale_price is ignored unless it is strictly below price and in the same currency.
All of these follow the same rule. Each field holds either a typed value or a deliberate unknown. The spec rejects a row whose availability is missing and asks merchants to write “unknown” explicitly instead.
Some questions have no column. Does this part fit a given model? What is in the box? Is the fabric machine washable? The answers belong in the description, which OpenAI’s spec asks merchants to keep to factual plain text with a concise title. They also belong on the product page as plain sentences and in Product schema, because retrieval reads that page when the agent looks beyond the feed.
The Part of the Context Layer That Lives Outside the Feed
A feed answers a narrow question: what does this merchant sell, and on what terms? It does not decide whether your brand enters the consideration set when a shopper asks an open question, such as which trail shoes hold up best on wet rock. Models build that answer from what they absorbed in training and what they retrieve at query time.
At this stage Share of Citation matters more than Share of Voice. A brand can be mentioned everywhere and still rarely be named as a source in AI answers. The sources that get cited have facts that are specific, checkable and consistent with what other independent sources say.
Here, trust is a graph of agreement. If the feed says 30-day returns, the product page says 14 days and a review site says final sale, the agent has three sources in conflict and no reason to prefer yours. When the feed, the page markup and third-party coverage state the same facts, each one strengthens the others. Citations compound from there.
What to Change Before Your Next Feed Refresh
- Export your feed and count the empty optional fields in each row, grouped by category. Start with the fields shoppers use as constraints: return terms, shipping cost, dimensions, material and condition.
- Replace silent blanks with explicit values, including “unknown” for availability where you genuinely do not know.
- Audit identifiers. Look for offer IDs that contain prices, item IDs reused for different products, and variants collapsed into a single row.
- Take a sample of SKUs and compare price, return window and shipping cost across the feed, the product page and checkout. Any mismatch is a broken Cart Mandate waiting to happen.
- Rewrite descriptions as factual statements that answer questions about compatibility and use. Then put the same facts in Product schema on the page.
- Ask ChatGPT, Gemini and Perplexity the questions your shoppers ask. Record which products appear and which sources each engine cites. That record is your baseline for an AI visibility audit.
FAQs
What Is a Machine-Readable Product-Context Layer?
It is the full set of structured, verifiable product facts an AI agent can retrieve and compare: the product feed, stable identifiers, typed attributes, policy terms, and the matching facts on product pages and in independent sources.
Is the ACP Product Feed the Same as a Google Shopping Feed?
They share concepts such as GTIN, price and availability, but OpenAI’s specification has its own field names and rules, including variant_dict for variants and explicit handling of unknown values. Map each field deliberately before reusing an existing export.
Does AP2 Define What Product Data Merchants Must Send?
No. AP2 is a payments protocol built around signed Intent and Cart Mandates. Because a Cart Mandate records the exact items and price a shopper approved, product identity and price must stay consistent between the feed, the product page and checkout.
Do Optional Feed Fields Affect Whether ChatGPT Recommends a Product?
OpenAI states that recommended attributes such as reviews and rich media improve ranking and relevance. An omitted optional field is treated as unknown, so the agent cannot confirm that product against a constraint the shopper has stated.