ChatGPT Ads

ChatGPT Ads Conversion Tracking: Pixel and CAPI Setup Guide

A step-by-step guide to ChatGPT Ads conversion tracking with the OpenAI measurement pixel, GTM, standard events, the Conversions API and deduplication.

ChatGPT Ads Conversion Tracking: Pixel and CAPI Setup Guide
Quick answer

To track ChatGPT Ads conversions, create a Pixel ID in the Conversions tab of Ads Manager, install the OpenAI measurement pixel with GTM or code, and send standard events such as order_created or lead_created. Add the Conversions API for reliability, reuse one event ID in both, and connect the pixel to your consent banner.

Key takeaways
  • The pixel captures the oppref click reference automatically; the Conversions API needs you to pass it.
  • Conversion-optimised campaigns can only optimise on one standard event.
  • Reuse the pixel's event_id as the Conversions API id so OpenAI keeps one copy.
  • Use debug mode, the event stream and validate_only to test before launch.
  • Allow 24 to 48 hours for attributed conversions to appear in reports.

Most of the questions I get about ChatGPT Ads are not about creative or bids. They are about measurement: "the campaign has clicks, my shop has orders, but Ads Manager shows zero conversions." That is almost always a tracking problem, and it is the same kind of problem I fix on Google Ads and Meta every week.

This guide walks through ChatGPT Ads conversion tracking from start to finish, from creating the pixel to fixing zero conversions. The platform is new, so for exact code I point you to OpenAI's developer documentation.

How does ChatGPT Ads conversion tracking work?

ChatGPT Ads conversion tracking works by sending conversion events from your website or server to OpenAI, which then matches them to ad clicks (and eligible ad views) and reports them in Ads Manager. OpenAI offers three ways to send events:

Method Runs where Best for
Measurement Pixel Visitor's browser (JavaScript) Most websites; captures the click reference automatically
Image tag Browser, no JavaScript Simple page-load conversions where scripts are not allowed
Conversions API (CAPI) Your server or a server-side tag Reliable purchase and lead events, offline or CRM events

When someone clicks a ChatGPT ad, OpenAI adds a click reference parameter called oppref to the landing page URL. The pixel reads it and stores it in a first-party cookie (__oppref) so later page views and conversions can be tied back to the click. The Conversions API does not capture oppref by itself; you have to pass it along when you have it.

OpenAI's docs describe the Conversions API as the more reliable source, and recommend using the pixel and CAPI together for important events. That mirrors what I recommend for Meta in Meta Pixel vs Conversion API.

Step 1: Create a pixel in ChatGPT Ads Manager

Your first step is creating a Pixel ID in the conversions area of Ads Manager.

  1. Log in to ChatGPT Ads Manager and open the Conversions tab.
  2. Create a new pixel and note the Pixel ID.
  3. Create the conversion events you plan to use (see step 3). Each campaign optimises on one event, so set these up before you launch.
  4. If you plan to use the Conversions API, generate the API key from the same area and store it somewhere safe, not in your website code.

Step 2: Install the pixel with GTM or code

You can install the OpenAI measurement pixel either directly in your site's code or through Google Tag Manager. Both work; GTM is easier to manage alongside your other tags.

Installing with Google Tag Manager

At the time of writing there is no Google-built tag for OpenAI in GTM, but community templates exist in the Template Gallery, such as the open-source OpenAI pixel tag published by Stape. A typical GTM setup looks like this:

  1. Add the OpenAI pixel template (or a Custom HTML tag with the snippet from OpenAI's Measurement Pixel docs).
  2. Enter your Pixel ID and fire the base tag on all pages, after your consent banner has loaded.
  3. Create separate event tags for each conversion, triggered by your dataLayer events.
  4. Pass an event ID from the dataLayer into each event tag.

Your developer or platform should push conversion data to the dataLayer. For a purchase, something like:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
  event: 'purchase',
  event_id: 'ORD-10482',      // unique per order, reused server-side
  value: 89.00,
  currency: 'USD'
});

Installing directly in code

Without GTM, paste the snippet from OpenAI's Measurement Pixel docs into your site's head and fire the event on the thank-you page or after a successful form submission. Never call the Conversions API from page code; OpenAI's docs warn against it because it exposes your API key.

Step 3: Choose the right standard events

Standard events are OpenAI's predefined conversion types, and conversion-optimised campaigns can only optimise on a standard event. OpenAI's supported events page lists order_created for a completed purchase and lead_created for a submitted lead form or contact request. The Conversions API reference also accepts other types, such as registration and trial events, so check the current list before mapping anything else.

Your business action Suggested event
Ecommerce order confirmed order_created
Quote or booking form submitted lead_created
Account sign-up Check the current supported list
Newsletter sign-up, scroll, time on page Custom event (reporting only, not optimisation)

Custom events help reporting, but only standard events can drive optimisation. Custom event names must match Ads Manager exactly.

Step 4: Test that events arrive

Testing proves that events reach OpenAI before you spend money on them. OpenAI provides a few tools for this:

  1. Pixel debug mode. Set debug: true while testing so you can see pixel activity in the browser console. Debug mode logs activity but does not keep test events out of reporting, so test with care on a live account.
  2. Conversion event stream. OpenAI documents an endpoint that returns recent pixel events (up to 50 from the last 15 minutes). Use it to confirm receipt, not for reporting.
  3. Validate-only for CAPI. Server events can be sent with validate_only set to true, which checks them without saving them.
  4. GTM Preview. Confirm the right tag fires once, on the right trigger, with the event ID populated.

Finally, once a campaign is live, complete a real conversion after an ad click and confirm it appears in Ads Manager. That is the only test that proves the whole chain, from oppref to attribution.

Step 5: Add the Conversions API and deduplicate

The Conversions API sends conversions from your server, so they are not lost to ad blockers, browser restrictions or closed tabs.

The key fields to get right:

  • Event type matching your Ads Manager event, such as order_created.
  • Event ID: the API's id field should equal the pixel's event_id for the same conversion.
  • Click reference: pass the oppref value (from the URL or the __oppref cookie) when you have it.
  • Hashed user data: for example, email trimmed, lowercased and SHA-256 hashed into the emails_sha256 field. Never send raw emails or phone numbers.

Deduplication is how OpenAI avoids counting the same order twice. According to OpenAI's docs, events are matched on Pixel ID, event name and event ID; the first event received is kept and later duplicates are ignored. Use the same ID when you retry a failed send, and a new ID for every genuinely new conversion. If you have done this for Meta, the logic is identical to Meta CAPI event deduplication.

For a server-side GTM build on Stape or Google Cloud, see my guide to ChatGPT Ads Conversions API with server-side GTM.

The OpenAI pixel has its own consent setting, and you should connect it to your consent banner. Per OpenAI's docs, when consent is set to false the pixel sends no measurement pings, events blocked during that time are not replayed later, and setting consent to false removes the pixel's cookies. Set the consent state before the pixel initialises. On the server side, stop forwarding the click reference and user data when a user has not consented or withdraws consent. If you already use Consent Mode v2 for Google, map the same banner choices to the OpenAI pixel.

Why does ChatGPT Ads show zero conversions?

ChatGPT Ads usually show zero conversions because the event is not reaching OpenAI, does not match the campaign's event, or cannot be tied to an ad interaction. Work through this checklist:

  • The pixel base tag fires on every page, including the landing page that receives oppref
  • The event fires on the real conversion, not on a page that redirects away first
  • The event type sent matches the conversion event attached to the campaign
  • The campaign had the right event attached before traffic started (historic events do not backfill)
  • Consent is not blocking every visitor because of a misconfigured default
  • Server events include oppref when available, and the correct Pixel ID
  • You have waited 24 to 48 hours; OpenAI says attributed conversions can take that long to appear
  • Pixel and CAPI share event IDs, so you are not seeing duplicates either

Final thoughts

ChatGPT Ads tracking is not hard if you treat it like Meta: a browser pixel, a server event, one shared event ID and consent handled properly. Get it right before your first campaign, because oCPC can only optimise on what it receives. If you want help, my ChatGPT Ads tracking service covers the full setup, or book a free tracking audit.

Related
Chamok Mahonto
Written by Chamok Mahonto

I'm a conversion tracking & google ads specialist from Rangpur, Bangladesh. I set up GA4, GTM, server-side tracking and Meta Conversion API, and manage Google Ads for businesses worldwide. More about me

FAQ

Frequently asked questions

Is there an official Google Tag Manager template for the OpenAI pixel?

At the time of writing, the GTM templates I know of are community or vendor templates, such as Stape's open-source OpenAI pixel tag. You can also use a Custom HTML tag with OpenAI's documented snippet. Check the Template Gallery and OpenAI's docs for the current options.

Do I need both the OpenAI pixel and the Conversions API?

You can use either, but using both is the more robust setup for important events. The pixel captures the click reference automatically, while the Conversions API survives ad blockers and browser limits. Deduplicate them with a shared event ID.

What is oppref in ChatGPT Ads?

oppref is the click reference OpenAI adds to landing page URLs when someone clicks a ChatGPT ad. The pixel stores it in a first-party cookie and uses it to attribute conversions. Do not strip it with redirects, and pass it with server events when you have it.

Can ChatGPT Ads track phone calls or offline sales?

Not with the pixel alone. If your CRM records the lead or sale and you stored the click reference and hashed contact details, you can send the event through the Conversions API. Check OpenAI's docs for which event types are currently accepted.

Keep reading

Related articles

Ready to fix your tracking and scale your ads?

Get a free audit of your tracking and ad account. Usually replies within 1–2 hours.