ChatGPT Ads Pixel vs Conversions API: What Each One Measures
Compare OpenAI’s browser pixel and server-side Conversions API by reliability, consent, deduplication, view-through attribution and release QA.
Direct answer: OpenAI’s Ads Pixel measures browser events, while the Conversions API sends events from your server. The API is more resilient to browser loss; the pixel is faster to install and can observe browser-only context. OpenAI recommends the server path as the more reliable foundation, but neither method makes an event true merely because it was received.
The practical setup is not “pick the better tag.” It is a measurement contract: define one event, preserve the same identifiers on both paths, deduplicate deliberately, and reconcile accepted events against orders or leads in your own system.
What each method actually does
| Question | Ads Pixel | Conversions API |
|---|---|---|
| Where it runs | In the visitor’s browser | From your server |
| Typical strength | Quick page and browser-event instrumentation | More reliable delivery from a first-party system |
| Typical loss | Consent denial, script blocking, navigation or browser failure | Bad joins, missing click identifiers, queue failure or backend bugs |
| Batch behavior | Individual browser calls | Up to 1,000 events; one invalid event can fail the batch |
| App events | Not supported | Supported through the API |
The pixel uses the browser SDK and its oaiq("measure") call. The API is a server-to-server endpoint. That difference matters because a browser confirmation can disappear before the order system commits the transaction, while a server event can arrive without enough attribution data to connect it to an ad interaction.
OpenAI’s supported-event list includes page views, content views, checkout starts, orders, leads, trials, subscriptions, registrations, appointments and app events. Monetary values are integers in ISO 4217 minor units: for example, 19.99 USD is represented as 1999. Treat that rule as a schema test, not a formatting preference.
Build one event contract before installing either path
Start with the business event, then map the delivery methods to it. An order_created event should mean the same thing whether the browser or server sends it. Write down the trigger, required fields, clock, value rule, currency rule, identifier source, retry policy and cancellation treatment.
- Name the source of truth. A thank-you page is not necessarily an order; the commerce database usually is.
- Choose one stable event identifier. Generate it once and carry it across browser and server calls when both paths report the same action.
- Preserve attribution identifiers. A reliable backend event that cannot be joined to an ad interaction may still be unusable for campaign reporting.
- Queue server events. Retries should be idempotent, observable and bounded.
- Quarantine invalid batch rows. Because one invalid event can reject a full API batch, validate locally before sending and split failures for repair.
This is the same discipline described in our AI visibility measurement crosswalk: keep the observed platform event separate from the first-party outcome it is supposed to represent.
View-through is a separate measure
Eligible accounts can receive view-through attribution through either implementation. OpenAI documents a fixed one-day view-through window and says click-through takes precedence. It also says view-through appears as a separate campaign metric, is not included in the Conversions column, and does not change optimization or billing, which remain click-through based.
That prevents a common reporting error: adding view-through results into click conversions and then comparing the inflated total with first-party orders. Keep four columns instead—click-attributed, view-attributed, deduplicated platform conversions and first-party outcomes.
Consent is another boundary. The pixel initializes consent as true unless you explicitly set it otherwise. Events blocked while consent is false are not replayed later. Your consent manager therefore has to set state before measurement calls and reinitialize accurately when the visitor changes a choice.
A release checklist that catches real failures
- Test one valid and one invalid payload for every enabled event.
- Confirm that a duplicate browser/server pair produces one business outcome in your reconciliation table.
- Send zero-value, multi-currency, refund and delayed-conversion test cases where applicable.
- Verify that consent-denied sessions do not send browser events.
- Alert on API rejection rate, queue age, missing identifiers and the gap between accepted events and first-party outcomes.
- Run the same checks after tag-manager, checkout, consent or backend releases.
For campaign optimization, continue with how ChatGPT conversion-optimized campaigns are billed. For broader attribution discipline, see how to track AI referrals in GA4 without inventing certainty.
Sources and limits
- OpenAI Ads Pixel documentation
- OpenAI Conversions API documentation
- OpenAI supported conversion events
Method note: This guide translates the documentation into an implementation and QA model. We did not run a live advertiser account, and eligibility, endpoints and fields may change during rollout. Verify the current account documentation before deployment.
Ask a question or join the discussion