Key takeaways
- An AI-readable feed is one an agent can parse without guessing: every attribute filled, in the fields agents already look for.
- Being parseable is table stakes: it makes you eligible to be scored. Being complete is the lever we argue can shift which product actually wins.
- The fields agents read are the ones open commerce protocols already standardize: product identifiers, price, availability, and fulfillment options.
- Gaps (a missing GTIN, a blank availability field, a brand-only title) are the most common reason an agent skips a product it could have picked.
- You cannot judge feed completeness by eye; treat it as a number you track, the way you would track any ranking signal.
What "AI-readable" actually means
A feed that reads fine to a person can still be opaque to an agent. A human shopper fills gaps from context: they know "The Luna" is a sleep mask because of the photo and the shelf it sits on. An AI shopping agent has no shelf. It has your fields, and it scores what those fields say. "AI-readable" means the machine can extract every attribute it needs to compare you (identity, price, availability, category, use-case) without inferring anything.
That gap between "looks fine" and "parses cleanly" is measurable, and it is wide. Retail product pages score an average of 66 out of 100 on Adobe's machine-readability index (meaning roughly a third of a typical product page is not cleanly machine-readable) versus 74 for category pages and 75 for homepagesReportedAdobe Digital Insights (Vivek Pandya), business.adobe.com (2026-04-16). The product feed is where you close that gap most directly, because it is the one surface you hand agents in a fully structured form. See also the machine-readability score in the glossary.
The attributes agents parse (and where they're defined)
You do not have to guess which fields matter, because the open commerce protocols already enumerate them. The Agentic Commerce Protocol (ACP), the open checkout standard behind ChatGPT Instant Checkout, standardizes the core product attributes an agent reads, including product identifiers such as GTIN, price, and availabilitySpec-factAgentic Commerce Protocol schema, github.com/agentic-commerce-protocol. The exact field names and syntax are the protocol's turf; we link the primary spec rather than reproduce it, because copying a schema teaches nothing about winning. What matters here is the completeness of those fields, not their syntax.
Fulfillment is part of that set, and it has been for longer than most merchants assume. ACP has modeled shipping and fulfillment options since its September 2025 launch, and its current spec also exposes pickup, local delivery, delivery windows, and return-policy fieldsSpec-factAgentic Commerce Protocol schema, github.com/agentic-commerce-protocol. So a feed that leaves shipping speed or availability blank is not omitting a "nice to have": it is leaving standard, expected fields empty where an agent went looking for them. (Eligibility to appear at all still depends on each platform's own onboarding, covered in the platform playbooks.)
Title anatomy: lead with the words shoppers type
The single field agents lean on hardest is the title, because it is the text most directly matched against a shopper's query. The pattern that survives that matching is category first, then defining attributes, then use-case, with the brand name last: the opposite of the evocative, brand-forward titles built for human browsing.
This page treats titles as one field in the larger completeness picture; the full formula, the evidence behind it, and the "literal match" failure mode live on product titles that AI agents match.
Completeness as a selection lever, not just an eligibility checkbox
Here is the distinction most feed advice misses. There are attributes required to be seen (pass validation, clear the platform's minimums, become eligible), and there are attributes that plausibly shift which product an agent selects once several are eligible. Those are not the same list, and the second one is where the leverage is.
We argue that feed depth is a selection lever and not merely an eligibility checkbox: once two products both clear a platform's minimum feed requirements, the one whose attributes are more completely and accurately filled gives the agent more signal to score in its favor, so completeness competes even among products that are all technically eligibleHypothesis (our analysis). This is an inference, not a measured result. It follows from the hub's evidence on how agents choose: the study there shows agents rank on structured signals (price, rating, description text), and every one of those signals is only as good as the field feeding it. A blank field is a signal you declined to send.
We cannot yet tell you how much each additional filled attribute is worth, and no public dataset does either. Treat completeness as a lever with a known direction and an unknown magnitude: worth pulling, worth measuring, not worth overclaiming.
Google's conversational attributes: optional fields built for agents
Google added a set of feed fields aimed squarely at AI shopping surfaces, and they map onto the selection question this page keeps returning to. Google's conversational product attributes are question_and_answer, document_link, related_product, item_group_title, variant_option, and popularity_rank, described as completely optional, complementing the core product data specification, and submitted through the feed or the Merchant API for AI Mode in Search and other surfacesSpec-factGoogle Merchant Center Help: conversational attributes.
These are selection levers rather than eligibility checkboxes, because each hands the agent a signal it would otherwise have to infer or would miss. related_product and variant_option let an agent see the substitutes and options in your own catalog instead of reaching for a competitor's. popularity_rank gives it an in-catalog preference order it would otherwise have to reconstruct. question_and_answer puts your answers where an agent reads, in the structured feed, rather than in an on-page widget it may never reach.
Google reports one figure on how often these fields get used, and it is worth reading with its caveat. Google states that in testing with lululemon, conversational attributes submitted by the brand were incorporated 50% of the time in relevant product recommendations in AI ModeReportedGoogle (blog.google): Boost your holiday sales with these agentic commerce updates, Ashish Gupta (2026-09-16). That is a single named test Google reported itself, with no methodology disclosed, so read it as directional evidence that the fields get used, not as a hit rate you can expect for your own catalog.
Two more Google feed levers sit alongside them. The video link attribute powers shoppable visual ad formats, and connecting loyalty data in Merchant Center surfaces member perks and pricing across GoogleSpec-factGoogle (blog.google): Boost your holiday sales with these agentic commerce updates, Ashish Gupta. On the payoff of feed discipline in general, Google reports that on average, merchants adopting core Merchant Center feed best practices see a 5% increase in conversions the following monthReportedGoogle (blog.google): Boost your holiday sales with these agentic commerce updates, Ashish Gupta (2026-09-16), again a self-reported first-party number with no method disclosed.
The gaps that make agents skip you
Most feeds fail not on exotic fields but on the obvious ones left empty or stale. The most common reasons an agent skips a product it could otherwise have picked are missing or malformed identifiers, a blank or stale availability field, a price that disagrees between feed and page, and a brand-only title with no category the query can matchHypothesis (our analysis). Each one is our inference from how agents parse feeds, not a measured failure rate. In practice the recurring gaps are:
- Missing product identifiers. No GTIN (or a wrong one) removes the anchor agents use to match and de-duplicate your product across sources.
- Empty or stale availability. An unfilled availability field, or one that lags real stock, is a reason to drop you rather than risk recommending something out of stock.
- Feed-and-page price disagreement. When the feed and the on-page data conflict, the agent has to pick which to trust, and inconsistency itself is a demotion signal. Reconciling that mismatch is the job of product schema for AI shopping.
- Brand-only titles. A title like "The Luna" gives the query nothing literal to match; the category and use-case are missing entirely.
- Blank fulfillment fields. Leaving shipping speed, delivery window, or fulfillment options empty forfeits fields the protocol already reserves for you.
Apply it in ChatGPT and Gemini
The same completeness work pays off across engines, but they ingest feeds through different pipes. ChatGPT surfaces products through ACP and its feed partners; Gemini and Google AI Mode draw on Merchant Center and Google's protocol stack. The field discipline is shared even where the plumbing is not, so fix the feed once, then read the engine-specific detail in ChatGPT shopping optimization and Gemini & Google AI Mode shopping ranking.
Feed completeness by destination
Fixing the feed once gets you the shared core, but "valid feed" is not a single bar. The same catalog is read by more than one rail, and each destination validates it against its own spec, so a feed that clears one can still be incomplete for another.
Start with the base every destination needs to render you and match you to a query. Google's Merchant Center product data specification requires id, title, description, link, image, availability, and price on every item, and lists brand, GTIN, MPN, and condition as conditionally required attributesSpec-factGoogle Merchant Center product data specification. The ACP product feed that supplies ChatGPT requires a stable item id, price, and availability on every itemSpec-factAgentic Commerce Protocol product feed specification. The overlap of those specs is the practical shared core an agent needs on any rail: a stable id, a query-matchable title, a description, an image, price, availability, and identifiers, because an item missing any of them cannot be rendered or matched regardless of which destination you are optimizing forHypothesis (our analysis).
Where the two specs diverge is where "completeness" stops being one number.
| Destination (rail) | Field-level spec it reads | Beyond the shared core, it keys on |
|---|---|---|
| ChatGPT (Instant Checkout) | ACP product feed spec | Search, checkout, and advertising eligibility flags; a return policy plus seller privacy-policy and terms links on any checkout-eligible item; GTIN or MPN unless identifier_exists is no; per-item shipping (handling and transit days) |
| Google AI Mode and Gemini | Merchant Center product data spec (UCP declares transactability) | Conditional attributes (brand, GTIN, MPN, condition); price and availability that match the landing page, structured data, and checkout |
On the ChatGPT side, the ACP feed carries fields specific to its rail. The ACP product feed requires per-item search and checkout eligibility flags and a return policy on any item flagged checkout-eligible, and it carries per-item shipping fields down to handling and transit daysSpec-factAgentic Commerce Protocol product feed specification. The eligibility flags now include one for advertising. OpenAI's product feed adds is_ads_eligible, a boolean that is conditionally required for Ads processing and keeps the legacy alias is_eligible_ads accepted, sitting beside is_eligible_search and is_eligible_checkout; setting is_eligible_search to false also disables checkout eligibilitySpec-factOpenAI product feed specification (developers.openai.com). The search flag is the master switch, then: turn it off and the product drops out of both organic search and checkout, whatever the other flags say. It also requires a gtin or mpn unless identifier_exists is set to no, and requires seller_privacy_policy and seller_tos links on checkout-eligible itemsSpec-factAgentic Commerce Protocol product feed specification. The identifier rule restates gap number 1 above as a hard requirement. On the Google side, the added weight is on consistency. The Merchant Center product data specification requires that price match across your landing page, structured data, and checkout, with the same parity required for availability and sale prices, so a Google-surface feed is only complete when all three surfaces agreeSpec-factGoogle Merchant Center product data specification (support.google.com), read 2026-09-18. Getting those three surfaces to agree is the subject of product schema for AI shopping.
UCP does not change this field picture; it sits above it. On the Google side, UCP is a capability manifest at /.well-known/ucp declaring services, capabilities such as checkout and fulfillment, payment handlers, and signing keys: it governs whether an agent can transact with you, not which per-product fields you sendSpec-factGoogle: Universal Commerce Protocol profile guide. The per-product fields for that destination stay the Merchant Center specification above, so UCP is the transactability layer on top, which is why the two-rail comparison lives on UCP vs ACP.
Because each rail adds its own required and emphasized fields on top of that shared core, a feed that passes one destination's validator is not automatically complete for another: completeness is per-destination, and an honest feed audit checks the catalog against every rail you want to be picked on, rather than only the rail you happened to validate firstHypothesis (our analysis).
Feed fields ChatGPT reads that merchants treat as page content
Several things a merchant files under "the product page" are, for ChatGPT, feed fields. Get them right on the page but leave them blank in the feed and the agent reads the blank.
Seller identity is the plainest case. The feed requires seller_name and accepts seller_url, store_country, seller_privacy_policy, and seller_tosSpec-factOpenAI Agentic Commerce feed specification (developers.openai.com), read 2026-09-18. Who you are is a feed field here, not only an About page an agent may never open.
Reviews transfer, but not their full shape. The feed accepts review_count and star_rating on a 0 to 5 scale with two decimals, plus store-level store_review_count and store_star_rating. It has no star-distribution field and no recency field, and OpenAI states the reviews are not verified by OpenAISpec-factOpenAI Agentic Commerce feed specification (developers.openai.com), read 2026-09-18. The count and the average move; the distribution and how recent the reviews are do not. Since the agent reads unverified numbers you supplied, supply the true ones.
Returns move the same way. The feed carries accepts_returns, return_deadline_in_days, return_policy, and accepts_exchangesSpec-factOpenAI Agentic Commerce feed specification (developers.openai.com), read 2026-09-18. A generous return window stated only on a policy page is invisible to the comparison unless it is also in these fields.
The description and title have hard ceilings. The feed asks for a factual product description of at most 5,000 characters and a title of at most 150 characters, with variant_dict, size, color, and material carrying variant detail, and it bars placeholder valuesSpec-factOpenAI Agentic Commerce feed specification (developers.openai.com), read 2026-09-18. A field padded with "N/A" to clear a validator is worse than blank, because the agent reads it as a fact.
These are the same facts you also express in on-page structured data, and the two copies have to agree. ChatGPT reads product data from the ACP feed, not from your page's Product and Offer markupSpec-factOpenAI Agentic Commerce feed specification (developers.openai.com), read 2026-09-18. Google reads the on-page markup; ChatGPT reads the feed. So a correction applied only to your structured data leaves ChatGPT serving whatever the feed still says, and a stale price or return window survives a crawl-only fix. Update both, or you have fixed the version one engine never reads.
The market gate: eligibility before ranking
The costliest miss is not a badly ranked product. It is a product that was never eligible to appear, because it sells outside the market the engine serves. Two engines document that boundary in their own specs, independently, and neither treats it as a ranking factor, because it is not one.
The OpenAI feed carries target_countries in ISO 3166-1 alpha-2 and a store_country, so a product is selectable only in the markets its feed declaresSpec-factOpenAI Agentic Commerce feed specification (developers.openai.com), read 2026-09-18. Microsoft states that only English-language merchants selling to US buyers in USD are eligible for its agentic commerce surfaces at this timeSpec-factMicrosoft Advertising: agentic commerce (about.ads.microsoft.com), read 2026-09-18.
A merchant outside the served market can do everything else this page asks and still never appear. No amount of feed depth moves a market boundary, because the boundary sits before ranking, not inside it. Track it as its own gate: the market eligibility signal records which engine serves which country, language, and currency.
Loyalty: a price the agent cannot see is a comparison you can lose
Google gives loyalty its own feed attribute, and the benefit can surface inside an AI answer. Google documents a loyalty_program attribute and states that loyalty benefits are eligible to be shown on AI Mode and Gemini Apps, in the US onlySpec-factGoogle Merchant Center Help: loyalty program (support.google.com), read 2026-09-18.
The selection point is an asymmetry. A member price that only appears after a shopper signs in is invisible at the moment an agent lines up offers, so the agent can compare your list price against a rival's real price and rank you under an offer you would have beaten. Declaring the benefit through the loyalty attribute puts the price the shopper would actually pay where the comparison happens. Leave it behind a login and you can lose on a price you were never going to charge. The loyalty benefits signal tracks where this surfaces.
Measure it, don't eyeball it
Completeness is a number, so treat it like one. Scanning a feed by eye will not tell you what fraction of your catalog is missing a GTIN or carrying a brand-only title; a completeness audit will. Track it the way you track any ranking signal: as a baseline you can move and re-measure. How we structure those measurements, and the metrics we hold ourselves to, is documented in how to test agent selection. This site publishes no measured figures of its own; the protocol is there so you can produce yours.