How to Set Up ChatGPT Ads Conversion Tracking: Pixel, Conversions API & LINE Leads

- Why does conversion tracking matter for ChatGPT Ads?
- Step 1: How do you create a data source and Pixel ID?
- Step 2: How do you install the OpenAI Pixel?
- Step 3: Which conversion events should you send?
- Step 4: How do you add the Conversions API without double counting?
- Step 5: How do you keep the click ID through redirects?
- Step 6: How do you track LINE leads from ChatGPT Ads?
- Step 7: How do you test that tracking works?
- FAQ
- Need ChatGPT Ads tracking set up properly?
To track conversions from ChatGPT Ads, create a website data source in OpenAI Ads Manager to get a Pixel ID, install the OpenAI Measurement Pixel on every page, and send a standard event such as lead_created when a customer acts. Then add the Conversions API from your server, using the same event IDs so nothing is counted twice. Keep OpenAI's click reference intact through every redirect, and treat a tap on your LINE button as a lead event.
Below is the full setup in seven steps, based on OpenAI's conversion measurement guide and developer documentation. Tracking is the part of ChatGPT Ads that decides whether you can judge campaigns on enquiries instead of clicks, which is why our ChatGPT Ads management service sets it up before any ad goes live.
Why does conversion tracking matter for ChatGPT Ads?
Without tracking, Ads Manager can only show impressions, clicks, spend, click-through rate and average costs. With tracking, it adds conversions, so you can see which campaigns and ads bring leads, bookings or sales. Tracking is also a requirement for the Conversions objective, where ChatGPT Ads optimises delivery toward the event you choose. As our guide to ChatGPT Ads costs explains, that objective is still billed per click or per impression, so accurate conversion data is what tells you whether the spend is working.
Step 1: How do you create a data source and Pixel ID?
In Ads Manager, open the conversions area and create a website data source. Ads Manager returns a Pixel ID, which identifies that source for everything that follows: the browser Pixel, server events and event monitoring.
Create one data source per website and reuse it. If you send events from both the browser and your server, both must use the same data source. Even a server-only setup needs a Pixel ID, although it does not need the browser Pixel installed.
Step 2: How do you install the OpenAI Pixel?
Add the installation snippet from Ads Manager to the <head> of every page where you want to measure events, placed near the top so early conversions are not lost while the rest of the page loads. The only required setting is your Pixel ID. An optional debug mode logs Pixel activity to the browser console, which is useful while testing. You can add the snippet through your theme's header or through a tag manager, as long as it loads on every page; our guide to Google Tag Manager for marketers covers the tag manager side.
Three settings deserve attention during installation:
- Consent. The Pixel treats consent as granted unless you set it to false or it finds a stored denial. If your site needs consent before measurement, connect your consent banner so consent is set before the Pixel initialises. Events blocked while consent is false are not replayed later.
- Content Security Policy. If your site enforces a CSP, allow
bzrcdn.openai.comfor the script andbzr.openai.comfor sending events. - Automatic advanced matching. When enabled, the Pixel detects supported customer information on your site, such as a form email, and hashes it in the browser with SHA-256 before sending. Raw customer details are not sent to OpenAI.
Step 3: Which conversion events should you send?
OpenAI provides a fixed list of standard events. Use a standard event whenever one fits, because only standard events can drive the Conversions objective. The ones Thai service businesses use most are:
lead_created: a visitor submits a lead form or requests contact.appointment_scheduled: a visitor books a meeting, demo or consultation.order_created: a purchase is completed.registration_completed: a visitor finishes an account or event registration.page_viewedandcontents_viewed: useful for context, but rarely the conversion you want to optimise for.
Fire the event when the action actually succeeds, such as a successful form submission or a confirmed booking, not when someone first clicks a button. A lead event in the Pixel looks like this:
oaiq("measure", "lead_created", { type: "customer_action" }, { event_id: "lead_10482" });
For anything the standard list does not cover, you can send a custom event with its own custom_event_name. Custom events appear in reporting, but they cannot be the optimisation goal of a Conversions campaign.
Sending an event does not make it a conversion by itself. In Ads Manager you then create a conversion event setting that picks the event from your data source, and attach that setting to the campaigns you want to measure.
Step 4: How do you add the Conversions API without double counting?
The Conversions API sends events from your server instead of the visitor's browser, so it still records conversions when a browser blocks scripts or the visitor closes the page early. OpenAI recommends using the Pixel and the Conversions API together for more resilient measurement. The principle is the same one we describe in our comparison of the Facebook Conversion API and the Pixel.
Your server sends events to OpenAI's events endpoint with your Pixel ID and a dedicated Conversions API key, which is separate from any other Ads Manager key and belongs on the server only. Events go in batches of up to 1,000, and one invalid event fails the whole batch, so test with the validate_only option first. Send the real time of the action as the timestamp.
De-duplication is the step that keeps your numbers honest. When the same conversion is sent from both the Pixel and the server, use:
- the same Pixel ID,
- the same event name, such as
lead_created, - the same event ID:
event_idin the Pixel andidin the Conversions API.
OpenAI keeps the first event it receives for that combination and ignores later duplicates. Your form submission ID, booking reference or order number makes a good event ID, because the browser and the server both know it.
Step 5: How do you keep the click ID through redirects?
When someone clicks your ad, OpenAI appends a click reference called oppref to your landing page URL, for example ?oppref=…. The Pixel reads it and stores it in a first-party cookie called __oppref, so later events on your site can be matched to the ad click. The Conversions API does not capture it for you: read it from the landing URL or the cookie, pass it to your server, and include it unchanged with the server event.
The click reference only works if it survives the journey. Check every redirect a visitor might pass through:
- http to https, and non-www to www,
- trailing-slash and language redirects, such as an English URL sending Thai visitors to
/th/, - link shorteners, booking engines and forms hosted on another domain.
Any redirect that drops the query string drops the click reference, and the conversion can no longer be tied to the ad. Test by opening your ad's landing URL with a test oppref and UTM parameters added, and confirm they are still in the address bar when the page finishes loading. The UTM parameters you add to ad URLs also persist on ad clicks, which is how ChatGPT Ads traffic shows up clearly in GA4; our guide to measuring AI traffic in GA4 shows where to find it.
Step 6: How do you track LINE leads from ChatGPT Ads?
For many Thai businesses, the most valuable lead is not a form. It is a LINE chat. Your website cannot see the message inside LINE, but it can see the moment a visitor taps your LINE button, and that tap is the conversion to measure.
Send lead_created with a unique event ID when a visitor taps your LINE chat button. OpenAI defines that event as a visitor who submits a lead form or requests contact, and opening a LINE chat is a request for contact. Because it is a standard event, a Conversions campaign can optimise toward it. If you also need LINE leads separated from form leads in reporting, send an additional custom event such as line_chat_click for reporting only, and keep lead_created as the optimisation goal.
A tap is not a guaranteed message, so compare your LINE conversions with the chats your team actually receives in LINE Official Account each week. If the two drift far apart, the button is firing on the wrong interaction. Getting the most from those chats once they arrive is a job for your LINE OA setup.
Step 7: How do you test that tracking works?
- Turn on the Pixel's debug mode and submit a real test lead on your English and Thai pages.
- Open event monitoring in Ads Manager, which shows a sample of events from roughly the last 15 minutes. Browser events show as
pixel_sdkand server events asserver_to_server. - Confirm the event name, data source and event ID match what you sent, and that a lead sent from both sides counts once.
- Tap the LINE button on a phone and confirm the event arrives.
- Click through a redirect path with test parameters and confirm
opprefsurvives.
Expect Ads Manager and GA4 to report different totals. OpenAI lists the usual reasons: different attribution windows, time zones, consent and browser conditions, de-duplication and modelled conversions. A difference is normal. A conversion count that never matches your real enquiries is not, and that is the number to fix first.
FAQ
What is the difference between the OpenAI Pixel and the Conversions API?
The Pixel sends events from the visitor’s browser, and the Conversions API sends them from your server. OpenAI recommends using both together, with the same Pixel ID, event name and event ID, so conversions are measured more reliably and counted once.
Which event should I use for leads in ChatGPT Ads?
Use lead_created for a submitted lead form or a request for contact, including a tap on your LINE chat button. Use appointment_scheduled for bookings and order_created for purchases. Only standard events can be the goal of a Conversions campaign.
What is oppref in ChatGPT Ads?
oppref is the click reference OpenAI appends to your landing page URL when someone clicks your ad. The Pixel stores it in a first-party cookie. For server events you capture it yourself and send it unchanged. Redirects that drop the query string break the match.
How does de-duplication work for ChatGPT Ads conversions?
Send the same Pixel ID, the same event name and the same event ID from the browser and the server. OpenAI keeps the first event it receives with that combination and ignores later duplicates.
Why do ChatGPT Ads conversions differ from GA4?
The two tools use different attribution windows, time zones, de-duplication rules and consent conditions, and OpenAI may include modelled conversions. Compare trends and compare both against your real enquiries.
Need ChatGPT Ads tracking set up properly?
DAB installs the OpenAI Pixel, connects the Conversions API with de-duplication, maps your forms, calls and LINE chats to the right events, and tests every path in English and Thai before your ads go live. See our ChatGPT Ads service for what is included, contact our team, or chat with us now.