ChatGPT serves ads. Here's the full attribution loop
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: