Learning Path
Navigate the AXO curriculum
Websites
Applications
AXD Fundamentals
Product feeds for AI shopping agents
AI shopping assistants choose most of their products from feeds that merchants send them, not from pages they find on the web. A feed is a file of your catalogue, one row per product you can sell, sent to each platform and refreshed as prices and stock change. This page covers which platforms take one, how to build it, and what gets products dropped.
In short
Build one feed from the same data that renders your product pages. Send it to ChatGPT, Google Merchant Center, and Microsoft Merchant Center, or let Shopify or Stripe send it for you. Refresh the whole catalogue at least daily, and price and stock as they change. Make every value in the feed match the page, because the platforms check, and a mismatch costs you the listing.
Profound found that on 10 July 2026, the share of ChatGPT Shopping picks that came from feeds rose from 8.26% to 61.54% in one day. Our analysis of that change covers what it did to merchants without a feed.
Which platforms take a feed
Every major assistant now takes product data directly. They differ in how you get in, and in whether the purchase happens in the chat or on your site.
| Platform | How to get in | Format and delivery | Where the purchase happens |
|---|---|---|---|
| ChatGPT | Apply at chatgpt.com/merchants; there is a waitlist. Shopify and Etsy merchants are already included. US only. | Full snapshots pushed over SFTP. Parquet preferred; jsonl.gz, csv.gz, tsv.gz accepted. Spec | On your site. OpenAI moved away from in-chat Instant Checkout in March 2026. |
| Google AI Mode and Gemini | A Merchant Center feed. For checkout in AI Mode, the Universal Commerce Protocol, which needs Google’s approval. | File upload, scheduled fetch, or the Merchant API. Supplemental feeds for extra attributes. | In AI Mode and Gemini for selected merchants in the US, Canada, and Australia; otherwise your site. |
| Microsoft Copilot | A Microsoft Merchant Center account with a UCP-ready feed. Shopify merchants were enrolled automatically; Stripe and PayPal merchants apply. Overview | Microsoft Merchant Center feed. English-language merchants selling to US buyers in USD. | In Copilot, through Copilot Checkout. |
| Perplexity | Through PayPal’s Store Sync. Perplexity publishes no feed spec of its own. Instant Buy | Handled by PayPal. | In Perplexity, with Instant Buy, for compatible merchants. |
| Amazon | The Shop Direct Merchant Workspace, opened in November 2026. No fees; US only. | Standard shopping feed formats, through feed partners or the Selling Partner API. | On your site, through Buy for Me. |
If someone else can send it for you
- Shopify. Agentic storefronts are on by default for eligible stores and send your catalogue to ChatGPT, Google, Copilot, and Meta. Check them under Sales channels, then Agentic, and map any metafields an assistant should see. Hiding a product here also hides it from search engines.
- Stripe. The Agentic Commerce Suite takes one CSV and converts it for each connected agent, including ChatGPT, Copilot, and Google. Its field names follow Google’s, so a Merchant Center feed maps across almost directly.
- Feed management tools such as Feedonomics and Salsify can send the same catalogue to several platforms. Amazon names both as Shop Direct partners.
How to set one up
- Start from one source of truth. Generate the feed from the same product data that renders your pages and your Product and Offer markup. A feed exported from a spreadsheet drifts from the site within a week.
- Choose your route. Use your platform’s built-in channel if it has one, a syndicator if you want one feed for every assistant, or each platform directly if you need full control. The routes can be mixed: Google through Merchant Center, the rest through Stripe.
- Fill the required fields. OpenAI requires nine for every item:
item_id,title,description,url,brand,seller_name,image_url,availability, andprice. Google’s core set is nearly the same, with different names. The mapping table below lines them up. - Add identifiers. Give a GTIN wherever the product has one: 8, 12, 13, or 14 digits, with leading zeros kept. Add an MPN when there is no GTIN. Never invent either. Identifiers are how an assistant knows your listing and a competitor’s are the same product.
- Model variants. Each size and colour is its own row, with its own ID, URL, price, availability, and image, and a shared group ID. Use the same variant attributes across the group.
- Add the decision fields. Shipping cost, return window, and review count and rating. These answer the questions shoppers ask an assistant. An empty shipping price means “unknown” to OpenAI, not free.
- Set eligibility. In OpenAI’s feed,
is_eligible_searchis on by default andis_eligible_checkoutis off. In Google’s,native_commerce(checkout_eligibility)controls the Buy button in AI Mode. Leave products you cannot fulfil out of search, not just out of checkout. - Schedule refreshes. OpenAI recommends a full snapshot at least once a day. Stripe asks for inventory and price every 15 minutes. Google expires a product 30 days after its last update, and recommends the API for prices that change more than daily. Push a change when a sale starts or ends, not at the next scheduled run.
- Let the shopping crawlers in. Allow
OAI-SearchBotand Googlebot to fetch product pages and images. Every platform checks the landing page, and a blocked page fails that check. Our AI crawler controls page covers which crawler does what. - Watch the diagnostics. Merchant Center reports disapprovals, and Google has added reporting on how products perform in AI Mode, AI Overviews, and Gemini. Read it weekly at first, then whenever prices or templates change.
One row, in OpenAI’s format
The same sweater as the markup example in the e-commerce guide, as one line of a JSON Lines feed. The price is a decimal with an ISO currency code. The variant is named in the title, the URL, and variant_dict.
{"item_id":"MC-320-NVY-M","group_id":"MC-320","listing_has_variations":true,
"variant_dict":{"color":"Navy","size":"M"},
"title":"Merino Crew Sweater, Midweight, Navy, M",
"description":"18.5 micron Australian merino, 320 gsm, fully fashioned shoulders. Machine washable on wool cycle.",
"url":"https://example.com/products/merino-crew?color=navy&size=m",
"brand":"Example Apparel","seller_name":"Example Apparel","seller_url":"https://example.com",
"image_url":"https://example.com/img/merino-crew-navy.jpg",
"availability":"in_stock","price":"148.00 USD",
"gtin":"0123456789012","mpn":"MC320NVYM","condition":"new",
"shipping":"US::Standard:0.00 USD",
"accepts_returns":true,"return_deadline_in_days":30,"return_policy":"https://example.com/returns",
"review_count":412,"star_rating":4.60,
"is_eligible_search":true}The same field, three names
OpenAI, Google, and schema.org describe the same product with different field names. Map them once, in code, so a change to the product changes all three.
| What it is | OpenAI feed | Google Merchant Center | schema.org on the page |
|---|---|---|---|
| ID | item_id (or id, sku) | id | sku |
| Title | title | title | name |
| Description | description | description | description |
| Product page | url | link | url on the Offer |
| Brand | brand | brand | brand.name |
| Main image | image_url | image_link | image |
| Availability | availability: in_stock, pre_order | availability: in_stock, preorder | availability: InStock, PreOrder |
| Price | price: “148.00 USD” | price | price and priceCurrency |
| Sale price | sale_price | sale_price and its effective dates | priceSpecification |
| GTIN | gtin | gtin | gtin13 and the others |
| MPN | mpn | mpn | mpn |
| Condition | condition | condition | itemCondition |
| Variant group | group_id (or item_group_id) | item_group_id | ProductGroup, inProductGroupWithID |
| Variant options | variant_dict, color, size | color, size, variant_option | color, size, variesBy |
| Shipping | shipping, shipping_price | shipping | shippingDetails |
| Returns | accepts_returns, return_deadline_in_days | return, return_policy_label | hasMerchantReturnPolicy |
| Reviews | review_count, star_rating | A separate product ratings programme | aggregateRating |
| Checkout flag | is_eligible_checkout | native_commerce(checkout_eligibility) | None |
Watch the availability values: OpenAI writes pre_order and Google writes preorder. OpenAI rejects a row whose availability it does not recognise. Many third-party guides still show OpenAI’s 2025 names (id, link, image_link, enable_search). Check the current spec before you build.
Google’s conversational attributes
In 2026 Google added optional attributes meant for AI Mode and Gemini, where a shopper asks questions instead of scanning a grid. Google says adding them does not affect approval of existing products, and recommends sending them in a supplemental feed.
question_and_answer: up to 30 question-and-answer pairs per product. Write the questions your support team actually gets (“Does it run small?”), and keep prices and dates out of the answers.related_product: accessories, substitutes, and add-ons, by GTIN or ID.document_link: manuals and spec sheets.variant_optionanditem_group_title: what the variants differ by, and a name for the group.
Best practices
- Titles say what it is, then which one. Brand, product, key attribute, variant. Under 150 characters, no capitals for emphasis, and the same as the page title.
- Descriptions are facts. Materials, dimensions, compatibility, care, and what the product does not do. No links, sale messages, or competitor names. The e-commerce guide explains why specifics beat manufacturer copy.
- The image shows the variant. A direct JPEG or PNG link, no watermarks or text overlays. Google enforces a 500 by 500 pixel minimum from 31 January 2027; Stripe recommends 800 by 800.
- Price and stock come from live systems. Not a nightly export of a nightly export. If stock is uncertain, send
backorderorunknownrather thanin_stock. - The feed, the page, and the markup agree. Google uses page markup to correct feed prices automatically, and disapproves products when it finds a mismatch instead. A repeated mismatch leads to account warnings. Stripe notes that a price mismatch makes checkout fail.
- Reviews are aggregated and real. Count and average rating only, product reviews and not store reviews, updated about weekly.
Mistakes that get products dropped
- A sale price left in the feed after the sale ends.
- Prices written as “$148” or “1,480.00 USD” instead of “148.00 USD”.
- Availability values from the wrong platform’s list.
- Variants without a shared group ID, so they look like unrelated products.
- Invented MPNs, or
identifier_existsset to no for products that do have a GTIN. - Blocking
OAI-SearchBot, which removes the site from ChatGPT search results. - An expired
priceValidUntilin the page markup, or several crossed-out prices on one page, which stop Google’s automatic price updates from working. - Uploading a partial file in a mode that replaces the catalogue. Stripe’s replace mode deletes every product missing from the file.
What is not known
None of the platforms publishes how much a complete feed helps ranking. OpenAI’s help centre says product results are chosen independently and are not ads, and names availability, price, and quality among its factors, without weights. We could not confirm Microsoft’s exact attribute names for Copilot Checkout. Perplexity’s merchant programme page has gone, and PayPal’s Store Sync is the documented route in. In-chat checkout keeps changing: OpenAI stepped back from it in March 2026 while Google and Microsoft expanded theirs. The feed is worth building whichever way that goes, because discovery runs on it either way.
Product feed checklist
- One source of truth for the feed, the page, and the markup
- Feeds live at ChatGPT, Google Merchant Center, and Microsoft Merchant Center, directly or through Shopify or Stripe
- All required fields filled, with the current field names
- A GTIN or MPN on every product that has one
- Variants as separate rows with a shared group ID
- Shipping cost, return window, and review count and rating
- A full refresh daily, and price and stock pushed as they change
- Product pages and images open to
OAI-SearchBotand Googlebot - Merchant Center diagnostics checked after every price or template change
A feed is one of several ways for an agent to reach your business. For services, where people book or change things rather than buy from a catalogue, see the implementation patterns for MCP servers and agent-ready APIs.
Further reading from Field Notes
Dated analysis that builds on this topic.
Stay Updated
Analysis of AI search, crawler policy and agent standards — sent once a month, with every Field Note published that month. Unsubscribe anytime.