How to Add Products to ChatGPT With a Product Feed: Steps, Fields and Formats

7 min read

Once your ChatGPT business profile is verified, you can give ChatGPT a list of what you sell, with prices and availability, from a file you control.

Setting one up is quick. What takes care is the detail that gets rows rejected: the price format, the image type, and the nine fields every row needs.

We added a feed to our own profile, and it processed cleanly. This page has the steps we followed and the field rules in one place, so you can build the file once and keep it right.

Get the free ChatGPT Profile Audit Kit

What a product feed is

A product feed is a file that lists your products, one per row, with the same fields for each. You add it in the Products section of ChatGPT’s Business Hub.

It isn’t only for physical goods. We listed subscription plans as digital products. If that’s your situation, see how to list software plans in ChatGPT.

Step 1: choose how the feed is delivered

Setup asks for a feed name, at least one country, an optional currency, and a delivery method. The method decides how your products stay current, so choose it on purpose.

MethodBest forThe catch
Upload a fileGetting started, small catalogs that rarely changeThe file doesn’t update itself
Hosted URLPrices or stock that changeYou host and maintain the file
SFTPLarge catalogsMore setup

An uploaded file is a snapshot. Raise a price next month without uploading a new file, and ChatGPT still has the old one. For anything that changes, start with a hosted URL.

Step 2: build the file

Required fields

Every row needs all nine.

FieldFormatNotes
item_idTextUnique and stable, such as brand-product-variant. Don’t change it once set.
titleTextThe product name plus a few words on what it is. Aim for 150 characters or fewer.
descriptionPlain textFactual. Aim for 5,000 characters or fewer.
urlFull http or https addressMust open without a login.
brandTextYour brand name.
seller_nameTextThe business selling the product.
image_urlDirect linkJPEG or PNG.
availabilityOne of five valuesA missing value rejects the row.
priceNumber, space, currency codeFor example, 49.00 USD.

A sample row

Here’s one product as a CSV header and row, using a made-up store:

item_id,title,description,url,brand,seller_name,image_url,availability,price
acme-wallet-brown,"Acme Leather Wallet, Brown","Full-grain leather bifold wallet with six card slots.",https://www.example.com/products/wallet-brown,Acme,Acme Goods,https://www.example.com/images/wallet-brown.jpg,in_stock,49.00 USD

Optional fields

FieldWhat it’s for
offer_idAn identifier for the offer
conditionSuch as new
product_categoryThe product’s category
is_digitaltrue for software and subscriptions
is_eligible_searchSetting it to false removes a product from search
sale_priceMust be lower than price
target_countriesWhere the product is sold
seller_urlYour website
seller_tosYour terms of service page
seller_privacy_policyYour privacy policy page

This isn’t every optional field. It’s the set we used or confirmed in OpenAI’s documentation.

Value formats

  • Price: a number, a space, and a currency code. No currency symbol.
  • Availability: in_stock, out_of_stock, pre_order, backorder, or unknown.
  • Links: full, public http or https addresses.
  • Images: a direct link to a JPEG or PNG. The part of the spec we read gives no pixel size.
  • Empty values: leave the cell empty. Placeholders such as “n/a” aren’t allowed. The word unknown is valid in the availability field only.

Take the details from your own product pages. Don’t write new claims for the feed. If a product has no listed price, leave it out, because the price field is required.

File types and size

Business Hub accepts Parquet, which it prefers, plus gzipped JSONL, CSV, and TSV, and uncompressed CSV, TSV, and tab-separated text.

  • Text files must be UTF-8.
  • An uploaded file can be up to 20 MiB.
  • A gzip file must also be 20 MiB or smaller once decompressed.
  • Larger feeds use a hosted URL or SFTP.

We uploaded gzipped JSONL. A CSV is the easiest to build in a spreadsheet, and the kit includes a template with the columns in place. We haven’t uploaded a CSV ourselves, so read the preview carefully if you use one.

Step 3: upload and check the preview

  1. In Products, choose to add products.
  2. Enter the feed name and countries.
  3. Choose your delivery method and add the file or URL.
  4. Read the preview.

The preview checks a sample of rows and reports errors before you confirm. Compare the product names and prices with your site. Don’t confirm while errors are showing. Fix the file and upload again.

Step 4: confirm and check the result

After you confirm, Business Hub says processing may take a few minutes to a few hours. Our three-product feed showed as Processed within 12 minutes.

Then check two tabs:

  • Upload history should show Processed.
  • Issues should be empty. Rows rejected after processing appear here, not in the preview.

Likely errors and how to fix them

Our own feed passed the preview with no errors, so we didn’t hit these. We’ve inferred them from the rules above, as a starting point for diagnosis.

SymptomLikely causeFix
Row rejected for priceCurrency symbol, missing code, or no spaceUse 49.00 USD
Row rejected for availabilityEmpty, or a value outside the five allowedUse one of the five values
Image errorWebP, SVG, or a link to a page instead of a fileLink directly to a JPEG or PNG
Row rejected for a placeholder”n/a”, “none”, or ”-” in a cellLeave the cell empty
Link errorRelative link, or a page behind a loginUse the full public address
Sale price errorsale_price equal to or higher than priceMake it lower, or remove it
File rejectedWrong encoding, or over 20 MiBSave as UTF-8, or use a hosted URL
Duplicate productsAn item_id changed between uploadsKeep IDs stable

One difference catches people who’ve just set up their profile photos: feed images must be JPEG or PNG, while profile photos accept WebP.

Keep it current

This is the part that’s easy to forget.

  • If you used a hosted URL, update the hosted file when prices or products change.
  • If you uploaded a file, set a reminder to upload a new one whenever prices change.
  • If you remove a product, it’s kept for up to 14 days after it’s left out of a new file, according to OpenAI’s feed documentation. Setting is_eligible_search to false removes it sooner.

Then back the feed up on your website. Add Product or Offer schema to the pages your feed links to, with the same prices. When we audited our own profile, the feed was fine and the pricing page had no Offer schema at all.

Before you confirm

  1. Every row has all nine required fields.
  2. Prices match your live site.
  3. Each image link opens the image file itself.
  4. The preview shows 0 rows with errors.

The feed is one section of the profile. Our complete guide to ChatGPT business profiles covers the others.

Get the free ChatGPT Profile Audit Kit

Sources and method

The setup screens, accepted file types, size limit, preview, processing time, and tabs are what we saw adding a feed to Rankability’s own profile on November 11, 2026. The required fields, formats, sale price rule, and 14-day retention come from OpenAI’s product feed documentation as we read it that day. The error table is inferred from those rules. The sample row describes a made-up store. If the upload screen and this page disagree, follow the screen, because the product is in beta.