Live#1 costs $11On the board 10Season 1Resets in --d --:--:--Everything else free
10visitors, last 24h
10brands on the board
$10current price of #1
78days until the reset

see more stats →

Brought to you byWant your logo here? Bid for a top-5 spot →

Paid · 2 min read

Persist the ChatGPT Ads oppref Click ID on First Touch

A developer who integrated OpenAI's ads pixel and Conversions API says three things explain almost every missing ChatGPT ads conversion: a lost oppref, wrong currency units and mismatched event IDs.

A developer who builds conversion tracking tooling for Shopify stores posted a write up of integrating OpenAI's ads measurement stack, the JavaScript pixel plus the Conversions API. He discloses the commercial interest up front and says he found essentially no implementation write ups, so what follows is the documentation plus trial and error.

The strategy

Attribution rests on one identifier called oppref. When someone clicks an ad inside ChatGPT they land on your site with an oppref parameter on the URL, and that is the click ID, the equivalent of gclid. OpenAI's own pixel stores it in a first party __oppref cookie and sends it with every event. If you are sending conversions server side, he says you have to capture and persist it yourself, because the API cannot discover it. No oppref on the conversion means no click attribution at all.

Things he says he confirmed in practice: the value is not single use, the SDK reuses it across events including repeat purchases, and a fresh ad click supersedes the stored one. OpenAI has published no hard expiry, so he treats roughly 90 days as the convention other click IDs use. The failure mode is the one gclid had in its early days, where the parameter survives the landing page and dies before checkout through redirects, cross domain hops and apps that strip query parameters.

On the API itself he reports one event per request, a bearer key created by hand in Ads Manager with no OAuth, and fixed event names rather than custom conversions: page_viewed, contents_viewed, items_added, checkout_started, order_created. There is a validate_only flag that works as a proper dry run. Two gotchas he flags as certain to bite people: amounts go in as integers in the currency's minor unit, so $49.99 is sent as 4999, and deduplication works like Meta's, so the pixel and the API must send the same event_id or you double count. User matching runs on hashed email and hashed external ID, while the geo fields go in raw.

Why it works

Every new ad platform starts with reporting that is coarser than what it is measuring, so the store's own data has to carry the attribution. A click ID that only exists in the URL is fragile by design, and persisting it on first touch is the one step that survives every checkout redirect after it.

How to track ChatGPT ads conversions

Capture oppref on the landing page, store it in a first party cookie, and attach it to every server side event. Send amounts in minor units, share one event_id between pixel and API, and use validate_only before going live.

Credit: u/ksz2018 on Reddit

← All paid strategies · Got one that worked? Tell @dylan_builds and we will write it up with credit.

One email a week.

Who took number one and what it cost them, plus the best paid and the best organic strategy we found that week. No filler.

  • Unlocks every guide in the skills library
  • Unlocks every AI skill download
  • Unsubscribe in one click