~8 min left
feedgraph/resources/build-a-chatgpt-ads-feed
ChatGPT AdsOpenAIFeed BuilderAgentic Commerce8 min read

Build a ChatGPT Ads Feed

How to produce a validated ChatGPT Ads product feed in OpenAI's commerce schema, host it so it does not decay, prove OpenAI's crawlers can reach you, and write the context hints that replace keywords.

What you're building

A product feed for ChatGPT Ads, written in OpenAI's own commerce schema and served from a hosted URL that always reflects your current catalogue. Plus the two checks that decide whether the campaign actually serves anything, and the context hints that carry your relevance.

FeedGraph produces and hosts the file. You connect it in OpenAI's Ads Manager — FeedGraph does not deliver to ChatGPT and does not read results back, because OpenAI's Ads API is restricted to partner accounts.

First, the three silent failures

Worth knowing up front, because all three look identical to a campaign that is merely waiting:

1. Products expire. ChatGPT drops a product 14 days after it stops appearing in a feed snapshot. A one-off CSV upload decays one product at a time and nothing tells you.

2. Crawler access fails quietly. A 403 for OAI-AdsBot on a landing page fails ad review. A 403 for OAI-SearchBot on your image host stops the entire feed being processed.

3. There are no keywords. ChatGPT Ads has none. Ad-group context hints are the only relevance lever, and an ad group without them has nothing to match a conversation against.

Steps 4 and 5 below exist specifically for the second and third.

Step 1: Set your seller name

ChatGPT requires seller_name on every row, and it has no equivalent in the Google or Meta schema — so if you are coming from either, you have no value for it. Set it once as an account setting; you can override it per product.

FeedGraph treats a blank value as a warning rather than a blocked export, because it is one settings field and not a per-product data problem. The warning says plainly that ChatGPT will reject every row without it. It will not stop you exporting, so do not ignore it.

Step 2: Open the ChatGPT Ads feed

Either route works:

  • Channel feeds → the ChatGPT Ads tab. It is labelled "feed file only" so nobody on your team assumes FeedGraph is delivering it.
  • Advanced feed tools → choose ChatGPT Ads as the platform, for exact control over mapping and transforms.

If you already have a Google or Meta feed you are happy with, use Format conversion instead and reshape that one — the selection, filters and enrichment come with it.

Step 3: Check the mapping

FeedGraph maps your catalogue onto OpenAI's schema automatically. The fields worth reviewing, because they are the ones that differ most from Google:

- item_id — one row per variant, not per product. A product in five sizes is five rows.

- price — a single string with the currency in it, e.g. 79.99 USD.

- availabilityin_stock, out_of_stock, pre_order, backorder or unknown.

- product_category — a free-form >-separated path, not the Google taxonomy, and deliberately not validated against it.

- group_id — ties variants of the same product together.

  • Ads metadata — populated from your FeedGraph custom labels, and read by ChatGPT ad-group product filters. This is the biggest carry-over from work you have already done: if your segments already drive custom labels for Google Ads, your ChatGPT targeting is already built.

Step 4: Publish to a hosted URL

Publish the feed and copy the hosted URL. It is token-protected, always reflects your current catalogue, and refuses to serve an empty feed — so a validation problem cannot silently take your whole ChatGPT catalogue offline.

Register that URL in Ads Manager rather than uploading a file. This is the fix for silent failure number one.

Step 5: Run the OpenAI crawler check

FeedGraph reads your robots.txt, then fetches a real landing page and a real product image as OAI-AdsBot and OAI-SearchBot, and reports each as ok, blocked, warning or unreachable.

Two different permissions, and people usually only think about the first:

  • Landing pages must be reachable by OAI-AdsBot, or ad review fails.
  • Product images must be reachable by OAI-SearchBot. If your images are behind a CDN or WAF that blocks unknown bots, feed processing stops entirely.

Fix anything blocked before you launch, then re-run the check.

Step 6: Draft your context hints

Because ChatGPT Ads has no keywords, context hints are how the ad group knows which conversations your products belong in. FeedGraph drafts them grounded in the products actually in your selection — their categories and real price range — rather than in general terms, and rejects keyword lists and delivery instructions instead of passing them through as hints. Two credits per run.

Copy the results into your ad group in Ads Manager.

What FeedGraph will not do here

Worth being explicit, so nobody waits for a screen that does not exist:

- It does not create or edit ChatGPT campaigns, ad groups or ads.

- There is no ChatGPT spend, revenue or ROAS in FeedGraph, so ChatGPT is absent from the Advertising overview, Ad performance and Smart bidding.

- It cannot read back the feed-upload diagnostics OpenAI exposes over its API.

All three are the same cause: the Ads API is partner-gated with no self-serve application path. What FeedGraph can tell you is whether the feed is valid and whether the crawlers can reach you.

Try FeedGraph free

FeedGraph is in early access. Apply to join and get onboarded personally.

Join early access →