Guide
ChatGPT Ads Pixel vs Conversions API
The ChatGPT Ads Measurement Pixel is JavaScript that runs in the shopper's browser. The Conversions API is an endpoint your server calls. The Pixel sees what a shopper does on the page; the Conversions API reports what your own systems know happened. They are not alternatives so much as two halves: for a store, the usual setup is the Pixel for the browsing journey and the purchase sent through both, tied together by a shared event ID.
Updated
On this page
Short answer: use the Pixel for events only the browser can see, such as product views and add to cart. Send the purchase from the browser and the server with the same event ID, so a blocked script or a closed tab does not lose the sale, and OpenAI counts it once.
At a glance
Browser versus server, in four questions
The Pixel sees the journey. The Conversions API confirms the sale. Used together with one event ID, they count each purchase once.
Browser
Measurement Pixel
- Best at
- Measuring the buying journey on the page.
- What it can see
- Product views, add to cart, checkout starts and the purchase — whatever happens in the shopper's browser.
- What it may miss
- Events whose script is blocked, or whose page never finishes loading.
- What this plugin sends
- All four events:
contents_viewed,items_added,checkout_started,order_created.
Server
Conversions API
- Best at
- Confirming conversions your own systems recorded.
- What it can see
- What the store knows: the paid order, its value and its time.
- What it may miss
- Browsing — it cannot know a product was viewed unless the browser reported it.
- What this plugin sends
- The purchase only:
order_created, when WooCommerce marks the order paid.
When both paths send the same purchase, they carry the same event ID. OpenAI keeps the first one it receives and ignores the duplicate, so the order is counted once.
Browser · Pixel
Purchase
Shared event ID derived from the WooCommerce order
Server · Conversions API
Purchase
Shared event ID derived from the WooCommerce order
One conversion
Same Pixel ID, event name and ID: OpenAI keeps the first and ignores the duplicate.
What the Pixel is for
The Pixel is the only way to measure what happens between arriving from an ad and paying: which products were viewed, what went into the cart, who reached checkout. OpenAI's guidance is to always use the pixel on the browser
. It also handles consent on the page: when consent is set to false, it does not send measurement pings.
Its weakness is the same as any browser script: if the script is blocked or the page never finishes loading, the event is not sent, and nothing records that it was missed.
What the Conversions API is for
The Conversions API reports events your server already knows about. For a store, that is the purchase: the order is in the database whether or not a browser reported it. The server can send it the moment the payment is confirmed, retry if the request fails, and keep a record of the outcome.
Its weakness is that the server does not see browsing. It cannot know that a shopper looked at a product unless something in the browser reported it. It also has to keep an API key secret: OpenAI says to send Conversions API events from your server only
.
Pixel only, API only, or both
| Setup | What you get | What you miss |
|---|---|---|
| Pixel only | The full browsing journey and most purchases | Purchases whose browser event never fired |
| Conversions API only | Purchases, independent of the browser | Product views, carts and checkout starts |
| Both, with shared IDs | The journey from the browser, and the purchase from both paths | Browser-only events are still browser-dependent |
Which events go where on a store
| Event | Pixel | Conversions API | Why |
|---|---|---|---|
contents_viewed | Yes | — | Only the browser sees a product view |
items_added | Yes | — | Cart activity happens on the page |
checkout_started | Yes | — | Reaching checkout is a page event |
order_created | Yes | Yes | The sale is recorded by the store itself |
The purchase is the event worth sending twice: it is the one campaigns are judged on, and the one the store can confirm independently.
Reference
Pixel and Conversions API side by side
The full comparison, row by row.
| Measurement Pixel | Conversions API | |
|---|---|---|
| Runs in | The shopper's browser | Your server |
| Credential | Pixel ID (public) | Pixel ID plus a secret API key |
| Sees browsing behaviour | Yes — views, carts, checkout | Only what your server records |
| Affected by blocked scripts or closed tabs | Yes | No — it starts from your own data |
| Can confirm a delayed payment | Only if the shopper is still on the page | Yes, when the payment is confirmed |
| Consent | Sends nothing when consent is false | Your implementation must apply it |
| Setup | Script on every page, plus event code | Server code, a trigger, retries |
Sources: OpenAI's Measurement Pixel and Conversions API documentation.
Using both without double counting
Sending the same purchase twice only works if OpenAI can tell it is the same purchase. The Pixel documentation says to generate the event_id yourself and reuse it on the same pixel and server-sent event
. OpenAI then uses the first event it receives for a matching key — Pixel ID, event name and ID — and ignores later duplicates.
What breaks deduplication
- A random ID generated in the browser that the server never learns.
- A new ID on every page load, so a reloaded thank-you page looks like a new purchase.
- A second copy of the Pixel, pasted in a theme or tag manager, firing with its own IDs.
- Different Pixel IDs on the browser and the server.
Myths
Common misconceptions
Four things people often assume about server-side tracking, and what is actually true.
Assumption
“Server-side means every event is server-side.”
In practice
Not necessarily. Pixel for ChatGPT Ads, for example, sends only the purchase from the server.
Assumption
“Sending from both doubles my conversions.”
In practice
Not with a shared event ID. Without one, it can.
Assumption
“The Conversions API gets around consent.”
In practice
It should not. A server event should follow the consent recorded for that order.
Assumption
“Server-side guarantees attribution.”
In practice
It makes delivery of the purchase more reliable. Attribution is still decided by OpenAI.
Pixel and Conversions API on WooCommerce
Pixel for ChatGPT Ads is a WooCommerce plugin for ChatGPT Ads conversion tracking. It loads the Pixel for contents_viewed, items_added, checkout_started and order_created, and sends order_created through the Conversions API when WooCommerce marks the order paid. Both purchases carry an event ID derived from the order.
The Conversions API guide for WooCommerce covers the server side in depth — triggers, the 7-day rule and retries.
Questions
Is the ChatGPT pixel the same as the OpenAI Measurement Pixel?
Yes. “ChatGPT pixel” and “OpenAI Ads pixel” are common names for the OpenAI Measurement Pixel used by ChatGPT Ads.
Can I use the Conversions API without the Pixel?
Yes, but you lose the browsing events — product views, add to cart and checkout starts — which only the browser can see.
Which one should I install first?
The Pixel, since it covers the whole journey. Add the server-side purchase with the same event ID so the sale does not depend on the browser.
Both paths, set up for WooCommerce
Pixel for ChatGPT Ads runs the Pixel for the buying journey and sends the purchase server-side with a shared event ID.
Related guides
- ChatGPT Pixel for WooCommerceWhat the plugin sends to ChatGPT Ads from a WooCommerce store, how it is set up, and what it does not do.
- OpenAI Conversions API for WooCommerceWhen and how a WooCommerce purchase is sent server-side, and what server-side tracking does not solve.
- How to install the ChatGPT Ads pixel on WooCommercePrerequisites, where the Pixel ID and API key come from, configuration, and how to verify the first order.