ChatGPT product feed: OpenAI’s spec and where the category goes

A ChatGPT product feed is a file of your catalog that OpenAI ingests so ChatGPT can show your products with current prices and stock. OpenAI’s spec asks for nine fields on every row: item_id, title, description, url, brand, seller_name, image_url, availability and price. The category is optional. In OpenAI’s own format it goes in product_category as a path such as “Apparel & Accessories > Shoes”. In a Google-compatible feed, OpenAI reads product_type first and only falls back to google_product_category when product_type is empty.

What this comes down to

  • OpenAI’s product spec requires nine fields per row: item_id, title, description, url, brand, seller_name, image_url, availability and price.
  • In OpenAI’s format the category is product_category, written as a path from broad to specific, separated by >.
  • In a Google-compatible feed, the first product_type value takes precedence over google_product_category.
  • File feeds are full snapshots pushed by SFTP, at least daily; an API takes product updates and promotions in between.
  • OpenAI says feed onboarding is currently available to approved partners, who apply through a form.

SellerSort Team · Updated

What the feed is for

OpenAI’s commerce documentation describes the product feed as the data ChatGPT uses for product discovery: what you sell, what it costs and whether it is in stock. Ads and checkout sit on top of it with requirements of their own, and checkout needs a separately enabled integration. This guide covers the discovery feed, which is the part every merchant needs first.

Access is not open yet. OpenAI says onboarding product feeds is currently available to approved partners, who apply through a form on its commerce site. The feed is worth preparing anyway, because most of it is the data a Google feed already holds.

It follows the same idea as a Google Shopping feed, one row per product or variant, which is why so much of it will look familiar. The product feed guide covers the general idea if this is your first feed.

If your feed already sends product_type, that, not your Google category, is what ChatGPT reads.

The nine required fields

Required fields in OpenAI’s product feed
FieldWhat goes in it
item_idA stable ID, unique per item or variant, never reused
titleThe product name, with the variant when relevant
descriptionA factual, plain-text description
urlThe product page, with the variant selected when possible
brandThe brand as shown on the product page
seller_nameThe seller of this offer
image_urlA direct link to the main image of this variant
availabilityin_stock, out_of_stock, pre_order, backorder or unknown
priceAmount and currency code, for example 79.99 USD

A missing or unrecognised availability value rejects the row, so send unknown explicitly rather than leaving it blank. For optional fields the spec says the opposite: leave an unknown value out, and do not write placeholders such as n/a.

A minimal row, in the JSONL form OpenAI shows:

{"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","product_category":"Home & Garden > Kitchen & Dining > Tableware > Drinkware > Mugs"}

Where the product category goes

OpenAI accepts two shapes of file, and the category travels differently in each.

OpenAI’s own format

The field is product_category: your category path, from broad to specific, separated by >. OpenAI’s example is a Google taxonomy path, so the path you already use for Google works unchanged. Note that it is the path, not the numeric ID that Google prefers. The taxonomy download has both side by side, so a lookup from ID to path is one column.

A Google-compatible feed

OpenAI also reads a Google-style file, but only after it confirms that format for your registered feed, and only as CSV, TSV or TXT. XML and spreadsheets are not part of this route. Here two of Google’s fields map to OpenAI’s category, in a set order:

  • The first non-empty value in product_type wins.
  • google_product_category, as an ID or a path, is used only when product_type is empty.

That order matters more than it looks. Many stores fill product_type with their own navigation, such as “Sale > Summer”, which is fine for Google, where it sits beside the Google category. In this profile it is the only category ChatGPT gets. If your product_type values are internal labels, consider making them descriptive paths. The product type guide explains how the two fields differ.

One exception needs the ID: a zero-price phone or tablet sold with a subscription must carry google_product_category 267 (mobile phones) or 4745 (tablets). A path does not qualify.

How the feed is delivered

  • Push, not fetch. You upload to an SFTP location; OpenAI processes every file in its root directory.
  • Full snapshots. Each upload is the whole catalog, at least daily, under the same file names each time.
  • Formats. Parquet is preferred; jsonl.gz, csv.gz and tsv.gz are also supported.
  • Removal. A product left out of later snapshots is retained for up to 14 days before it expires.
  • Market. The standard upload currently targets the US; other markets need OpenAI to confirm them for your integration.

OpenAI suggests starting with a sample of around 100 items, every one carrying all the required fields, and checking the first full snapshot before automating it.

The API route

OpenAI also takes product data by API, with endpoints for feeds, for products and for promotions. Products are upserted by ID, so a price or stock change can go out as soon as it happens. Promotions can only be sent this way. OpenAI’s recommended setup is both at once: the daily file for the full catalog, and API updates during the day.

In the API, a product’s category is an object with two parts: the value, a label or a hierarchical path, and the taxonomy it comes from, where google_product_category is one of the named options. A Google taxonomy path can therefore travel labeled as exactly what it is.

Starting from a Google feed you already have

Most of the work is renaming: id becomes item_id, link becomes url, image_link becomes image_url. Three things do not carry over by renaming alone:

  • seller_name has no Google equivalent and is required on every row in OpenAI’s format.
  • Availability is spelled pre_order in OpenAI’s format and preorder in Google’s.
  • The category moves from an ID in google_product_category to a path in product_category.

If your catalog has no Google categories yet, the Bulk Mapper returns the ID and the full path for every row, so the same run fills both feeds.

Questions

Is product_category required in the ChatGPT product feed?

No. It is optional in OpenAI’s spec. The nine required fields are item_id, title, description, url, brand, seller_name, image_url, availability and price.

Can I send my Google Merchant Center feed to OpenAI?

OpenAI supports a Google-compatible profile, but only after it confirms that format for your registered feed, and only as a CSV, TSV or TXT file. XML feeds are not supported on that route.

Should product_category be a Google category ID or a path?

A path. OpenAI describes product_category as a category path from broad to specific, separated by >, and its example is a Google taxonomy path. Google category IDs are accepted in google_product_category on the Google-compatible route.

How often should the feed be updated?

OpenAI recommends a full snapshot at least daily, uploaded under the same file names each time, with API updates for changes during the day.