oaiq.min.js is at version 0.1.3. On init it reads ?oppref= from window.location, writes it into the first-party cookie __oppref with a 720-hour TTL, and sets a probe cookie __oaiq_domain_probe. Every subsequent measure call POSTs JSON to:"}
Scoopfeeds — Intelligent news, curated.
computer-science

ChatGPT serves ads. Here's the full attribution loop

Hacker News · Apr 28, 2026, 11:54 PM

Key takeaways

  • On the Chat GPT side, the backend injects structured single_advertiser_ad_unit objects into the conversation SSE stream while the model is responding.
  • I captured both halves on a consented mobile-traffic research fleet.
  • When you send a message to ChatGPT, the backend opens an SSE response at chatgpt.com/backend-api/f/conversation.

Open AI's ad platform has two halves. On the Chat GPT side, the backend injects structured single_advertiser_ad_unit objects into the conversation SSE stream while the model is responding. On the merchant side, a tracking SDK called OAIQ runs in the visitor's browser and reports product views back to Open AI. The two are tied together by Fernet-encrypted click tokens, four of them per ad.

I captured both halves on a consented mobile-traffic research fleet. Everything below comes from observed traffic.

When you send a message to ChatGPT, the backend opens an SSE response at chatgpt.com/backend-api/f/conversation. Most events in that stream are model-output. Some are ad units. They look like this:

Article preview — originally published by Hacker News. Full story at the source.
Read full story on Hacker News → More top stories
Aggregated and edited by the Scoop newsroom. We surface news from Hacker News alongside other reporting so you can compare coverage in one place. Editorial policy · Corrections · About Scoop