ChatGPT Ads Conversion Tracking: Pixel and Conversions API Setup Guide
How to install the OpenAI pixel, add the server-side Conversions API, pick the events that matter, and confirm your ChatGPT ads data is trustworthy.
Most first ChatGPT ads campaigns that get judged "not working" were never measured properly. The ads ran, people clicked, some of them bought, and the dashboard showed almost nothing because the pixel fired on the wrong page or the purchase event never reached OpenAI. Then the budget got cut on bad data.
This guide walks through conversion tracking for ChatGPT ads the way you would set it up for any serious paid channel: browser pixel, server-side events, deduplication, UTMs as a backstop, and a short verification routine before you spend a dollar.
What OpenAI gives you for measurement
As of mid-2026, OpenAI offers two measurement paths for advertisers, and you want both.
- The OpenAI pixel (often called the OAIQ pixel). A JavaScript tag on your site that records browser events: page view, add to cart, sign up, lead and purchase.
- The Conversions API. A server-to-server connection that sends the same events from your backend, so they arrive even when a browser blocks scripts or the user closes the tab before the thank-you page finishes loading.
In August 2026 OpenAI rolled out automatic advanced matching, which uses hashed customer details you already collect at checkout (like an email address) to improve how conversions are matched back to ad clicks. Third-party integrations have also been reported, including Triple Whale and Hightouch, which can matter if your data already flows through one of those tools.
If you have set up Meta's Pixel and Conversions API before, the shape will feel familiar. The concepts transfer almost one to one; the event names and the dashboard are what change. Our Meta Pixel and Conversions API guide covers the Meta side if you are running both.
Step 1: Decide which events actually matter
Before you paste any code, write down the one event that defines success for this campaign. Everything else is supporting data.
| Business type | Primary event | Supporting events |
|---|---|---|
| Ecommerce / DTC | Purchase (with value) | Page view, add to cart |
| Consumer app | Sign up | Page view, lead (e.g. waitlist) |
| Course or coaching | Purchase or lead | Page view, sign up |
| Local or consumer service | Lead (form or booking) | Page view |
Pick one primary event per campaign. If you optimize toward or judge a campaign on "add to cart" when what you need is purchases, you will scale the wrong ads. Supporting events are for diagnosis: if page views are healthy but add to carts are near zero, the problem is the landing page, not the ad.
Step 2: Install the pixel
The pixel base code goes on every page, ideally in the site-wide header. Event code fires on the specific pages or actions you chose above.
- In ChatGPT Ads Manager, open the measurement or events section and create a pixel for your site.
- Copy the base code into your site header. On Shopify and most site builders this is a theme or custom-code setting; on a custom site it goes in your main layout template.
- Add event calls for add to cart, sign up, lead and purchase where they happen. The purchase event should include order value and currency.
- If you use a tag manager, create one tag for the base code (all pages) and one trigger per event.
A common mistake is firing purchase on a page anyone can reach, like /thank-you, without checking that an order actually completed. Bookmark visits and refreshes then count as sales. Fire purchase from the order confirmation logic, or pass the order ID so duplicates can be filtered.
Step 3: Add the Conversions API
The pixel alone undercounts. Ad blockers, privacy settings, slow connections and in-app browsers all eat browser events. Server-side events fill the gap.
You have three realistic ways to send Conversions API events:
- A platform integration. If your store platform or a data tool you already use offers an OpenAI connection, start there. It is the least work and the least likely to break.
- A customer data or analytics tool that already collects your events and can forward them (Hightouch and Triple Whale have been reported as integrations).
- Direct from your backend. Your developer sends an HTTP request to OpenAI when an order is created, with the event name, timestamp, value, currency, an event ID, and hashed customer identifiers.
Send at minimum your primary event server-side. Sending everything is better, but a reliable purchase or lead event is the one that changes decisions.
Step 4: Deduplicate browser and server events
When both the pixel and the Conversions API report the same purchase, you need the platform to count it once. The standard way is a shared event ID: generate a unique ID for each conversion (the order number works well for purchases), send it with the browser event, and send the identical ID with the server event.
Check three things:
- The event name matches exactly on both sides.
- The event ID is identical on both sides, not just similar.
- The server event arrives reasonably soon after the browser event, not hours later in a nightly batch.
If you skip deduplication, your reported conversions can roughly double, and you will think the channel is far more profitable than it is.
Step 5: Tag every landing URL with UTMs
Platform-reported conversions are one view. Your own analytics and store backend are another, and you want both so you can sanity-check OpenAI's numbers.
Add UTM parameters to every landing URL in your ads. A simple, consistent pattern:
?utm_source=chatgpt&utm_medium=paid&utm_campaign=spring-skincare&utm_content=ad-03Use the UTM builder to keep naming consistent across campaigns. Keep utm_source=chatgpt for paid traffic and make sure nobody on your team uses the same source for organic ChatGPT referrals, or the two will blur together.
Step 6: Verify before you spend
Run this checklist on a test order or test sign-up before launch.
- Load the landing page and confirm a page view appears in Ads Manager's event view.
- Add a product to cart and confirm the event.
- Complete a real (refundable) purchase or lead and confirm it appears once, with the correct value and currency.
- Confirm the server event arrived and was deduplicated against the browser event.
- Check that your analytics tool recorded the session with the right UTM source and campaign.
- Refund or delete the test order so it does not pollute reporting.
Expect a short delay before events show up. If nothing appears after a reasonable wait, check for a consent banner blocking the pixel, a caching plugin serving an old header, or a typo in the event name.
Reading the numbers once ads are live
ChatGPT traffic tends to behave differently from social traffic. People clicking from a chat card were already in the middle of researching a decision, so some convert on the first visit and others come back days later after comparing options. Criteo reported in February 2026 that traffic from ChatGPT converted around 1.5x better than other channels, though your own numbers are what count.
Three practical rules for interpreting early data:
- Judge on the primary event, not clicks. A low click-through rate with a strong conversion rate can be a better campaign than the reverse.
- Compare platform numbers to your backend weekly. If OpenAI reports 40 purchases and your store shows 25 orders tagged with
utm_source=chatgpt, the truth is probably in between: UTMs miss return visits, platforms can over-credit. A consistent gap is fine; a gap that grows is a tracking problem. - Do the unit economics yourself. Plug spend and revenue into the ROAS calculator and compare against your break-even ROAS before deciding to scale or cut.
Here is a hypothetical example. Say you spend $1,400 over two weeks, OpenAI reports 32 purchases at an average order value of $68, and your backend shows 26 UTM-tagged orders. Platform ROAS is (32 x $68) / $1,400 = $2,176 / $1,400, about 1.55. Backend-only ROAS is (26 x $68) / $1,400 = $1,768 / $1,400, about 1.26. If your break-even ROAS is 1.4, the honest answer is "close to break-even, needs more data or better creative", not "clearly winning" or "clearly losing."
For a broader framework on crediting AI channels, read attribution for AI channels like ChatGPT.
Common tracking problems and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| Clicks recorded, zero conversions | Purchase event not firing, or firing on wrong domain | Test checkout end to end; check checkout runs on a domain where the pixel is installed |
| Conversions roughly double backend orders | Missing deduplication | Send the same event ID from pixel and server |
| Revenue values look wrong | Value sent as text, wrong currency, or tax/shipping inconsistency | Send numeric value and currency code; pick one revenue definition |
| Events stopped suddenly | Theme update or tag manager change removed code | Re-verify after every site deploy |
| UTMs missing in analytics | Redirect strips query strings | Test the final landing URL after redirects |
How SecondWin handles tracking
SecondWin runs campaigns inside your own OpenAI ad account, so the pixel, the Conversions API data and the reporting all belong to you. During onboarding we check that your primary event is firing and that landing links carry consistent UTMs before anything launches, and our reports are built around the conversion event you care about rather than clicks. We do not touch your ad spend; OpenAI bills you directly.
If you want to see what your ads would look like first, run the free URL analysis. It reads your site, finds the proven messages in your niche from long-running Meta ads, and drafts ChatGPT ads you can review. Plans and what each includes are on the pricing page.
FAQ
Do I need both the OpenAI pixel and the Conversions API?
You can launch with only the pixel, but you will undercount conversions because browsers block or drop some events. The Conversions API sends the same events from your server, which fills those gaps. Running both, with a shared event ID for deduplication, gives you the most complete and accurate picture. If you can only do one server-side event, make it your primary conversion, usually purchase or lead.
What is the OAIQ pixel?
OAIQ pixel is a name commonly used for OpenAI's advertising pixel, the JavaScript tag you install on your site to record browser events from ChatGPT ad traffic. It tracks page views, add to carts, sign ups, leads and purchases. You create it inside ChatGPT Ads Manager and add the base code to every page, then fire specific events where those actions happen.
Why do OpenAI's reported conversions differ from my store's orders?
The two systems count differently. OpenAI can credit conversions that happen after a later return visit, while UTM-based analytics often only credit the session that carried the tag. Missing deduplication can also inflate platform numbers. Expect some gap; what matters is that it stays consistent over time. A growing or sudden gap usually means a tracking change broke something.
Can I track ChatGPT ads with only UTM parameters?
UTMs alone will tell you which sessions came from your ads and what they bought in that session, which is useful as a cross-check. But they miss return visits and give OpenAI no conversion signal, which matters for optimized bidding like oCPC. Use UTMs alongside the pixel and Conversions API rather than instead of them.