To check that your ChatGPT Ads pixel is working, prove three things in order: the pixel is installed correctly, it sends events that pass OpenAI's rules, and OpenAI receives them and counts them as conversions. A tag that fires in Tag Manager proves only the first.
- Fastest first look: a free pixel checker reads your page and Tag Manager container in seconds
- The proof: a test action you watch arrive in Ads Manager's Event Stream
- The silent failure: the pixel drops events that break its rules, and Tag Manager still says the tag fired
- Often missed: an event only counts as a conversion once a conversion event setting selects it
- After a week: Event quality flags matching and duplicate problems
How do you know your ChatGPT Ads pixel is working?
You know when a test conversion you triggered yourself appears in Ads Manager and is selected by a conversion event setting. Everything before that is a step toward it. The six checks below run from cheapest to most conclusive, and each one proves something the previous one cannot.
If you have not installed the pixel yet, start with our pixel installation guide and come back. This post assumes the pixel is on your site, or that someone told you it is.
Check 1: Read your setup from the outside (2 minutes)
Start by reading what your site actually serves, because that is what every visitor's browser runs. Many installs live inside Google Tag Manager rather than the page itself, so viewing the page source often shows nothing. A published Tag Manager container, though, is a public file anyone can read.
Our free ChatGPT Ads pixel checker reads both. Enter the page your ads point to, or your container ID if your site blocks automated visits, and it reports:
- Whether OpenAI's pixel is installed, and how: code on the page, a Custom HTML tag, OpenAI's official template, Stape's template, or another template
- The Pixel ID each tag sends to, so you can compare it with the one on the Conversions tab in Ads Manager
- Every standard and custom event set up, including events that only fire on other pages
- Problems it can see: placeholder Pixel IDs, custom event names the pixel drops, no standard conversion event, tags with no trigger, duplicate installs, and debug mode left on
What it cannot do is watch an event arrive. It reads the setup, not the traffic, so a clean result means the setup looks right, not that conversions are being counted. That is what the next three checks are for.
Check 2: Watch the tags fire in Tag Manager Preview (5 minutes)
Preview mode shows which tags fire on each event, in your own browser, before anything is published. In Tag Manager, click Preview, enter your landing page, and complete the action you want to measure: submit the form, start the trial, or finish the order.
In the Tag Assistant panel, select the event where the action happened and confirm your pixel tags appear under Tags Fired. If the conversion tag is under Tags Not Fired, open it to see which trigger condition failed. Google documents the panel in its Preview and debug guide.
Two things Preview cannot tell you. It does not know whether the pixel accepted the event, and changes you test in Preview are not live until you publish the container. An edited workspace that was never published looks exactly like a broken pixel.
Check 3: Read the pixel's own log with debug mode (5 minutes)
Debug mode makes the pixel explain itself in the browser console, including the events it refuses to send. OpenAI's Measurement Pixel documentation describes the option as a way to log pixel activity while you test. Add it to the init call:
oaiq("init", {
pixelId: "YOUR_PIXEL_ID",
debug: true,
});If you installed with a Tag Manager template, use its debug setting instead of editing code. Then open your browser's developer tools, go to the Console, reload the page and repeat the conversion action. Accepted events are logged as they are sent. A dropped event logs a line like this, followed by the reason:
validation failed; event droppedThe reason names the rule the event broke. Three that we reproduced are covered further down. Fix the payload, test again, and move on only when the console shows the event sent.
Check 4: Confirm OpenAI received the event (5 minutes)
Event Stream is the first check that sees your event from OpenAI's side rather than your browser's. In Ads Manager, open the Conversions tab, choose Event Stream, pick your pixel and press Start polling. Then repeat the conversion action on your site and watch for it to appear, with the payload OpenAI received.
A tag that fired is not a conversion that arrived. The only proof is an event you triggered yourself, showing up in Event Stream.
If you only see a Pixel Initialization entry and nothing after it, the pixel loaded but your events were dropped or never sent. Go back to Check 3.
For developers: check recent events through the API
OpenAI also documents a recent-events endpoint in its conversion tracking guide. It returns a sample of events from roughly the last 15 minutes and labels each with its channel: pixel_sdk for browser events, server_to_server for the Conversions API. It uses your OpenAI Ads API key, so run it from a server or your terminal, never from the page.
curl -G "https://api.ads.openai.com/v1/conversions/events" \
-H "Authorization: Bearer ${OPENAI_ADS_API_KEY}" \
--data-urlencode "pid=${PIXEL_ID}" \
--data-urlencode "limit=50"Check 5: Make sure the event counts as a conversion (5 minutes)
An event arriving at OpenAI is not yet a conversion. OpenAI's documentation is explicit that sending an event and creating a conversion event setting are separate steps: the setting selects an event from your pixel, and the campaign uses that setting for reporting and, if you choose it, optimization.
So for each outcome you care about, confirm three things in Ads Manager:
- A conversion event setting exists for the event, pointing at the right pixel
- For a custom event, the setting's name matches your
custom_event_nameexactly - The setting is attached to the campaigns you want measured
One constraint shapes which events you should send. OpenAI's Help Center says custom conversion events are not currently supported for the Conversion optimization objective, so the action you want campaigns to optimize toward needs a standard event: lead_created, registration_completed, trial_started, order_created and so on. Custom events still work for reporting. Our guide to using ChatGPT Ads Manager covers when to switch a campaign from Clicks to Conversions.
Check 6: Read Event quality after a week
Event quality is OpenAI's own audit of the events it received, and it is the only check that looks at a full week. Each pixel or data source gets its own score and warnings, refreshed daily from seven complete calendar days of events. OpenAI is clear that the score does not predict campaign performance; it points at parts of your setup to review.
That window is why this check comes last. After you fix something, new events have to arrive and old ones have to age out, so improvements show gradually. OpenAI's Event quality guide also warns against gaming it: do not send extra events, invent identifiers or change event times to improve a score. The warnings, and what each one asks you to check:
Two of these connect to earlier checks. Click information depends on the oppref parameter OpenAI adds to your landing page URL, which the pixel stores in a first-party cookie, so redirects that strip query parameters break it. And matching information is where automatic advanced matching helps, within the limits of your consent setup.
Why a pixel can fire and still lose conversions
OpenAI's pixel validates every event in the browser and drops the ones that break its rules, without an error that Tag Manager can see. We tested this directly in October 2026, replaying real Tag Manager template output, plus a few hand-built events, through OpenAI's live pixel and a dedicated test pixel in our own Ads Manager account. Three payloads were dropped:
- A lead carrying product data. Sent through Stape's Tag Manager template with its Data Layer settings at their defaults, on a page that had earlier pushed GA4 ecommerce data, a lead event picked up the product as
contents. The pixel rejected it:eventProps.contents is not a documented field. Clearing ecommerce data before the lead fixed it. - A custom event name with a dot. The same template, set to inherit its event name and fired by Tag Manager's built-in Form Submission trigger, sent
gtm.formSubmitas the event name, which breaks OpenAI's naming rules. - A decimal amount. An amount of 23.5 was rejected:
eventProps.amount should be an integer. OpenAI expects whole numbers in the currency's minor unit, such as 8900 for $89.00.
In the two template cases, the tag reported success to Tag Manager. In Event Stream, the only thing that arrived for any of the three tests was the pixel's initialization ping. And when we checked Ads Manager's diagnostics minutes later, they showed no events at risk.
The only check that caught the lost leads was a test action watched in Event Stream. Preview, the tag's status and the diagnostics all looked fine.
Diagnostics may simply lag, which is one more reason to run Check 4 yourself rather than wait for a warning. If your conversion events are leads, test one on a page that also tracks products, because that is the combination that broke.
What you see, what it means, and which check finds it
Most pixel problems show up as one of a handful of symptoms. Start from what you are seeing:
The last row is not a bug. OpenAI notes that Ads Manager, your analytics and other ad platforms can report different totals because of attribution windows, time zones, consent conditions and deduplication, and that a difference does not necessarily indicate an error. Our post on tracking ChatGPT Ads in GA4 explains what to expect on the GA4 side.
Before you launch, run the whole sequence once on the page each campaign points to, and repeat Checks 3 and 4 whenever someone changes your Tag Manager setup, your forms or your checkout. For the measurement strategy behind these events, see our overview of ChatGPT Ads conversion tracking and how it fits ChatGPT Ads as a channel.
Frequently Asked Questions
#How do I check if my ChatGPT Ads pixel is working?
Work through six checks in order. Read the setup from outside with a free pixel checker, watch the tags fire in Tag Manager Preview, read the pixel's console log with debug set to true, confirm the event in Ads Manager's Event Stream, make sure a conversion event setting selects it, and read Event quality after a week. The first three prove the setup; the last three prove OpenAI is counting it.
#Why is my ChatGPT Ads pixel not firing?
Typical causes are a trigger that never matches (often a custom event your site does not push), an event tag that runs before the base pixel has loaded, and a Tag Manager container that was edited but never published. Tag Manager's Preview mode shows which of these it is. If the tag fires but nothing reaches OpenAI, the pixel probably dropped the event; debug mode tells you why.
#Is there an OpenAI pixel helper?
The OpenAI pixel helper browser extensions we found are independent tools, not made by OpenAI. They show pixel events on the page you are viewing. OpenAI's own equivalents are the debug option, which logs pixel activity to the browser console, and Event Stream in Ads Manager. Our free pixel checker needs no install and reads your whole Tag Manager setup, including events that fire on other pages.
#How quickly do pixel events show up in Ads Manager?
Event Stream lists recent events while it is polling, so a test action should appear there within minutes. OpenAI's recent-events endpoint returns a sample from roughly the last 15 minutes. Event quality works on a slower clock: it refreshes daily using seven complete calendar days, so a fix takes up to a week to show fully in the score.
#Why does Tag Manager say the tag fired but no conversion shows up?
Because firing and arriving are different things. OpenAI's pixel checks each event in the browser and drops any that break its rules, and Tag Manager still marks the tag as fired. In our tests, dropped events never reached Event Stream at all. If events do arrive but Conversions stays at zero, check that a conversion event setting selects that event.
#Can I use a custom event as a conversion?
For reporting, yes: a conversion event setting can select a custom event, as long as the custom_event_name matches exactly. For the Conversion optimization objective, no. OpenAI's Help Center says custom conversion events are not currently supported there, so the event you optimize toward must be a standard one such as lead_created, registration_completed or order_created.
#Should I turn off debug mode after testing?
OpenAI describes debug mode as a way to log pixel activity to the console while you test, and its documentation does not require removing it. Left on, it logs the pixel's activity in every visitor's browser console. If you do not want that, turn it off once testing is done and back on when something needs investigating.
Related Reading
- How to install the ChatGPT Ads Measurement Pixel via Google Tag Manager
- ChatGPT Ads Conversion Tracking Is Real: What OpenAI's April 30 Privacy Policy Update Tells You About the Roadmap
- ChatGPT Ads Automatic Advanced Matching Turns On August 17
- How to Track ChatGPT Ads in GA4 (What Actually Shows Up, Verified)
- How to Use ChatGPT Ads: A Marketer's Step-by-Step Guide (2026)
