Spanish 1:1 coaching business
7.1 to 9.3
a server-side booking Lead with a shared event id for dedup raised match quality from 7.1 to 9.3.
Tracking & attribution engineeringCapability
Build the OpenAI Ads pixel and a consent-gated server-side sender that share one event id, so a purchase is counted once and nothing leaves without consent.
Sounds familiar?
How I solve it
I build the pixel and the server leg together, on one identity. A browser event and a server event share a single event id, so the platform can drop the duplicate instead of double-counting. A consent gate decides whether an event is allowed to leave at all, and the server sender runs on infrastructure you control. The whole thing is small, testable, and separable from the rest of your stack.
ChatGPT Ads is no longer US-only. OpenAI launched it in the UK on 11 August 2026 and in 31 European countries in late August, Spain and the Netherlands among them.
Before building, I check what you already have. OpenAI publishes a free ChatGPT Ads app in the Shopify App Store, listed on 3 September 2026. It syncs your catalog into a ChatGPT Ads product feed and connects an “OpenAI Pixel for Shopify” that sends commerce events to Ads Manager. As of 2 October 2026, OpenAI’s pages don’t settle whether the app already works for UK and EU stores. OpenAI’s help centre also lists measurement partners: Fospha, Hightouch, INCRMNTAL, LiveRamp, Northbeam, Rockerbox, Triple Whale and WorkMagic. I build the part they leave out. OpenAI’s own advice for Shopify, headless and server-side purchases is the browser pixel plus the Conversions API, with oppref sent on the server events.
The process
6 steps. Scope and a fixed price are agreed before the first one.
Confirm the pixel is installed and reads its consent default correctly before anything is sent. The pixel loads oaiq.min.js from bzrcdn.openai.com near the top of <head> and starts with oaiq("init", { pixelId }). It treats consent as granted unless you call oaiq("consent", false) first, so where consent is needed that call goes before init.
Define the purchase event and the identity fields it will carry, matching the pixel and the server leg. A purchase is order_created, with the amount as an integer in minor units (4200 for $42.00), not Shopify's decimal total. The server leg sends email and phone as SHA-256 hashes. In the browser, automatic advanced matching does the hashing when it is enabled; OpenAI documents it as on for pixels created through its Ads API, so I check its state in your account.
Add the server-side sender, gated by consent, with one shared event id for dedup. It posts to OpenAI's Conversions API at bzr.openai.com/v1/events with a key that stays on the server. The API has no consent field, so the gate sits in the sender. The pixel keeps the oppref click reference in a first-party __oppref cookie for 30 days; the API doesn't capture it, so the sender passes it with each server event.
Test a full purchase end to end and confirm the platform records it once, with the right value and currency. OpenAI matches duplicates on Pixel ID, event name and event id (the pixel's event_id is the API's id).
Add a small check that alerts you if the server leg stops delivering.
Hand over the setup and a short note on what to watch as the product changes.
Handover
A server-side sender for OpenAI Ads conversions: a pixel and a server leg sharing one event id so nothing double-counts, a consent gate that decides when an event may leave, and a small tested module you can keep. For a single channel it lives as a small standalone sender next to the rest of your tracking.
Built with
Proof
Capability Work I do; the proof below is from related projects.
Before → after
The closest live reference is a server-side build on another ad platform, the same technique this page is about. In that funnel the browser-only Lead event matched at 7.1, while the Calendly booking event — where the richer customer data sat — matched at 9.3, measured on 2026-05-27. The gap is the point: the booking step held the better data, and the server-side leg is what carries it into the conversion event.
Spanish 1:1 coaching business
7.1 to 9.3
a server-side booking Lead with a shared event id for dedup raised match quality from 7.1 to 9.3.
EU premium fashion brand, multi-currency
37/37
37 of 37 orders with matching receipts across 9 currencies; click-id coverage on one step moved from 11.8% to 78.9%.
Client words
No client words here. The live quotes I have are from Meta and Google Ads work, not from OpenAI Ads, and I will not present them as proof of this channel.
What you can look at
I built a demo with synthetic data that gives the browser Pixel and the order webhook one purchase ID, with consent checked on both routes. You can read the demo repository on GitHub; delivery is a dry run by default.
What you can check yourself is whether a ChatGPT Ads pixel loads on your store: the free AI Shopping Readiness Check reports it from outside.
I have no ChatGPT Ads client results yet. The figures above come from server-side work on other ad platforms, with client details anonymised.
Price and timeline
A Focused Fix is scoped and quoted in writing before any work starts. First I check what your pixel, the OpenAI app or a measurement partner already sends, so you pay only for the part that is missing.
QuoteFixed before work starts
A note from Daniilbefore you decide
OpenAI Ads is early. If your store does not run it, this is not a reason to rebuild your tracking. If a connector such as OpenAI’s Shopify app or a listed measurement partner already sends your events once, with consent handled, you don’t need a custom sender. And if your problem is that the ad is bad, not the measurement, the sender will not fix that.
— Daniil
Questions
No. The pixel and the server leg share one event id. OpenAI deduplicates on the Pixel ID, the event name and that id, keeps the first event it receives and ignores later duplicates. The test step confirms it, rather than assuming it.
The sender is gated: an event leaves only when your consent layer allows it. That matters here because OpenAI's pixel treats consent as granted unless you set it to false, and the Conversions API has no consent field of its own. What basis you rely on is a legal question for your counsel. This covers technical implementation, not legal advice.
No. The sender is added for this one channel. The rest of your tracking is untouched.
It may cover part of it. OpenAI's free ChatGPT Ads app for Shopify syncs your catalog into an ads product feed and connects an OpenAI pixel that sends commerce events to Ads Manager. OpenAI doesn't say whether it also sends server-side Conversions API events. I check what it sends in your account first and build only the part it leaves out.
The first answer is free, within one working day. Or write directly: next@taskfordaniel.com