ChatGPT product feed: format, upload and WooCommerce
What a ChatGPT product feed is, the fields OpenAI requires, how to connect one in Business Hub, and how WooCommerce and Magento stores make one.
On this page
- 01What is a ChatGPT product feed?
- 02How do I connect a product feed in Business Hub?
- 03What fields does a ChatGPT product feed need?
- 04What does a ChatGPT product feed look like?
- 05How often should I update a ChatGPT product feed?
- 06What are common ChatGPT product feed errors?
- 07How do I make a ChatGPT product feed for WooCommerce?
- 08How do I make a ChatGPT product feed for Magento?
- 09Done for you: ChatGPT setup for your store
- 10How Transica helps
- 11Common questions
- 12Sources
A ChatGPT product feed is a file that lists your products, one row for each item or variant, in the format OpenAI publishes. It gives ChatGPT your current product details, prices and stock. Since 10 November 2026, a business can connect one itself in Business Hub: from Shopify, as a CSV upload, or as a hosted URL that links to the feed file (OpenAI Help Center). Every row needs nine fields: item_id, title, description, url, brand, seller_name, image_url, availability and price. WooCommerce and Magento stores can export their catalog and convert it, or generate the feed from the store's API.
What is a ChatGPT product feed?
OpenAI says retailers can upload a feed to share product details, pricing and availability, and that ChatGPT may use this information to answer customer questions (OpenAI). A Business Agent, the chat a business can publish from its ChatGPT profile, answers from the same product and policy details. Connecting a feed doesn't publish an agent. OpenAI also says a connected feed doesn't guarantee that ChatGPT recommends your products.
A feed can go to three places. All three use OpenAI's product feed spec.
| Where | Who can use it | How the feed gets there | What it's for |
|---|---|---|---|
| Business Hub | Businesses that claim their profile and pass ID verification | Shopify, CSV upload or hosted URL | Product details, prices and stock that ChatGPT may use in answers |
| Merchant program | Approved partners; others apply at chatgpt.com/merchants | SFTP, a secure file transfer to OpenAI's server | Indexing products for ChatGPT's shopping results (OpenAI) |
| Ads Manager | Advertisers | CSV or TXT upload, hosted URL or SFTP | Product ads only, during the beta; not ChatGPT's own answers (OpenAI Help Center) |
How a feed fits with profiles, agents, apps and ads: ChatGPT for merchants.
How do I connect a product feed in Business Hub?
- Claim your business. Open Business Hub from the ChatGPT sidebar or at chatgpt.com/business-hub, find your business and verify by business phone, business email, a DNS record on your domain, or your Shopify store. Steps: how to claim your business in ChatGPT.
- Pass ID verification with Persona. Persona is the identity check service OpenAI uses. You can't connect a feed until it's approved. If it's stuck, see Business Hub verification.
- Connect the feed. Pick one of the three ways in the table below.
- Check your products against the rules. Products in the feed must follow OpenAI's Commerce policies, which rule out categories such as adult content and gambling; tobacco, nicotine and alcohol; weapons; and recalled or unsafe products.
| Way | What you do | Good fit |
|---|---|---|
| Shopify | Connect your Shopify store | Shopify stores. Eligible Shopify products are already in ChatGPT through Shopify Catalog (OpenAI) |
| CSV upload | Upload a CSV file, a spreadsheet saved as plain text, that follows the spec and has its required fields | Small catalogs that rarely change |
| Hosted URL | Give Business Hub a link to the feed file on your server | Stores that generate the feed automatically |
What fields does a ChatGPT product feed need?
Each row is one item or variant a shopper can buy. The examples are from OpenAI's spec.
| Field | What it holds | Example |
|---|---|---|
item_id | Your ID for this item or variant. Keep it stable and never reuse it for another item | MUG-350-BLUE |
title | Product name, including the variant when it matters | Blue ceramic mug, 350 mL |
description | Factual description of the item, in plain text | Dishwasher-safe glazed ceramic mug with a handle. |
url | The product page, with the variant selected when possible | https://example.com/products/mug-blue |
brand | The brand as shown on the product page | Northline |
seller_name | The name of the seller | Northline Home |
image_url | A direct link to the main image, such as a JPEG or PNG | https://example.com/images/mug-blue.jpg |
availability | in_stock, out_of_stock, pre_order, backorder or unknown | in_stock |
price | The regular price: amount, a space, then the currency code | 18.00 USD |
Which optional fields can I add?
OpenAI marks every other field optional, except three that variants need. Useful ones for a store:
| Field | What it holds | Example |
|---|---|---|
group_id | The parent listing ID shared by all variants. Needed for variants | TRAIL |
listing_has_variations | true on every variant row. Needed for variants | true |
variant_dict | The options this row selects. Needed for variants | {"color":"Black","size":"10"} |
sale_price | The current sale price, lower than price | 59.99 USD |
gtin | The product's barcode number, 8, 12, 13 or 14 digits | 09506000134352 |
mpn | The manufacturer's part number | NL-TRAIL-10-BLK |
additional_image_urls | More images of this item | ["https://example.com/images/trail-side.jpg"] |
product_category | Your category path, from broad to specific | Apparel & Accessories > Shoes |
condition | new, refurbished or used | new |
shipping_price | The shipping charge. Empty means unknown, not free | 5.00 USD |
accepts_returns | Whether you take returns of this item | true |
return_deadline_in_days | Days allowed for a return | 30 |
return_policy | Link to your returns policy | https://example.com/returns |
review_count and star_rating | Number of product reviews and their average, out of 5 | 254 and 4.50 |
is_eligible_search | false keeps the item out of search | true |
Three more rules from the spec:
- Text is UTF-8. Aim for titles up to 150 characters and descriptions up to 5,000, in plain text.
- IDs stay the same when price, stock, title or images change.
- Market. The standard upload targets the US.
What does a ChatGPT product feed look like?
Two rows in CSV, the format Business Hub takes for uploads. The first row is the example in OpenAI's spec. A cell that contains a comma goes in double quotes.
item_id,title,description,url,brand,seller_name,image_url,availability,price,sale_price
MUG-350-BLUE,"Blue ceramic mug, 350 mL",Dishwasher-safe glazed ceramic mug with a handle.,https://example.com/products/mug-blue,Northline,Northline Home,https://example.com/images/mug-blue.jpg,in_stock,18.00 USD,
TEAPOT-1L-WHT,"White ceramic teapot, 1 L",Glazed ceramic teapot with a removable steel infuser.,https://example.com/products/teapot-white,Northline,Northline Home,https://example.com/images/teapot-white.jpg,in_stock,42.00 USD,35.00 USDFor JSON Lines, a format with one product per line, see the record in How to sell on ChatGPT.
How often should I update a ChatGPT product feed?
- At least once a day. OpenAI's file upload guide treats each feed as a full snapshot of your catalog and recommends sending one at least daily (OpenAI). The guide is written for SFTP delivery.
- Whenever a price or stock level changes. The spec says to update the price when a sale starts or ends, and
availabilitywhen an item sells out or comes back. Sale dates and stock dates in the feed don't schedule these changes for you. - Removing a product takes time. A product left out of a snapshot isn't deleted at once. OpenAI keeps its last record for up to 14 days. To hide it at the next update, set
is_eligible_searchtofalse.
With a hosted URL, keep the file at that address current. Business Hub's help article doesn't say how often it reads the file.
What are common ChatGPT product feed errors?
OpenAI's upload guide names three common failures: missing required fields, outdated or wrong field names, and malformed values.
| Problem | Fix |
|---|---|
| A required field is empty | Fill all nine fields on every row. An empty or unrecognized availability rejects the row |
| Old or different column names | Use the spec's names. Older names such as id or sku for item_id still work, but send only one name per value |
| Price in the wrong format | Write 79.99 USD: a decimal point, a space and a three-letter currency code in capitals. No thousands separator, and two decimal places for US dollars |
Placeholder text such as n/a or null | Leave unknown optional values empty. unknown is allowed only where the spec lists it, as in availability |
sale_price ignored | It must be above zero, lower than price and in the same currency |
| Variants not grouped | Give each variant its own item_id, the same group_id, listing_has_variations set to true and a variant_dict. The group_id must differ from every item_id |
| GTIN rejected | Use exactly 8, 12, 13 or 14 digits with a valid check digit, and keep leading zeros. ISBN-10 isn't accepted. Leave it out if the item has none |
| Broken links | Use full https links to public pages and images, a direct image file for image_url, and %20 for spaces (OpenAI) |
| Columns shifted in the CSV | Put cells with commas, quotes or line breaks in double quotes, and double any quote inside a cell |
How do I make a ChatGPT product feed for WooCommerce?
WooCommerce doesn't write OpenAI's format. There are two ways to produce it.
- Export and convert. WooCommerce's exporter is under Products > All Products > Export (WooCommerce). Its columns don't match OpenAI's. Prices have no currency code,
In stock?is1,0orbackorder, and there's no column for the product page link (WooCommerce source). Rename the columns, addurl,brandandseller_name, rewrite prices and stock in OpenAI's format, then upload the file. Repeat this each time prices or stock change. - Generate it from the Store API and host it. WooCommerce's Store API lists published products without API keys, at
/wp-json/wc/store/v1/products. Each product comes with its page link, SKU, prices, images and stock status (WooCommerce). A script on a schedule reads it, writes the feed file and serves it at a fixed address, which you add in Business Hub as the hosted URL. Prices come in the currency's smallest unit, so1105with acurrency_minor_unitof2means11.05. Descriptions come as HTML, and OpenAI asks for plain text.
Each variation of a variable product needs its own row, with the parent product's ID as group_id. Some WooCommerce plugins say they produce a ChatGPT feed. WooCommerce ChatGPT integration lists the ones it checked. Compare a plugin's output with the field table above before you connect it.
How do I make a ChatGPT product feed for Magento?
Magento and Adobe Commerce don't write OpenAI's format either.
- Export and convert. In the admin, go to System > Data Transfer > Export, set Entity Type to Products and export a CSV (Adobe). The file uses Magento's attribute names.
url_keyis only the part of the address that identifies the product, andbase_imageis a relative file path, so build the full product and image links from them (Adobe). Mapsku,name,price,special_priceandis_in_stockto OpenAI's fields, addbrandandseller_name, then upload. - Generate it from the API and host it. Magento's GraphQL
productsquery returns prices with their currency, stock status, image links andurl_key(Adobe). Adobe Commerce as a Cloud Service uses Catalog Service instead of that query. The REST endpoint/V1/productsis closed to anonymous callers by default (Adobe). A script on a schedule writes the feed file and serves it at a fixed address for Business Hub.
Each child of a configurable product becomes its own row, with the parent's SKU as group_id. Descriptions come as HTML, so convert them to plain text.
Done for you: ChatGPT setup for your store
ChatGPT setup for your store, done for you. Transica helps you claim your business in ChatGPT, fills in your profile, builds your product feed and keeps it current, sets up your Business Agent, and gives customers an app in ChatGPT for what the agent can't do, like checking an order.
- You claim and verify. Transica guides you through claiming in Business Hub. You do the verification and the Persona ID check yourself, then invite Transica as your agency. OpenAI's help article says the admin who claimed a business can give an agency access to manage the business or its agent (OpenAI Help Center).
- Transica builds the feed. It builds the feed from your store's site or API in OpenAI's format, hosts it, and connects it in Business Hub as a hosted URL.
- Transica keeps it current. Each month it updates prices, stock and sales in the feed, updates the agent and profile, hosts and monitors the app, and sends a note based on the Business Hub insights you share.
It's for US stores first, especially WooCommerce, Magento and custom stores. See the done-for-you service.
How Transica helps
- Free page scan. Scan a product page, with no account, to see whether OAI-SearchBot and other AI tools can read it.
- Your store's own app. OpenAI says the Business Agent can't complete purchases, make bookings or check a customer's order (what it can and can't do). Transica builds an app from your API or website, signs customers in with the login they already have with you, hosts it, and prepares the directory submission. The same app works in Claude. Building is free; hosting starts at $19 a month.
- Free directory check. The MCP directory check, with no account, shows what ChatGPT's and Claude's directories would flag.
Common questions
What format is the ChatGPT product feed?
OpenAI's spec uses one row per item or variant, in UTF-8, with nine required fields and prices written like 18.00 USD. Business Hub takes a CSV upload or a hosted URL; SFTP delivery in the merchant program takes Parquet, or gzipped JSON Lines, CSV or TSV files.
How do I add products to ChatGPT?
Claim your business in Business Hub, pass ID verification with Persona, then connect a product feed from Shopify, as a CSV upload or as a hosted URL. Eligible Shopify products are already in ChatGPT through Shopify Catalog.
How do I make a ChatGPT product feed for WooCommerce?
Export your products from Products > All Products > Export and convert the columns to OpenAI's fields. Or generate the feed from WooCommerce's Store API and host it at a fixed URL for Business Hub.
How do I make a ChatGPT product feed for Magento?
Export products from System > Data Transfer > Export and convert them, building full links from url_key and base_image. Or generate the feed from Magento's GraphQL products query and host it at a fixed URL.
How often does ChatGPT update my products?
OpenAI recommends sending a full snapshot at least once a day, and updating prices and stock when they change. A product you drop from the feed can stay for up to 14 days unless you set is_eligible_search to false.
Does a product feed make ChatGPT recommend my products?
No. OpenAI says connecting a feed doesn't guarantee that ChatGPT recommends your products, and claiming a business doesn't guarantee higher placement.
Does connecting a product feed publish a Business Agent?
No. The agent is a separate step in Business Hub: you review it, preview it with a common question and select Publish.
Sources
Read on 11 November 2026.
- OpenAI developer docs: Products (product feed spec), File upload overview, Get started, Best practices
- OpenAI Help Center: Setting up your business on ChatGPT, Create campaigns from product feeds
- OpenAI: Businesses in ChatGPT, Introducing Businesses in ChatGPT, Commerce policies
- WooCommerce: Product CSV importer and exporter, Product CSV exporter source, Store API products
- Adobe: Data export, Product attributes, GraphQL products query, Anonymous API security