Checked against OpenAI's commerce docs on 30 September 2026. A ChatGPT product feed is a structured file of your catalog that you send to OpenAI, so ChatGPT can show your products with the right price, stock and link. Many US Shopify stores are already connected through Shopify's Agentic channel. Everyone else applies for direct access, validates a small sample, then uploads a full snapshot at least once a day.
OpenAI requires nine fields on every row: item_id, title, description, url, brand, seller_name, image_url, availability and price. Standard uploads currently target US shoppers. Being in the feed makes you eligible for ChatGPT shopping results. It doesn't guarantee you'll be recommended.
Why most ChatGPT feed advice is already out of date
Most of what's been written about ChatGPT product feeds dates from late 2025, and a lot of it has quietly gone stale. Fifteen-minute refresh cycles, in-chat checkout for every store, "no ads, ever": none of that describes ChatGPT shopping today.
Here's what does. In March 2026 OpenAI refocused ChatGPT shopping on discovery. Shoppers browse, compare and narrow things down inside the conversation, then usually buy on the merchant's own site. Your feed is the data behind all of it.
If that data is thin or wrong, ChatGPT either skips your products or describes them badly. The second problem is worse, because nobody tells you it's happening.
This guide sticks to what OpenAI's documentation says right now. It covers the fields that are actually required, the flags that control where products appear, how to submit, and what to check when a product shows the wrong price or doesn't show at all. We update it when the spec changes.
Three ways to get your products into ChatGPT
There isn't one ChatGPT feed. There are three routes, and the right one depends on your platform and whether you want paid placement.
| Route | Who it's for | What you do | What you get |
|---|---|---|---|
| Shopify Agentic Storefronts | Shopify merchants selling in the US | Check the Agentic channel under Sales channels in your Shopify admin and fill in your store policies | Organic product results without building a feed yourself |
| Direct product feed | WooCommerce, Magento, BigCommerce, custom stacks, marketplaces | Apply at chatgpt.com/merchants, then send your catalog by SFTP file or API | Organic product results, with full control of your data |
| ChatGPT Ads product feed | Brands buying ads in ChatGPT | Create a separate feed in ChatGPT Ads Manager | Paid product placements |
Organic and paid are separate systems. A product can sit in both, and you don't need ad spend to appear organically.
One check before you start: OpenAI doesn't allow some categories at all. Its prohibited products policy excludes adult content, alcohol, nicotine, gambling, weapons and prescription-only medicines, among others.
How to submit your products to ChatGPT, step by step
If you're on the direct-feed route, this is the whole path from application to live products. Shopify merchants can skip to step 8.
- Apply first. OpenAI says feed onboarding is available to approved partners. Fill in the form at chatgpt.com/merchants. OpenAI doesn't publish a review timeline, so apply now and build the feed while you wait.
- Choose file upload, API, or both. OpenAI's own recommendation is a full file once a day, plus API updates during the day for price and stock. A small catalog can run entirely on the API. Promotions can only be sent through the API.
- Map your catalog to the nine required fields. Keep
item_idstable forever. OpenAI matches products by that ID, not by file name, so regenerating IDs looks like a brand-new catalog. - Write descriptions as facts. Materials, dimensions, compatibility, what's in the box. ChatGPT will summarize your copy anyway, so give it facts to work with rather than adjectives.
- Pick a format. Parquet is preferred. Gzipped JSONL, CSV or TSV also work. Use UTF-8 and one stable file name (or a stable set of shards) that you overwrite on every run.
- Validate a sample of about 100 products. Every sample row needs all required fields. OpenAI lists three failures that sink most first uploads: missing required fields, outdated field names, and malformed values.
- Upload the full snapshot and keep it fresh. Push the complete catalog over SFTP, at least daily. A product left out of every shard stays live for up to 14 days, then expires. To pull one faster, set
is_eligible_searchtofalse. - Check how you actually appear. Ask ChatGPT the questions your customers ask, in the categories you sell. Note whether you show up, at what price, and with which description. Most teams skip this step, and it's where the expensive mistakes hide.
The product feed fields that actually matter
OpenAI requires nine fields on every row. Everything else is optional, but optional doesn't mean unimportant: the optional fields are what let ChatGPT answer a shopper's follow-up questions. All of this comes from OpenAI's Products spec.
The nine required fields
| Field | What to get right | Common mistake |
|---|---|---|
item_id |
Stable and unique per item or variant; never reused for a different product | Regenerating IDs on every export |
title |
Include the variant (color, size); aim for 150 characters or fewer | All caps, keyword stuffing |
description |
Plain-text facts; aim for 5,000 characters or fewer | Marketing copy with no specs |
url |
Public product page, with the variant selected where possible | Redirect chains, geo-blocked pages |
brand |
As shown on the product page | Placeholders like "N/A" |
seller_name |
The store name shoppers recognize | A legal entity name nobody knows |
image_url |
Direct JPEG or PNG link showing this variant | Images behind bot protection |
availability |
in_stock, out_of_stock, pre_order, backorder or unknown |
Blank or invented values, which reject the row |
price |
Amount plus ISO currency code, e.g. 79.99 USD |
Thousands separators, or a feed price that differs from the site |
Don't fill gaps with placeholder text. OpenAI's spec says to omit an unknown optional value rather than write null or n/a, and unknown is only valid for availability.
Eligibility flags
| Flag | Default | What it does |
|---|---|---|
is_eligible_search |
true |
Setting it to false removes the product from search and checkout |
is_eligible_checkout |
false |
Opts in only when search is true and checkout is enabled for your integration; also needs seller_privacy_policy and seller_tos URLs |
is_ads_eligible |
false, unless your feed has an Ads default |
Lets ChatGPT Ads process the product; independent of search |
Older names still work: enable_search, enable_checkout, is_eligible_ads, and id or sku for item_id. Send only one name per value, because the spec picks a winner when both appear.
Digital goods: what is_digital does and doesn't do
The spec has one digital-goods field: is_digital, where true means no physical shipment. It sits in a group of fields that OpenAI has to configure for your integration. Adding the column to a standard upload does nothing on its own.
If you sell e-books, courses, templates or software, raise digital support during onboarding. Leaving the field blank doesn't count as "digital". And the nine required fields still apply to every digital item.
Optional fields worth sending
| Field | Why it helps |
|---|---|
group_id, listing_has_variations, variant_dict |
Groups sizes and colors under one listing, so shoppers see options instead of duplicates |
gtin, mpn |
Helps ChatGPT recognize the same product across sellers; a GTIN must be 8, 12, 13 or 14 digits with a valid check digit |
sale_price |
Shows a discount; must be lower than price and in the same currency |
product_category, material, color, size, dimensions, weight |
Answers filter-style questions like "leather, under 2 kg" |
review_count, star_rating |
Supplies the "is it any good?" signal; both must describe the same set of reviews |
shipping_price, accepts_returns, return_deadline_in_days, return_policy |
Answers cost and risk questions before the click; a blank shipping price means unknown, not free |
additional_image_urls |
Extra angles of the same variant |
Formats, delivery and refresh cadence
OpenAI wants a full snapshot of your catalog at least once a day, pushed over SFTP. Each snapshot replaces the last one as the source of truth. The rules below come from OpenAI's file upload overview.
| Topic | What OpenAI asks for |
|---|---|
| Delivery | SFTP push; the API for intraday updates |
| Formats | Parquet preferred, ideally zstd-compressed; jsonl.gz, csv.gz and tsv.gz also accepted |
| Encoding | UTF-8 |
| File names | Keep one stable name (or shard set) and overwrite it every run |
| Shard size | Up to 500,000 items per shard, files under about 500 MB |
| Cadence | Full snapshot at least daily |
| Removal | A missing product expires within 14 days; is_eligible_search=false pulls it at the next processing run |
| Markets | Standard uploads target the US; Canada and Mexico need market setup with OpenAI |
You don't need a "done" marker. OpenAI processes the whole folder once uploads stop changing for a short while, so upload all shards in one go.
Two small things break more feeds than anything else. Keep IDs as strings so leading zeros survive, and quote any CSV cell that contains a comma.
Can you use your Google Merchant Center feed?
Yes, with conditions. There's no button that connects Google Merchant Center to ChatGPT. What OpenAI does offer is a Google-compatible upload path: you export your Google-format feed and upload it, without renaming columns. OpenAI only accepts it after confirming the format for your registered feed.
The differences that trip people up:
- File type. Tab-delimited
.txt/.tsvor comma-delimited.csv, gzip allowed. XML, RSS, JSON and spreadsheets aren't accepted on this path, andg:-prefixed column names won't work. - Required columns.
id,title,description,link,image_link,availability,priceandbrandon every row. - Availability spelling. Use
preorder, not OpenAI'spre_order.unknownisn't accepted, andpreorderorbackorderrows need anavailability_date. - Identifiers. Send a valid
gtinormpnunless you setidentifier_existstono. - Seller name. OpenAI uses the merchant name you registered. An uploaded
seller_namecolumn is ignored. - No per-product opt-out. Every accepted product is search-eligible. Setting
is_eligible_search=falsedoes nothing on this path, so upload only the products you want in ChatGPT.
If you need per-product control or checkout, the native OpenAI format is the better long-term choice. Details are in the Google-compatible section of the Products spec.
How to optimize your feed for ChatGPT recommendations
OpenAI doesn't publish how it ranks products, so treat any "ranking formula" you read with suspicion. What OpenAI does say is that eligibility doesn't guarantee display, and that optional attributes can improve the quality of ChatGPT's answers. The practical job is to make each product easy to match against the questions shoppers actually ask.
- Write titles the way people ask. "Waxed canvas tote, 15-inch laptop sleeve, water-resistant" matches far more questions than "The Everyday Tote".
- Put the specs in the description. Dimensions, materials, compatibility, care instructions. OpenAI accepts plain text or bullet-style text.
- Model variants properly. One row per variant, a shared
group_id, and avariant_dict. Otherwise ChatGPT sees a pile of near-duplicate products. - Keep the feed and the page in agreement. Price, stock and title should match your product page. ChatGPT reads the web as well as your feed, and conflicting data costs you trust.
- Add GTINs to branded goods. They help ChatGPT recognize that your listing is the same item a shopper is comparing.
- Send reviews and return terms. Review counts, ratings and a clear return window answer the "is it worth the risk?" question inside the chat.
- Hold back messy data. OpenAI's best practices suggest leaving out an optional field until its data is stable. A wrong attribute does more harm than a missing one.
Why your products aren't showing up in ChatGPT (and how to fix it)
Most "ChatGPT can't find my products" problems come down to one of five causes. Work through them in this order.
You're not in the feed at all. On Shopify, check that the Agentic channel is switched on and your store policies are filled in. Everyone else: your application may still be pending, or your first upload failed validation. Look for missing required fields and old field names first.
ChatGPT can't read your site. ChatGPT's search uses OpenAI's OAI-SearchBot crawler. If robots.txt or your bot protection blocks it, your product pages can drop out of answers even with a perfect feed. Check your CDN's bot rules too, not just robots.txt.
You're in the feed but never recommended. Eligible isn't the same as chosen. ChatGPT picks products that match the shopper's question, and vague titles give it nothing to match. Rewrite the top 50 titles and descriptions around real customer questions, then re-test.
The price is wrong. Usually the feed and the product page disagree, or a sale ended and the snapshot didn't catch it. Upload at least daily and push price changes through the API. If resellers carry your products, check which seller ChatGPT shows first. The wrong price may be theirs.
ChatGPT says your product is discontinued. Check three places. Your feed: an item stuck on out_of_stock or dropped from the snapshot. Your site: an old product URL returning a 404. The wider web: an old forum thread, retailer page or review saying it was discontinued. The feed and site fixes are yours to make. For the third, publish a clear, current statement on the product page and correct the record where the wrong claim is spreading.
Whatever the cause, fix the source data first, then re-check every AI assistant on a schedule. One-off fixes tend to drift back.
What changed in 2026: checkout, ads and Shopify
ChatGPT shopping has changed direction twice in a year. If you're reading an older guide, these are the updates it probably misses.
| When | What changed | What it means for your feed |
|---|---|---|
| Mid-2026 | OpenAI's Advertiser API now documents product feed campaigns with impression, click or conversion objectives | Paid placement exists. It uses a separate feed in your ad account, the same product schema, and is_ads_eligible=true |
| 24 March 2026 | OpenAI revamped ChatGPT shopping around discovery and let merchants use their own checkout; Target, Sephora and Nordstrom already support it | Your feed now drives discovery. Most purchases finish on your site |
| March 2026 | Shopify upgraded its ChatGPT shopping experience alongside OpenAI's announcement | US Shopify merchants are largely covered by Shopify's catalog integration |
| September 2025 | OpenAI launched Instant Checkout and the Agentic Commerce Protocol | The origin of most "buy inside ChatGPT" advice, much of which no longer applies |
OpenAI explained the March shift plainly: the first version of Instant Checkout didn't give it the flexibility it wanted. In-chat purchase hasn't vanished completely. The is_eligible_checkout flag still exists, but it only works with a separately enabled checkout integration.
How ChatGPT compares with Google AI Mode and Copilot
Each AI assistant pulls product data from a different place. One clean catalog, exported in each platform's format, covers all three.
| Assistant | Where product data comes from | Checkout | Who can take part now |
|---|---|---|---|
| ChatGPT | OpenAI product feed, or Shopify's catalog integration | Mostly on your own site; in-chat only with a separately enabled integration | Approved partners; standard feeds target the US |
| Google AI Mode and Gemini | Your existing Google Merchant Center feed | UCP-powered checkout on Google for select merchants; you stay the merchant of record | UCP onboarding is rolling out in the US, with Canada and Australia next |
| Microsoft Copilot | Shopify, PayPal and Stripe integrations | Copilot Checkout inside the chat; you stay the merchant of record | US; Shopify merchants enrolled by default with an opt-out, others apply |
The common thread is data quality. Titles, specs, GTINs and accurate stock help you on every one of these surfaces, whatever format they arrive in.
How to track whether your products appear in ChatGPT
There's no organic ChatGPT dashboard that shows your product impressions. So you measure it from three angles.
- Run a fixed set of prompts on a schedule. Pick 20 to 30 questions your customers really ask, like "best waterproof trail shoes under $100". Run them weekly and log whether you appear, the price shown and the description used. Keep the wording identical so the trend means something.
- Watch referral traffic. ChatGPT adds
utm_source=chatgpt.comto many outbound links. In GA4, build a channel group for chatgpt.com, perplexity.ai, gemini.google.com and copilot.microsoft.com. - Check feed health. OpenAI's upload history reports rejected rows and missing columns. A product that never made it into the feed can't be recommended.
The first step is the tedious one, which is why most teams stop doing it after a month. Alhena's AI Visibility tracking runs those prompts on a schedule across ChatGPT and other AI assistants, so you can see where your brand shows up and where it's missing.
Frequently asked questions
Does ChatGPT use a product feed, and how do I supply one?
Yes. Merchants share a structured product feed that OpenAI indexes for ChatGPT shopping. Direct onboarding is open to approved partners, who apply at chatgpt.com/merchants. Many US Shopify stores are connected through Shopify's catalog integration instead.
How do I get my products listed on ChatGPT?
Apply for feed access, map your catalog to OpenAI's nine required fields, and validate a sample of about 100 products. Then upload a full snapshot over SFTP at least once a day.
What fields are required in the OpenAI product feed?
Nine: item_id, title, description, url, brand, seller_name, image_url, availability and price. Checkout and ads add their own requirements on top.
What are the digital goods fields in OpenAI's product feed?
There's one: is_digital, where true means no physical shipment. It needs OpenAI to set it up for your integration, so adding the column alone doesn't enable digital handling.
What does is_eligible_checkout do?
It opts a product into in-chat checkout. It only works when is_eligible_search is also true and checkout is enabled for your integration. It also needs privacy policy and terms-of-service URLs.
Can I connect Google Merchant Center to ChatGPT?
Not directly. You can upload a Google-format feed once OpenAI confirms that format for your account. It must be CSV or TSV, not XML, and uses preorder instead of pre_order.
How often should I update my ChatGPT product feed?
OpenAI recommends a full snapshot at least daily. Send price and stock changes through its API during the day. Promotions can only be sent through the API.
Does it cost money to list products in ChatGPT?
OpenAI's commerce docs don't list a fee for sharing a feed for organic discovery. ChatGPT Ads product feed campaigns are paid and run from a separate feed in your ad account.
Is a product feed enough to show up in ChatGPT?
No. The feed makes you eligible, and OpenAI states that eligibility doesn't guarantee display. Whether you're recommended depends on how well your data matches the shopper's question.
Is ChatGPT Instant Checkout still available?
Only in a limited form. In March 2026 OpenAI said the first version lacked flexibility and let merchants use their own checkout. In-chat purchase now needs a separately enabled integration.
Which countries does a ChatGPT product feed cover?
Standard uploads target the US. Canada and Mexico are possible only after OpenAI confirms market setup for your feed.
Do I need a separate product feed for each AI assistant?
Usually, yes. ChatGPT reads OpenAI's feed format, Google AI Mode and Gemini read your Merchant Center feed, and Copilot works through Shopify, PayPal or Stripe. The underlying catalog can be the same.
See how your products appear in AI search
Explore Alhena AI Visibility to inspect product discovery and presentation. Start with the available snapshot, then choose an ongoing monitoring plan that fits the questions and review schedule your team can support.