Skip to main content
ChatGPT Ads traffic source template ChatGPT Ads is OpenAI’s ad platform for ChatGPT. Ads appear below ChatGPT’s answers, matched to the context of the conversation, and you buy them in OpenAI’s self-serve Ads Manager, on CPM or CPC. This guide sets up ChatGPT Ads as a traffic source in ClickFlare. It covers capturing OpenAI’s click reference and campaign IDs in your reports, and the ways you can report conversions back to OpenAI. You do everything from the campaign editor. The ChatGPT Ads traffic source is created inline, without leaving the campaign.
The ChatGPT Ads template has no postback URL. OpenAI doesn’t accept conversions by S2S postback URL, and ClickFlare has no integration with OpenAI’s Conversions API. OpenAI receives conversions only through the OpenAI Pixel on your pages or through a Conversions API connection you run yourself. See Step 2 below.
ChatGPT Ads is new. As of October 2026 the self-serve tool is Ads Manager Beta, and access depends on where the advertiser’s legal entity is based: the US, the UK, Canada, Australia, most of the EU and many countries in Latin America, the Middle East, Africa and Asia. Ads are not shown to ChatGPT Plus, Pro or Business users, or to accounts identified as under 18. Check OpenAI’s Ads Manager Availability page before you launch. Menus may change during the beta.

At a glance

How it works

1

ChatGPT sends the click

A user clicks your ad. ChatGPT opens your ClickFlare campaign URL with the campaign, ad group, ad and account IDs filled in, and adds its click reference as oppref.
2

ClickFlare stores the click reference

ClickFlare saves the value of oppref as the visit’s External ID, stores the IDs in tracking fields, and redirects the visitor to your lander or offer.
3

The conversion reaches ClickFlare

Your affiliate network or store posts the conversion back to ClickFlare, matched on the ClickFlare click ID.
4

OpenAI learns about it separately

ClickFlare does not post the conversion to OpenAI. If the OpenAI Pixel fires on your conversion page, or you send the event through OpenAI’s Conversions API with the stored oppref, OpenAI attributes it to the ad.
With most networks there is a mirror: the network’s macro in the campaign URL, ClickFlare’s token in the postback. With ChatGPT Ads only the first half exists. The template writes ClickFlare’s parameters (campaign_id, ad_group_id…) with OpenAI’s macros ({campaign_id}, {ad_group_id}…), and reads the oppref that ChatGPT adds itself. There is no postback to send it back in.

Before you start

  • Set up your own tracking domain. Run the campaign on your own custom domain. Shared domains get flagged by networks and blocked by browsers. See Custom Domains.
  • Have an offer ready in ClickFlare, and its affiliate network set up to post conversions back to ClickFlare. See Creating an Offer and Adding an Affiliate Network.
  • Check OpenAI’s Ads Policies. OpenAI reviews the ad, the image and the landing page. Its review crawlers (OAI-AdsBot) must be able to reach the landing page, so don’t block them in your bot filters.
  • Decide how OpenAI will see conversions. If you own the conversion page, you can install the OpenAI Pixel there. If you send traffic to an affiliate offer you don’t control, OpenAI only sees what the pixel catches on your lander, unless you build a Conversions API connection. Plan this before you launch. See Step 2 below.

Step 1 – Create the campaign and the ChatGPT Ads traffic source

  1. Go to Campaigns and click New.
  2. In Traffic Source, open the dropdown and click + New Traffic Source.
  3. Type chatgpt in the search box and select the ChatGPT Ads template.
  4. Enter a Name, for example ChatGPT Ads.
  5. Leave Cost currency on USD unless your Ads Manager account is billed in another currency.
The template fills in the Parameters table for you: The ChatGPT Ads template's Parameters table in ClickFlare, with ChatGPT Ads' macros pre-filled The External ID row has no TS Token on purpose. OpenAI has no macro for its click reference. ChatGPT adds oppref to the end of the landing page URL by itself, in the form ?oppref=gAAAAAb123, the same way Facebook adds fbclid. ClickFlare reads it from the incoming click. The four macros are the ones OpenAI documents. Ads Manager fills them in only when they are set in its Landing page query parameters field. See Step 4. Use ad_group_id and ad_id to find the ad groups and ads that convert.
Don’t remove the External ID row. It is the only place ClickFlare stores OpenAI’s oppref. You need it to pass oppref on to your lander for the pixel, and to send conversions through OpenAI’s Conversions API.
To pass more data, click Add Parameter, give it a name and parameter, and enter a value as the TS Token. ClickFlare assigns the next free tracking field. Use only macros OpenAI documents.

Step 2 – Decide how OpenAI learns about conversions

There is no postback to configure for OpenAI itself. In the New Traffic Source form, leave Traffic source postback URL off and click Save, unless you use the relay in Option C. You are back in the campaign editor with the ChatGPT Ads traffic source selected. OpenAI still needs conversion data, to report results and to run Conversions campaigns. In Ads Manager, conversion events go into a data source, which has a Pixel ID. Create it first. RedTrack’s guide places it under Tools → Conversions → Create → Data Source. Then pick one of the options below.

Option A – The OpenAI Pixel on your conversion page

Use this when you own the page where the conversion happens, for example your own store or lead form.
  1. Install the OpenAI Pixel snippet near the top of the <head> on every page you want to track, with your Pixel ID. Google Tag Manager works too, as long as it loads the pixel before the event calls.
  2. On the conversion page, fire the matching standard event, for example order_created for a purchase or lead_created for a lead.
  3. In Ads Manager, attach that conversion event to the campaign before traffic starts.
The pixel reads oppref from the landing page URL and stores it in a first-party cookie, __oppref, for 30 days. Later conversion events on the same site are linked to the click through that cookie. That only works if oppref reaches the page where the pixel runs. With Redirect tracking, ChatGPT adds oppref to the ClickFlare campaign URL, not to your lander. Pass it on yourself: add oppref={external_id} to your lander’s URL in ClickFlare, for example https://yourlander.com/page?oppref={external_id}. With Direct tracking, ChatGPT adds oppref straight to your lander URL, and the pixel sees it without any change.

Option B – The pixel on your lander only

Use this when you send traffic to an affiliate offer you don’t control. Install the pixel on your lander, pass oppref to it as in Option A, and fire an event on the action you can see, for example a custom event when the visitor clicks through to the offer. OpenAI then reports lander engagement, not the sale. Custom events can’t be the goal of a Conversions campaign, so this helps reporting, not conversion optimization. Your real conversions stay in ClickFlare. Judge campaigns there.

Option C – OpenAI’s Conversions API, from your own system

OpenAI’s Conversions API takes events from your server: a POST to https://bzr.openai.com/v1/events?pid=PIXEL_ID, with a Conversions API key in the Authorization header and a JSON body. Each event carries an id, a type such as order_created, a timestamp_ms and, when you have it, the original oppref. Events must be no older than 7 days. Web events also need a source_url. ClickFlare can’t make that request: its postback is a plain URL call. But it stores what the API needs, the oppref, as the External ID. If you or your developer run a small relay, ClickFlare’s postback can feed it:
  1. Host an endpoint that accepts a URL like https://relay.yourdomain.com/openai?oppref={external_id}&value={payout}&id={cf_click_id} and sends the event to the Conversions API.
  2. On the ChatGPT Ads traffic source, turn on Traffic source postback URL and enter that URL.
  3. In the dropdown on the left, keep Conversions, or choose the custom conversion that should count.
  4. Click Save.
The relay is your own code, not part of ClickFlare. Send oppref exactly as received. If the pixel also sends the same conversion, use the same event ID on both sides so OpenAI deduplicates it. See OpenAI’s Conversions API documentation for the full request format.
Whichever option you use, ClickFlare remains your source of truth for revenue. OpenAI’s conversion numbers will differ from ClickFlare’s. They come from a different data path, take 24 to 48 hours to appear in Ads Manager, may include modeled conversions, and follow the click-through (7, 14 or 30 days) and view-through (0 or 1 day) windows you choose for reporting.

Step 3 – Finish the campaign and copy its URL

  1. Name the campaign.
  2. Set the Cost Model to CPC and enter your expected cost per click. See Cost.
  3. Choose Redirect or Direct tracking. If the OpenAI Pixel sits on your lander, Direct keeps oppref on the lander without extra setup. See Direct Campaign Tracking.
  4. Click Next and, on Destination, add your lander (optional) and your offer.
  5. Save, open Tracking, select your own tracking domain and copy the campaign URL.
The campaign URL contains the template’s parameters, for example campaign_id={campaign_id}&ad_group_id={ad_group_id}. Check it for an empty oppref=. Because the External ID row has no TS Token, the URL may contain oppref= with nothing after it. If it does, delete that part, so the only oppref in the click is the one ChatGPT adds. If you use a lander, its call-to-action must link to the ClickFlare click URL, not to the offer directly. Otherwise the visit reaches the offer without a ClickFlare click ID, and the conversion cannot be traced back to the ChatGPT click. See Creating a Campaign in ClickFlare.

Step 4 – Create the campaign in Ads Manager

Ads Manager fills in its macros only when they are in the Landing page query parameters field. Macros left in the ad’s destination URL are not replaced. Split the ClickFlare URL in two:
  1. Create the campaign, ad group and ad in Ads Manager as usual. Choose the objective: Reach (CPM), Clicks (CPC) or Conversions.
  2. In the ad’s destination URL, paste the ClickFlare campaign URL without the template’s parameters. Keep the part up to the ?, plus any fixed parameters.
  3. Open the three-dot menu on the Campaigns, Ad groups or Ads page and choose Edit campaign, Edit ad group or Edit ad.
  4. In Landing page query parameters, add the four parameters with their macros: campaign_id={campaign_id}, ad_group_id={ad_group_id}, ad_id={ad_id} and ad_account_id={ad_account_id}.
  5. Save, and submit the ad for review.
Setting the parameters at the campaign level covers every ad in it. A more specific level wins: the ad URL, then the ad, the ad group and the campaign. A parameter already in the ad’s URL is never overwritten, so if the template’s parameters stay there, they arrive as raw text. Don’t add oppref to the query parameters. ChatGPT adds it on every click.

Step 5 – Test the integration

  1. Click your live ad in ChatGPT, so the visit comes from ChatGPT Ads. In ChatGPT’s iOS in-app browser, use Share to copy the full link and see its parameters.
  2. In ClickFlare, open the campaign’s report and check that the visit has an External ID. That is the oppref.
  3. Check the tracking-field columns. They should show IDs, not {campaign_id} or other raw macros.
  4. Complete the offer the way a real visitor would and check that the conversion appears in ClickFlare.
  5. If you use the OpenAI Pixel, turn on its debug mode, or open your browser’s developer tools (F12), and check that the pixel and your conversion event fire on the right page. If you passed oppref to the lander, check that the lander URL contains it.
If you use the relay from Option C, go to Logs → Postback Status to see whether ClickFlare called it. On the OpenAI side, the Conversions API’s validate_only option checks events without saving them. Otherwise there is nothing to check under Logs → Postback Status.

Cost

The template doesn’t pass cost. Its Cost row is empty, OpenAI publishes no cost macro, and ClickFlare has no cost integration for ChatGPT Ads. Set the campaign’s Cost Model to CPC and enter your expected cost per click. For Clicks campaigns, use your average CPC from Ads Manager. OpenAI suggests starting bids at 3 to 5 USD, and its auction is second-price, so your average is usually below your bid. For Reach campaigns, bought on CPM, don’t enter your CPM divided by 1,000: an impression below a ChatGPT answer is not a click, so that would understate your cost many times over. Enter your effective CPC instead, the spend divided by the clicks, both from Ads Manager. CPA with your target is an alternative for Conversions campaigns.
Don’t use Not Tracked with this template. It records cost only when the URL or a cost integration provides it, and neither does here, so your cost would show as zero.
Ads Manager’s spend data lags 7 to 8 hours behind clicks. Export daily spend from Ads Manager (Export → Export daily values) and correct ClickFlare with a manual cost upload. See Cost Models.

Troubleshooting

  • The click didn’t come from ChatGPT, for example a direct visit or an OpenAI review crawler (OAI-AdsBot). Crawler visits arrive with your tracking parameters but no oppref. They are not billed.
  • The campaign URL in Ads Manager contains an empty oppref= as well as ChatGPT’s own. Delete the empty one.
  • The External ID row was removed or renamed. Its TS Parameter must be oppref.
The macros were left in the ad’s destination URL. Ads Manager only replaces macros set in Landing page query parameters. Remove them from the URL and add them there. See Traffic Source Tokens Arriving Empty.
  • ClickFlare sends nothing to OpenAI. Conversions come only from the pixel or the Conversions API.
  • With the pixel and Redirect tracking, check that oppref={external_id} is on your lander URL in ClickFlare.
  • The event you send doesn’t match the conversion event attached to the campaign. For custom events, the event name must match exactly.
  • Attributed conversions take 24 to 48 hours to appear.
The Cost Model is Not Tracked. The template passes no cost, so switch to CPC, or upload costs.
Expected. The two counts come from different data paths and attribution rules. See the note at the end of Step 2. Optimize on ClickFlare’s numbers.
For the general checklist, see Conversions not showing.
FREQUENTLY ASKED QUESTIONS
Q1: Why is there no postback in the ChatGPT Ads template?
A1: OpenAI doesn’t take conversions by postback URL. It takes them from its pixel or through its Conversions API, which needs an authenticated server request with a JSON body. ClickFlare’s traffic source postback can’t make that request on its own.
Q2: Does ClickFlare integrate with OpenAI’s Conversions API?
A2: No. ClickFlare stores OpenAI’s oppref as the External ID, so you can send it to the Conversions API from your own system, or through a relay that ClickFlare’s postback calls.
Q3: Should I use Redirect or Direct tracking?
A3: Both capture the click. Direct is the simpler fit if the OpenAI Pixel sits on your lander, because ChatGPT then adds oppref to the lander URL itself. With Redirect, pass oppref={external_id} to the lander. See Direct Campaign Tracking.

Direct campaign tracking

Track without a redirect, with your lander as the destination.

Traffic source postbacks

Every token you can use in a postback, including for a relay.

Manual cost upload

Correct your ChatGPT Ads spend in ClickFlare.

Conversions not showing

The general checklist when conversions don’t arrive.