Skip to content

ChatGPT product feed: nine required fields, and the optional ones that decide what gets surfaced

Daniele Vella
Daniele Vella
Co-founder, CommerceClarity
Published
September 18, 2026
4 min read

A ChatGPT product feed needs nine required fields. Optional attributes give OpenAI the data to filter, compare and surface the right products.

Uploading the file is the short part. Fixing the catalog underneath it is the work.

What OpenAI shipped

Retail advertisers can now upload a catalog into OpenAI Ads Manager and build product-feed campaigns from it.

One limit matters before anything else: during the current beta, products from an ads feed can appear in ads only. OpenAI says they do not appear in organic ChatGPT conversations today.

The feed still matters beyond the campaign. OpenAI uses the same product schema for search eligibility, checkout eligibility and ads eligibility. The flags change. The product data does not.

That makes this an agentic commerce readiness problem before it becomes a media-buying problem.

The timeline matters because the product schema predates the current ads use case. That is why it still carries separate controls for search, checkout and ads.

Four-milestone timeline. September 2025, Instant Checkout launches and people buy inside ChatGPT. March 2026, OpenAI retreats to discovery and merchants keep checkout. June 2026, feeds appear in Ads Manager and ads are generated from catalog rows. September 2026, the spec goes public with nine required fields documented.
The feed OpenAI asks for today is the one it built to take orders. Nothing about the schema changed when the purpose did.

The nine required fields in the OpenAI product feed spec

The OpenAI product feed spec requires these nine fields on every row.

FieldTypeThe rule that matters
item_idStringStable and unique per item or variant. Never reuse it for another product.
titleStringInclude the selected variant when relevant.
descriptionStringFactual, plain-text product description.
urlURLPublic product page, with the variant selected when possible.
brandStringThe brand shown on the product page.
seller_nameStringThe seller supplying the offer.
image_urlURLA direct image URL showing the selected variant.
availabilityStringin_stock, out_of_stock, pre_order, backorder or unknown. Empty and unrecognized values reject the row.
priceMoneyAmount plus currency code, for example 79.99 USD.

Nine sounds manageable until variants enter the picture.

Each variant needs its own item_id, price, availability, URL and images. A proper variant group also needs group_id, listing_has_variations and variant_dict. If color and size live only in the front end, the exported rows lose the relationship the shopper sees on the page.

Uploaded items also expire after two weeks. OpenAI recommends a hosted URL or automated SFTP for catalogs that change often. A manual upload is a test, not an operating model.

Reuse the Google Shopping feed, then inspect what it drops

OpenAI accepts a Google-compatible product feed after it confirms that format for the registered feed.

Use it. It is the fastest way to get live.

Then inspect the gaps. Product feed management is the work of adapting one catalog to each channel's schema, and the compatibility path has its own rules:

  • availability uses preorder, not pre_order, and does not accept unknown.
  • availability_date becomes required for preorder and backorder.
  • seller_name comes from the registered merchant name, not the uploaded row.
  • accepted products have search enabled and checkout disabled. An uploaded is_eligible_search=false does not opt a product out.
  • structured title and description alternatives are not mapped.

The Google feed is a useful starting point. It was built for a results grid, where the image and title do most of the work. A model filters before it explains. That puts more weight on attributes the Google feed may never have needed.

Field by field: OpenAI vs Google Merchant

The names look similar. The requirements are not.

Google Merchant has a core set required for every product, then conditional requirements based on category, identifier, market and destination. OpenAI requires the same nine base fields on every row. Its Google-compatible path accepts only a defined subset of the full Merchant Center schema.

Product dataOpenAI product feedGoogle MerchantWhat changes
Identifieritem_id, requiredid, requiredDirect mapping. Keep it stable and unique per SKU or variant.
Titletitle, requiredtitle or structured_title, requiredOpenAI's Google-compatible path maps the plain title only.
Descriptiondescription, requireddescription or structured_description, requiredOpenAI's compatibility path maps the plain description only.
Product pageurl, requiredlink, requiredSame destination, different column name.
Main imageimage_url, requiredimage_link, requiredDirect mapping. Both expect the image for the submitted variant.
Availabilityavailability, required. Uses pre_order and allows unknownavailability, required. Uses preorder and does not accept unknownThe column maps, but the accepted values do not.
Priceprice, requiredprice, requiredDirect mapping. Keep amount, currency and landing page consistent.
Brandbrand, required on every rowbrand, required when the product has a clearly associated brand or manufacturerA Google row that is valid without brand may fail the OpenAI profile.
Sellerseller_name, requiredMerchant identity sits at account levelOn the Google-compatible path, OpenAI uses the registered merchant name and ignores an uploaded seller_name.
GTINgtin, optionalgtin, required when the manufacturer assigned oneGoogle is stricter. A valid Google feed may already carry the identifier OpenAI can use.
MPNmpn, optionalmpn, required for products without a GTIN when applicableGoogle uses it as a fallback identifier. OpenAI accepts it as additional product identity.
Conditioncondition, optional. New may be assumed when emptycondition, required for used or refurbished productsSame values, different requirement.
Variantsgroup_id, listing_has_variations and variant_dictitem_group_id plus separate color, size, pattern and other variant fieldsThe parent ID maps conceptually, but the OpenAI variant structure is not a column-for-column copy.
Apparel attributescolor, size, gender and age_group are optionalRequired for applicable Apparel & Accessories productsA complete Google apparel feed is usually richer than OpenAI's minimum nine.
Materialmaterial, optionalmaterial, recommended for Apparel & AccessoriesUseful on both. OpenAI can use it as structured product information.
Additional imagesadditional_image_urlsadditional_image_linkSame job, different name and serialization.
Eligibility controlsis_eligible_search, is_eligible_checkout, is_ads_eligibleMerchant Center destinations and excluded_destinationNo direct field mapping. On OpenAI's Google-compatible path, search is enabled and checkout is disabled.

The useful shortcut is the shared core: id, title, description, link, image, availability, price and brand.

The dangerous assumption is that every other Google Merchant attribute comes across with it. It does not. OpenAI documents a compatibility profile, not a full import of the Google Merchant product data specification.

The optional fields carry the comparison

The required fields tell OpenAI that a row is valid. Optional fields describe enough of the product to answer a specific request.

Take a simple query: waterproof trail shoe, black, size 10, under 100 euro.

The feed needs color, size, material, price and availability to answer it cleanly. The spec also supports gtin, mpn, condition, product_category, gender, age_group, dimensions, weight, sale_price, shipping_price, returns, review_count, star_rating and additional images.

OpenAI is careful here: eligibility does not guarantee display. Still, a missing attribute gives the system no structured value to filter on.

This is a catalog foundation problem. The same constraint showed up when we read the Claude Commerce Agents code: filters read fields first. Text ranks what survives.

Two cards compare required and optional fields. The required card lists item_id, title, description, url, brand, seller_name, image_url, availability and price. The optional card lists identifiers, product attributes, dimensions, price and shipping fields, returns, reviews, images, custom labels and ads metadata used for filtering and comparison.
Nine fields decide whether the row is accepted. Optional attributes give OpenAI more data to filter and compare it.

Ads and organic discovery are separate today

The schema includes three controls:

  • is_eligible_search controls search eligibility.
  • is_eligible_checkout controls direct purchase and depends on search eligibility plus an enabled integration.
  • is_ads_eligible controls ads processing.

But an ads feed does not create an organic ChatGPT presence during the beta. OpenAI says those products are eligible for ads only.

So the immediate use case is clear: upload a compliant feed, mark the products eligible for ads, keep price and availability current, then select products in Ads Manager.

The longer-term value is the catalog work behind it. The same complete product record can be mapped to another marketplace, on-site search, a PDP or a future AI shopping surface without rebuilding the knowledge each time.

What this asks of your catalog

Most teams will not struggle with the CSV.

They will struggle with the rows.

A title has to name the variant without turning into a keyword dump. Availability has to match the enum and be current. GTINs need their leading zeros. Dimensions need units. Material, color and size have to exist as fields rather than clues buried in prose.

CommerceClarity agents generate and validate those attributes against the retailer's rules. Governance keeps uncertain values in review before they reach a channel.

The feed is the output. The catalog process decides whether it works.

Book a demo and we will audit a sample of your catalog against the OpenAI product feed spec, field by field.

Questions people ask

What is a product feed, and do I need one for ChatGPT?
A product feed is a structured file with one row per SKU or variant. It carries the fields a platform uses to show, filter and price the product. You need one to run product-feed campaigns in ChatGPT Ads Manager.
What are the nine required fields for a ChatGPT product feed?
item_id, title, description, url, brand, seller_name, image_url, availability and price. Variants add conditional fields such as group_id, listing_has_variations and variant_dict.
Can I reuse my Google Shopping feed?
Yes, after OpenAI confirms the Google-compatible format for your registered feed. Check the different availability values, seller identity, eligibility controls and unsupported structured title and description fields before treating it as finished.
What do I lose by reusing the Google feed?
You lose per-item search controls on that compatibility path, checkout stays disabled, and only the supported profile reaches OpenAI. The larger risk is catalog depth: a feed designed for a visual shopping grid may be thin in the optional attributes a model needs to filter products.
Will the feed make my products appear in normal ChatGPT answers?
No, not during the current ads beta. OpenAI says products from an ads feed are eligible for ads only and do not appear in organic ChatGPT conversations.
How do I run ads on ChatGPT from a product feed?
Create a feed in Ads Manager, import it by file, hosted URL or SFTP, fix validation errors, select the feed in a product-feed campaign, filter the eligible products and launch the campaign. Keep the feed fresh because uploaded items expire after two weeks.