Short answer. To submit products to ChatGPT you apply through OpenAI’s merchant form, build a feed in OpenAI’s product feed specification (nine required fields, JSONL or CSV), deliver it by SFTP as a complete snapshot at least daily or keep it current through the API, and keep doing so, because products missing from your snapshots are kept for up to 14 days and then disappear. This page is each of those steps with the source for it.
Step 1: apply
OpenAI’s Get Started guide says onboarding is currently limited to approved partners and points merchants to an application form at chatgpt.com/merchants. There is nothing to prepare before the form beyond knowing your store, but the feed you build in the meantime is what turns an approval into products on screen, so the two can proceed together.
Step 2: choose how you will deliver
The guide offers two integration methods and a recommendation on combining them: file uploads for a daily full feed, and API updates through the day for what changes fast, prices and availability. A small catalogue with stable prices can live on files alone. A catalogue whose stock moves hourly wants the API on top, or a feed tool that pushes for it.
Step 3: build the feed
The products specification is the reference, and our field-by-field guide walks it. The short version: one row per item or variant; nine required fields (item_id, title, description, url, brand, seller_name, image_url, availability, price); variants grouped with group_id; the eligibility flags set for where each product may appear. If you already have a Google Shopping feed, the conversion guide maps the fields; the values mostly carry over, the XML container does not.
The Get Started guide’s third step is to validate every required field on every record before you upload, and the file upload overview suggests starting with a sample of around a hundred items and checking the first complete snapshot by hand before automating.
Step 4: deliver it
The overview describes delivery as pushing feeds to OpenAI via SFTP, with the SFTP root directory as your catalogue: files go directly in the root, with stable filenames that you overwrite on each upload rather than new names each time, and no completion marker. Each upload is a complete catalogue export treated as the source of truth, not a list of changes. Formats: Parquet with zstd compression is preferred; gzipped JSONL, CSV and TSV are accepted; everything UTF-8. For very large catalogues the overview recommends up to 500,000 items per shard and shard files under about 500 MB.
The API route, described in the same documentation set, upserts products individually and is what the guide suggests for intra-day price and stock changes alongside the daily file.
Step 5: keep it current, or it empties
This is the step that catches people out. The overview recommends uploading at least daily, and says products missing from new snapshots remain accessible for up to 14 days based on their last processed record; to make an item ineligible immediately, set is_eligible_search to false. Read the other way round: a merchant who uploads once and stops has a catalogue that vanishes from ChatGPT in two weeks, silently. A feed that is a habit, a scheduled push every day, is the only kind that stays listed.
FeedRobin does this push for connected stores: the OpenAI JSONL is rendered from your catalogue and delivered to the SFTP root on a daily schedule, with the store name as seller_name, the variant fields filled, and an email if the push fails repeatedly, since a silent failure here is a catalogue that expires. What it cannot do is apply for you: the merchant form is yours.
What to expect afterwards
The public documentation does not state review timelines, regions or fees, and this page does not guess at them. What it does state is the mechanism: approved merchants deliver snapshots, OpenAI processes them, and the eligibility flags on each row decide whether a product can appear in shopping answers, be bought inside ChatGPT (with the separate checkout integration), or be used in ads. Our overview of the channel covers what the experience looks like for a shopper and how Shopify merchants may already be listed without a feed.
Questions merchants ask
Is there a ChatGPT shopping API I can call instead of uploading files?
OpenAI’s Get Started guide offers two integration methods, file upload and API, and suggests combining them: a daily full feed by file, with API updates through the day for prices and stock. Both need the merchant application first; neither is open to anyone with an API key.
How often do I have to upload?
OpenAI’s file upload overview recommends at least daily, as a complete snapshot that overwrites the previous file. Products missing from new snapshots stay visible for up to 14 days from their last processed record, then drop out. A feed nobody refreshes is a catalogue that empties itself in two weeks.
How do I remove a product immediately?
Set is_eligible_search to false on its row in the next snapshot, per the overview. Leaving it out of the file also works, but only after the 14-day retention window.
Which file format should I use?
The overview says Parquet with zstd compression is preferred and that gzipped JSONL, CSV and TSV are accepted; the products specification documents the JSONL, CSV and TSV field layout. For a catalogue under a few hundred thousand items, gzipped JSONL is the simplest that OpenAI accepts.
Sources
OpenAI’s Get Started guide (application form, the two integration methods, validation), the file upload overview (SFTP root, full snapshots, at least daily, 14-day retention, shard sizes), the products specification (fields and formats) and the ChatGPT Ads product feeds page. All fetched 20 September 2026.