The OpenAI product feed: the fields ChatGPT reads

A field-by-field guide to OpenAI's product feed specification for ChatGPT: what's required, how it maps from a Google or Meta feed, and the rules that trip people up.

AI Shopping Feeds Updated

Comparison details were checked against their public websites on 28 October 2026. Products change, so check their current pages before deciding. Corrections: support@aishoppingfeeds.com .

Illustration of a speech bubble resting on a stack of index cards

If you’ve been approved for OpenAI’s product feed programme, or are getting ready to apply, the next question is what the file needs to contain. This is a field-by-field walk through OpenAI’s product specification, as published when we checked on 28 October 2026, with notes on how each field maps from a Google Shopping or Meta catalogue feed.

For the bigger picture, including Shopify’s route into ChatGPT and the search crawler, start with how to get your products into ChatGPT Shopping.

The file

From OpenAI’s specification and onboarding guide:

  • Format: examples are JSONL, one product per line. CSV and TSV are also accepted.
  • Encoding: UTF-8, with absolute URLs, preferably HTTPS. Product and image URLs must be publicly reachable.
  • Delivery: approved merchants upload over SFTP. OpenAI recommends a full catalogue snapshot at least once a day.
  • Empty means empty. Leave a field out, or send null, rather than writing placeholders like n/a or unknown, except where unknown is a listed value.
  • Identifiers as text. Keep IDs and GTINs as strings so leading zeros survive.

The nine required fields

OpenAI fieldGoogle / Meta equivalentNotes
item_ididStable and unique per item or variant. Never reuse for a different product.
titletitleInclude the variant where relevant. Aim for 150 characters at most.
descriptiondescriptionFactual plain text, 5,000 characters at most.
urllinkThe product page, with the variant selected where possible.
brandbrandAs shown on the product page. No placeholders.
seller_namenoneThe name of the seller supplying the offer. Required on every row.
image_urlimage_linkThe main image for this variant, as a direct link.
availabilityavailabilityin_stock, out_of_stock, pre_order, backorder or unknown. Note the underscores.
priceprice79.99 USD format: a decimal point, no thousands separators, upper-case currency code.

Availability is strict. A missing or unrecognised value rejects the row. Google’s in stock with a space isn’t the same as in_stock.

Variants

Variants are where most feeds need work. OpenAI uses three fields together:

  • group_id, the parent listing ID shared by all variants, equivalent to item_group_id. It must differ from item_id.
  • listing_has_variations, set to true on every variant row.
  • variant_dict, an object mapping option names to values, such as {"colour": "Ocean Blue", "size": "750ml"}.

variant_dict is only used when the other two are set correctly. Use the same option names across a group, and make sure each combination is unique. OpenAI’s best practices add that title, URL, image, availability and price should be specific to each variant where they differ.

Identifiers

  • gtin: exactly 8, 12, 13 or 14 digits with a valid check digit. No spaces or dashes. Leave it out if the product doesn’t have one.
  • mpn: keep its punctuation and capitals, and send it with brand. OpenAI says not to invent one to fill a missing GTIN.
  • offer_id: optional, for telling apart offers that share a URL. Never put the price in it.

Product details

All optional, but each one answers questions shoppers ask:

  • condition: new, refurbished or used. OpenAI notes that a missing value may be treated as new, so always set used and refurbished items.
  • product_category: a path from broad to specific, separated by >.
  • color, size, material: free text, consistent with variant_dict.
  • gender (male, female, unisex) and age_group (newborn, infant, toddler, kids, adult).
  • dimensions and weight: the product’s own measurements, not the package’s, with units.
  • additional_image_urls: an array in JSONL, comma-separated in CSV.

Price, sales and stock

  • sale_price must be above zero, below price and in the same currency. If it isn’t, it’s ignored and price is used.
  • No scheduled sales. Unlike Google’s sale_price_effective_date, the OpenAI specification doesn’t schedule sale dates. Update prices when the sale starts and ends.
  • Stock is availability only. There’s no quantity field, and pre_order and backorder don’t schedule a change. Update the row when the status changes.

Shipping, returns and reviews

  • shipping_price: the charge, in the same currency as price. Leaving it out means unknown, not free.
  • accepts_returns and return_deadline_in_days: whether returns are accepted and for how long. A return policy URL alone doesn’t set them.
  • review_count and star_rating: product reviews only, not store reviews, describing the same set of reviews. Leave both out if there are none.

Eligibility flags

FlagDefaultWhat it does
is_eligible_searchOnLets the product appear in ChatGPT. Turning it off also turns off checkout.
is_eligible_checkoutOffNeeds search on, checkout enabled for your integration, and the seller’s privacy policy and terms URLs.
is_ads_eligibleOffSeparate from search. Needs an ads integration.

OpenAI is clear that eligibility doesn’t guarantee a product will be shown.

Countries

One detail matters for anyone selling outside the US. The specification’s geo fields, target_countries and store_country, need setup with OpenAI, and the standard upload targets the US. If you sell in the UK or elsewhere, ask about country targeting during onboarding rather than assuming your feed covers every market.

A checklist before your first upload

  • Every row has the nine required fields
  • availability uses OpenAI’s values with underscores
  • seller_name set on every row
  • Variants have group_id, listing_has_variations and variant_dict
  • GTINs valid, or left out
  • No placeholder text in empty fields
  • Sale prices below regular prices, same currency
  • Daily full snapshot scheduled
  • Country targeting confirmed with OpenAI

The data work behind most of these, such as clear titles, factual descriptions and complete attributes, is what AI Product Optimisation does across a catalogue, and the feed audit catches missing and invalid values before you export.

Frequently asked questions

Which fields are required in the OpenAI product feed?

Nine: item_id, title, description, url, brand, seller_name, image_url, availability and price. Rows with a missing or unrecognised availability value are rejected.

Can I reuse my Google Shopping feed for ChatGPT?

Most of the data, yes, but not the file as it is. Field names differ (id becomes item_id, link becomes url, image_link becomes image_url), seller_name is new, availability uses underscores, and some Google features such as scheduled sale dates have no equivalent.

Does the OpenAI feed support sale prices?

Yes, through sale_price, which must be above zero, below price and in the same currency. The specification doesn't schedule sales, so you update the price when the sale starts and ends.

Sources

Keep reading

Start free · No card

Why wait? Start free.

See your products rewritten in 60 seconds. Add a card only when you go live.

  • Start free, no card: import your catalogue and run the feed audit
  • 10 free AI credits to see your product titles rewritten
  • Go live with a 7-day free trial of Growth ($29/mo) or Pro ($49/mo)
  • Pay-as-you-go AI credits after the free 10, from $5