Skip to content

GuidesAd Platforms3 min read

Tracking ChatGPT Ads in the EU: OpenAI Pixel + Conversions API, Consent-Gated

How I connect OpenAI's pixel and Conversions API: consent before measurement, shared event IDs and a saved oppref click reference.

Published
Reviewed

Daniil MaximkinProduct & Solutions Engineer

Short answer

OpenAI opened self-service Ads Manager in 31 European markets on 31 August 2026. The billed legal entity must be in an available country. For a custom measurement build, I block the pixel until consent, set its consent state explicitly and gate server events separately. I reuse the same event ID across pixel and API and preserve oppref for server attribution. Neither a cookie nor an API opt_out flag substitutes for the consent decision.

— Daniil

Key takeaways

  • OpenAI's Europe announcement is dated 18 August, with a 31 August update confirming self-service access.
  • Pixel consent defaults to true unless explicitly denied or a stored denial is found. Blocked measurement events are not replayed.
  • The Conversions API has no dedicated consent field. opt_out concerns possible future personalization; it is not a measurement-consent gate.
  • Deduplication uses the same Pixel ID, event name and event ID. For custom events, keep custom_event_name consistent too.
  • The server must capture and send oppref itself. The API does not collect it automatically.
  • The Shopify app has documented catalog and commerce-event integration. Its consent and server-event behaviour need verification before replacing custom wiring.
In this guide

OpenAI announced expansion to 31 European markets on 18 August 2026. Its 31 August update confirms self-service access. For an EU store, I check the billed entity’s country and then the measurement setup.

My custom build has three separate checks: consent, event receipt and attribution. Passing one does not prove the others.

The browser and server routes

The browser SDK sends events with oaiq("measure", ...). The server sends them to https://bzr.openai.com/v1/events with a Pixel ID and a server-only Conversions API key.

The API requires an event ID, type, timestamp and data object, with additional requirements by event type. It accepts up to 1,000 events per batch; one invalid event fails the batch. Timestamps must be within the last seven days and no more than ten minutes ahead.

I use one shared ID for the same action on both routes. With the same Pixel ID and event name, OpenAI keeps the first received event and ignores later duplicates. Custom events also need the same custom name.

The pixel defaults to granted unless it finds a stored denial or receives an explicit denial. OpenAI documents oaiq("consent", false) before init, followed by true when permission is granted. Denied events are not replayed. Denial removes the attribution cookies.

For a setup that promises no OpenAI requests before consent, I also delay loading the SDK. Blocking measurement pings is narrower than blocking every network request.

The API has no dedicated consent field. Its opt_out flag concerns future user-level personalization. I gate server events myself and check withdrawal before queued events or retries leave the system.

Keep the click reference with the outcome

The pixel captures oppref from the landing URL. The API does not. I preserve the original value through the permitted session and send it on the server event.

The pixel requests a 30-day lifetime for __oppref and 365 days for __obref; browsers can shorten those. These are cookie lifetimes, not attribution windows. If I forward __obref, it goes unchanged into user.obref, subject to consent.

I follow OpenAI’s normalization rules before hashing supported customer identifiers. Geography, IP and user-agent fields use their documented raw formats. I send only the fields the agreed measurement setup permits.

Automatic advanced matching can detect supported customer information and hash it in the browser. The developer guide describes it conditionally. I could not confirm a blanket activation date of 17 August from the current primary pages, so I do not use that date as a fact.

EU targeting and Shopify

The custom-audiences guide says personalized ads are not yet available in the EEA and Switzerland, and custom audiences cannot target those markets. That does not replace the measurement consent gate.

OpenAI’s free Shopify app was listed on 3 September. Its Help page documents catalog sync and commerce events through OpenAI Pixel for Shopify, with current US availability and wider rollout planned.

The pages I read do not establish its full server-event coverage or handling of Shopify consent. I would verify those before deciding whether a custom integration is needed. Missing public detail is not proof that the app ignores consent.

Validate receipt, then reporting

My acceptance checks cover rejection, acceptance and withdrawal. I check SDK debug output and recent-event monitoring, then the campaign’s conversion configuration.

OpenAI’s primary pages disagree on view-through totals. The developer guides exclude them from Conversions; Help’s Measure Results includes eligible view-through events when the one-day reporting window is enabled. I record the selected columns and windows and reconcile click-through and view-through separately. I do not present either definition as settled.

I can build the measurement

The deliverable is consent handling, shared event IDs, preserved click references and reconciliation against actual outcomes. It belongs to my AI shopping channels work and the ChatGPT Ads measurement situation.

I built a demo with synthetic data that checks consent on both the browser Pixel and the order webhook, using one shared purchase ID. You can read the demo repository on GitHub; delivery is a dry run by default.

For organic ChatGPT referrals, use the GA4 and Shopify attribution guide. That is a separate measurement task.

If the guide did not settle itUSD 395

I run this reconciliation on your store read-only, for USD 395 — written verdict two working days after the kickoff.

Request a Health Check

Questions

Questions this guide answers

Can an EU company buy ChatGPT Ads?

OpenAI's current availability page includes all EU member states. The legal entity that advertises and is billed must be based in an available country. I check that page for the actual entity before planning setup.

How do I stop the pixel measuring before consent?

For a build that allows no OpenAI requests before consent, I delay loading the SDK. Once loaded, I set oaiq("consent", false) before init and grant consent only after the relevant permission. SDK consent blocks measurement pings; it is not a promise of no script or configuration requests.

How do you gate server events?

I record the relevant permission and check it before collection and sending, including queued retries after withdrawal. OpenAI says to stop forwarding the __obref cookie when consent is revoked. I apply the agreed consent rule to the whole event, not just that cookie.

Are Ads Manager conversions the same as accepted events?

No. The event must match the campaign's configured conversion and attribution rules. OpenAI says reporting can take 24–48 hours and totals may include modeled conversions. I check event receipt separately from attributed results.

Daniil Maximkin

Hi, I’m Daniil.

I work with you from defining the problem to implementation and handover. You talk to the person who does the work. I work in English and Russian.

Tried it and still stuck?

Describe your task

The first answer is free, within one working day. Or write directly: next@taskfordaniel.com