ChatGPT Ads Conversion Tracking Setup (Pixel + API)

How to Set Up Conversion Measurement on ChatGPT Ads

A setup guide for conversion measurement on ChatGPT Ads, built from official OpenAI documentation: data sources, the Pixel and Conversions API layers, preserving the oppref click reference through redirects, attribution windows, event quality warnings, and why configured conversions report zero.

Category: Dijital Reklam#ChatGPT Ads#Conversion Tracking#Conversions API#Measurement
Summarize with ChatGPT

Across the published advertiser results from ChatGPT Ads, the single most reported problem was not cost or targeting — it was measurement. Ads Manager reported one click count while site analytics showed a very different session count, and three independent advertisers hit the same wall.

OpenAI’s documentation actually explains why that gap occurs and how to narrow it. This guide reconstructs the setup from those official pages.

Measurement Has Three Layers

Per OpenAI’s conversion measurement documentation, the flow is:

  1. A data source, created in Ads Manager.
  2. Event delivery through the OpenAI Pixel, the Conversions API, or both.
  3. Matching, where OpenAI evaluates the event against the campaign’s configured conversion event and the applicable attribution window, then tries to connect it to an eligible ad click.

Step three is where most setups quietly fail. Firing the event is not sufficient; the event has to be connectable to the right click. The mechanism that makes that possible is oppref.

oppref: Where Measurement Actually Breaks

OpenAI appends a click reference called oppref to the end of the landing page URL, in the form yoursite.com?oppref=gAAAAAb123. The Pixel captures that value and stores it in a first-party cookie so it can be associated with a conversion that happens later. For server-side delivery, oppref should be included in Conversions API calls when available.

The decisive instruction appears in OpenAI’s event quality documentation: preserve the oppref parameter when a person lands from an ad, including through redirects and navigation. In practice the usual culprits are:

  • An intermediate redirect between the ad link and the landing page — a tracking link, a shortener, a language redirect, a www or https redirect — dropping the query string.
  • A landing page that forwards the visitor to another URL without carrying the query string.
  • A checkout step that hands off from browser to server without passing the click information.

OpenAI’s guidance is to test the full path: tracking links, redirects, checkout, and any browser-to-server handoff. Reusing another person’s click information or substituting a default value is explicitly prohibited.

The Rule for Running Pixel and API Together

OpenAI recommends both channels for resilience, with one condition: when the same conversion is sent through both, it must carry the same event ID. Otherwise deduplication cannot happen and a single sale can report as two conversions. Distinct actions need distinct IDs.

There is also an automatic layer. Automatic advanced matching (AAM) helps connect a website conversion to an ad when no click identifier is available: the Pixel detects supported customer information from recognizable forms, normalizes and hashes it with SHA-256 in the browser, and includes it with the event. Raw customer information is not sent to OpenAI, and no change to the Pixel implementation is required.

The legal responsibility stays with the advertiser. OpenAI requires that conversion data be sent only where permitted, after clear disclosure of what the site collects and after obtaining any consent the law requires.

Why Ads Manager and Analytics Disagree

This is the channel’s most-complained-about behaviour, and OpenAI answers it directly. Ad clicks measure ad interactions; an analytics session depends on page load, redirects, consent settings, browser blocking, UTM handling, attribution windows and time zones.

OpenAI lists six ordinary causes, and adds that a difference does not necessarily indicate an error:

Cause of the gapWhat to do
Different attribution method or windowAlign the window on both sides before comparing
Event timestamps, reporting time zones, date boundariesCompare the same date range and the same time zone
Browser, consent and storage conditionsAccount for consent refusal and tracking prevention
Different deduplication behaviourUse one event ID per action
Campaign or conversion-event configurationVerify the event attached to the campaign
Modeled conversion reportingRemember the total may include modeled conversions

That last row matters. Where modeled measurement is available, OpenAI may estimate attribution for otherwise unattributed events, and reported totals can include modeled conversions. Reading the panel total as a literal list of observed sales is therefore wrong.

The Most Common Trap: Conversions Reporting Zero

OpenAI’s reporting documentation carries a blunt warning. A conversion event can be firing and accepted and still show zero if it does not match the conversion event configured for the campaign.

The conditions:

  • For standard events, the configured event type must match the event you send.
  • For custom events, the type must be Custom and the custom event name must match exactly. A matching display name alone is not enough.
  • The correct conversion must be attached to the campaign before traffic starts.

And the costly part: if you fix the configuration, historical events do not backfill. Data from the misconfigured period is gone, and you have to test again with new eligible traffic. That single sentence is why instrumentation cannot wait until after launch.

Attribution Windows and Reporting Settings

Ads Manager offers a click-through window of 7, 14 or 30 days and a view-through window of 0 days (disabled) or 1 day, in any supported combination.

Three details change decisions:

  • A window change affects reporting only. It does not alter optimization, bidding or billing, and the logic is last-touch, not multi-touch.
  • The default time axis is ad event time — the moment of the click or impression that received credit. To report on when the conversion happened, switch on the “Conversions (by conv. time)” column. This is why the same conversion can land on a different day in daily reports.
  • Clicks outrank views. If both an impression and a click qualify for the same conversion, the click receives credit.

Patience is also part of the setup: OpenAI advises allowing 24 to 48 hours for attributed conversions to appear, and totals can change as events are processed. Declaring failure on day one is premature.

For ecommerce there is one more easily missed constraint: Order Created Sales and Order Created ROAS are calculated only from attributed order_created events. No other standard or custom event contributes to those columns, which is usually why a ROAS column looks empty.

Reading the Event Quality Warnings

OpenAI publishes an event quality assessment per data source, refreshed daily over seven complete calendar days. The framing matters: the score does not predict campaign performance and does not guarantee that a conversion will match. It points at parts of the setup worth reviewing.

WarningWhat it actually means
Limited email or customer ID informationEligible events lack an email or your own stable customer ID; keep one consistent ID per person and never reuse a shared or placeholder value
Ad click information missing or unconnectableoppref is being lost en route; test tracking links, redirects, checkout and the browser-to-server handoff
Conversions API events delayedThe check looks for receipt within one hour of the action; inspect queues, failed requests and retries
Conversion matches need reviewRepeated callbacks or duplicate tags may be sending one action twice; use a consistent event ID for copies
Limited additional matching informationSupply phone, name, postal code and country, and forward the real client IP and user agent on server events — not your server’s own address
Limited event types observedThin activity across browsing, intermediate and completed-outcome groups; custom events do not count toward this breadth check

One rule stands out for retries: preserve the action’s original timestamp rather than replacing it with the upload time. OpenAI also explicitly prohibits sending extra events, inventing identifiers or altering event times to improve a score.

Symptom-to-Cause Table

SymptomLikely causeCheck
Clicks in the panel, no sessions in analyticsRedirects, consent refusal or UTM handlingCSV comparison on identical date range and time zone
Conversions at zeroEvent name does not match campaign configurationConfirm the custom event name matches exactly
One sale, two conversionsPixel and API sending different event IDsUse a single event ID for copies
ROAS column emptyNo order_created event being sentVerify the order event’s name and delivery
Conversions appear lateReporting lagWait 24–48 hours before judging
Dates shift in daily reportsDefault axis is ad event timeEnable “Conversions (by conv. time)“

What to Send Support

Before contacting support about a reporting discrepancy, OpenAI asks for nine items. Sending the full set is what separates an implementation bug from an ordinary attribution difference:

#Item☐ Status
1Ad account ID
2Campaign and ad names
3Date range and time zone
4Ads Manager CSV export
5Analytics comparison
6Pixel ID
7Event names
8Sample conversion timestamps
9Screenshots of the discrepancy

Quick Take

On this channel, measurement is not a component of campaign setup — it is a precondition. Because historical events never backfill, a broken implementation is not something to fix later.

There is reason to suspect that some of the zero-conversion campaigns in the published advertiser reports were measurement failures rather than performance failures: the click counts did not reconcile, nobody could confirm whether oppref survived the journey, and the panel offers no context report to check against.

The order is data source, Pixel, server-side delivery, a test proving oppref survives the full path, then attaching the correct event to the campaign. Spending makes sense only after that.

Official Sources

Frequently asked questions

How do you set up conversion tracking on ChatGPT Ads?
Create a data source in Ads Manager, then send conversion events through the OpenAI Pixel, the Conversions API, or both. OpenAI evaluates those events against the conversion event configured for the campaign and the applicable attribution window before matching them to an ad click.
What is oppref?
oppref is OpenAI's click reference, appended to the end of the landing page URL. The OpenAI Pixel captures it and stores it in a first-party cookie so later conversion events can be associated with the click. It should also be passed into Conversions API calls when available.
Why don't Ads Manager clicks match Google Analytics sessions?
Per OpenAI, ad clicks measure ad interactions, while analytics sessions depend on page load, redirects, consent settings, browser blocking, UTM handling, attribution windows and time zone settings. Compare the same date range and time zone, then use CSV exports to check campaign and ad-level activity.
Why do my conversion events show zero in Ads Manager?
An event can fire and be accepted yet still report zero if it does not match the conversion event configured for the campaign. For custom events the event type must be Custom and the name must match exactly; a matching display name is not enough. Corrected configurations do not backfill historical events.
What attribution windows does ChatGPT Ads support?
Click-through reporting windows of 7, 14 or 30 days, plus a view-through window of either 0 days (disabled) or 1 day. Changing a window affects reporting only, not optimization, bidding or billing, and the logic is last-touch rather than multi-touch.
How long until conversions appear in reporting?
OpenAI advises allowing 24 to 48 hours for attributed conversions to be included, and notes that totals may change as recent events are processed.
Can the Pixel be deployed through Google Tag Manager?
Yes, provided the tag manager loads the Pixel snippet on the correct pages and does not block or reorder the initialization and event calls. If it cannot load reliably, install the snippet directly or use server-side measurement.
Should the Pixel and Conversions API be used together?
OpenAI recommends using both for more resilient measurement. When the same conversion is sent through both channels, use the same event ID so OpenAI can deduplicate it; use different IDs for distinct actions.

Read this topic inside a learning path

You can read this post on its own, or continue through the guide section to follow related topics in a clearer order.

Open learning pathsSend feedback

Değerlendirme

Bu yazı ne kadar faydalıydı?

1 ile 5 arasında puan

Değerlendirme

Bu yazı faydalı oldu mu?

Puan vermek tek tıklama sürer.

1 ile 5 arasında puan