Canonical definition

ACP Product Feed — Definition

Checked against OpenAI’s Stable file-upload schema on 11 September 2026 · By Ievgenii Gryshkun, angeo.dev

TL;DR: An ACP product feed is a structured list of a merchant’s products — one row per purchasable item or variant — that the merchant sends to OpenAI so ChatGPT can show those products with current price and availability. Since March 2026, product discovery is the main job of the Agentic Commerce Protocol (ACP), so the feed is the part of ACP that most merchants actually use. It needs nine fields per row.

What is an ACP product feed?

An ACP product feed is a structured file or API stream of a merchant’s catalogue, with one record per purchasable item or variant, that the merchant shares with OpenAI under the Agentic Commerce Protocol so that ChatGPT can index, display and link to those products with accurate price, availability and seller information.

It is also called a ChatGPT product feed or an AI product feed. The official schema is OpenAI’s Product Feed Spec.

Why does the feed matter more now?

In September 2025 ACP was launched mainly for checkout inside ChatGPT. In March 2026 OpenAI changed direction: merchants now use their own checkout, and ACP was extended to carry product feeds and promotions for discovery (OpenAI, 24 March 2026). OpenAI’s merchant page now describes ACP as supporting product discovery through shared product data.

Is a feed required? No. OpenAI’s merchant FAQ says a store can appear without a feed if ChatGPT already crawls it. A feed gives more control and more current data. So allowing OAI-SearchBot and publishing correct Product schema still come first.

What fields are required?

Nine fields, on every row, in the Stable schema:

FieldWhat it holdsWatch out for
item_idStable ID of the item or variantNever reuse it for a different item. OpenAI matches products by this ID.
titleProduct name, with the selected variantAim for 150 characters or fewer.
descriptionFactual descriptionPlain text, up to about 5,000 characters. No HTML.
urlProduct page, with the variant selected if possiblePublic, absolute, stable.
brandBrand as shown on the pageNo placeholders like “unknown”.
seller_nameWho supplies the offerA real seller name.
image_urlMain image of this variantDirect JPEG or PNG URL, public.
availabilityin_stock, out_of_stock, pre_order, backorder or unknownAn empty or unknown value rejects the row.
priceRegular price as amount CURRENCYWrite 79.99 USD — a space and an ISO 4217 code.

A minimal valid record (JSON Lines):

{"item_id":"MUG-350-BLUE","title":"Blue ceramic mug, 350 mL","description":"Dishwasher-safe glazed ceramic mug with a handle.","url":"https://example.com/products/mug-blue","brand":"Northline","seller_name":"Northline Home","image_url":"https://example.com/images/mug-blue.jpg","price":"18.00 USD","availability":"in_stock"}

Optional fields add detail: sale_price, gtin, mpn, condition, product_category, additional_image_urls, shipping, returns (accepts_returns, return_deadline_in_days, return_policy) and review aggregates.

How are variants represented?

Each size or colour is its own row with its own item_id, price, stock, URL and image. Rows of the same product share a group_id, set listing_has_variations to true, and list the selected options in variant_dict. The group_id must differ from every item_id.

{"item_id":"TRAIL-BLK-10","group_id":"TRAIL","listing_has_variations":true,
 "variant_dict":{"color":"Black","size":"10"}, ... ,"availability":"in_stock"}
{"item_id":"TRAIL-BLK-11","group_id":"TRAIL","listing_has_variations":true,
 "variant_dict":{"color":"Black","size":"11"}, ... ,"availability":"out_of_stock"}

How is a feed delivered and refreshed?

  • Formats: JSON Lines, CSV or TSV, optionally gzip-compressed. A Google-compatible product data file is also accepted, but only after OpenAI confirms it for your registered feed.
  • Delivery: SFTP, API, or supported commerce platforms and feed providers. OpenAI names Salesforce and Stripe as delivery paths. The API has endpoints for feeds, products and promotions.
  • Refresh: a full snapshot is the source of truth, recommended at least daily. Update price and availability whenever they change.
  • Removal: a product missing from a snapshot is kept for up to 14 days. To hide it at once, set is_eligible_search to false.
  • Markets: standard uploads target the US. Other countries need setup confirmed by OpenAI.

What do the eligibility flags do?

FlagDefaultMeaning
is_eligible_searchtrueThe product may appear in ChatGPT search. Eligibility does not guarantee display.
is_eligible_checkoutfalseCheckout in ChatGPT. Works only with a separately enabled integration; not available to most merchants.
is_ads_eligiblefalseThe product may be used for ads in ChatGPT, under a separate Ads feed guide.

How is it different from other product signals?

ACP product feedGoogle Merchant Center feedProduct JSON-LDllms.txt
Read byOpenAI / ChatGPTGoogle Shopping, GeminiAny crawler that parses the pageMostly AI coding tools, rarely shopping bots
Pushed or crawledPushed by the merchantPushed by the merchantCrawledCrawled
UnitOne row per item or variantOne row per item or variantOne product pageWhole site summary
Needed to appear?No, but gives controlFor Google Shopping surfacesStrongly recommendedNo

You usually want the feed and correct Product JSON-LD. They should agree: the same price and stock in the feed and on the page.

How does a Magento catalogue map to an ACP feed?

Feed fieldMagento source
item_idSKU of the simple product (for configurables: the child SKU)
group_idSKU of the parent configurable product
variant_dictThe configurable attributes and the child’s values (for example colour and size)
title, descriptionName and description per store view, with Page Builder HTML reduced to plain text
url, image_urlProduct URL in the store view; child image, or parent image if the child has none
brandMagento has no standard brand field. Map manufacturer or your own brand attribute, and fill gaps
seller_nameStore or company name
availabilitySalable status of the source item (MSI), mapped to in_stock or out_of_stock; backorders to backorder
price, sale_priceRegular price and active special price, with the store view’s currency code

Common mistakes on Magento: an empty brand, HTML left in descriptions, prices without a currency code, and stock that is updated only once a day while the store sells out faster.

How does a merchant get a feed into ChatGPT?

  • Apply at chatgpt.com/merchants. As of 11 September 2026, applicants join a waitlist, and shopping is live for US users only.
  • Shopify and Etsy catalogues are connected automatically. Magento stores are not.
  • OpenAI plans a self-serve merchant portal “later this year”.
  • There are no fees on purchases that start in ChatGPT. The purchase happens on your site.

Tools for Magento

What we don’t know. How much a feed improves placement compared with crawling alone — OpenAI says richer data helps, but publishes no numbers. When the self-serve portal and non-US markets open. Whether checkout through the feed will return for ordinary merchants: the checkout flag still exists in the schema, but needs a separate integration.

Frequently asked questions

What is an ACP product feed?

It is a structured list of a merchant’s products, one row per purchasable item or variant, that the merchant sends to OpenAI under the Agentic Commerce Protocol so ChatGPT can show the products with current price and availability.

What fields does an ACP product feed require?

Nine fields on every row: item_id, title, description, url, brand, seller_name, image_url, availability and price. Price is written as an amount and a currency code, for example 79.99 USD.

Do I need a product feed to appear in ChatGPT?

No. OpenAI says a store can appear if ChatGPT already crawls it. A feed gives more control and more current price and stock data.

How often should an ACP feed be updated?

OpenAI recommends a full snapshot at least daily, and price and availability should be updated whenever they change. A product missing from a snapshot is kept for up to 14 days.

Can I use my Google Merchant Center feed for ChatGPT?

Sometimes. OpenAI accepts a Google-compatible CSV or TSV product data file, but only after it confirms that format for your registered feed. Otherwise use the OpenAI format.

Does the ACP feed enable checkout inside ChatGPT?

No. Checkout needs a separately enabled integration and is not available to most merchants. Since March 2026, purchases that start in ChatGPT normally complete on the merchant’s own site.

Sources

Disclosure: angeo.dev maintains open-source Magento modules that generate ACP feeds. They are free and MIT-licensed.