| utm_source | chatgpt |
| utm_medium | ai-assistant |
| utm_campaign | (set per campaign) |
| utm_id | (set per campaign) |
| utm_term | (set per campaign) |
| utm_content | (set per campaign) |
ChatGPT is no longer just a chatbot — it’s a discovery surface. It browses the web, cites sources, and sends real people to real pages. For marketers that means a new traffic source showed up uninvited, and unlike Google Ads or Meta it comes with no dashboard, no campaign settings, and no place to attach tracking. This page is about working with that constraint rather than against it.
ChatGPT as a traffic source
When ChatGPT answers a question that benefits from current information, it can browse and surface links — citations, recommended reading, the page it pulled a fact from. A user who clicks one of those links becomes a visitor on your site. That’s the click you want to measure.
The critical thing to internalize: the link ChatGPT shows is your link. ChatGPT doesn’t mint a tracking URL or wrap it in a redirect you can configure. It surfaces the canonical URL it found. So whatever UTMs are on that URL when ChatGPT reads it are the UTMs the visitor arrives with. If the page had none, the visit arrives untagged.
How its traffic appears in analytics
Here’s where it gets frustrating. AI-assistant clicks frequently arrive with no referrer or an opaque one. Client-side analytics has nothing to attribute the visit to, so GA4 files it under (direct)/(none) — the same bucket as someone typing your URL by hand. Your ChatGPT traffic is real, but it’s hiding in plain sight inside Direct.
When a referrer is present, it’s commonly chatgpt.com (historically chat.openai.com). But you can’t build a strategy on a signal that’s missing more often than not. The durable signal is the UTM you put in the URL yourself — it lives in the query string and survives even when the referrer is stripped.
The UTM convention to apply
You can’t tag inside ChatGPT, so you tag the links you control that may end up in front of it: URLs you publish in content ChatGPT browses, links in resources you expose to AI crawlers, links you hand out in answer-style contexts you own.
| Parameter | Value | Why |
|---|---|---|
utm_source | chatgpt | Identifies the assistant. Lowercase — ChatGPT and chatgpt split into separate rows. |
utm_medium | ai-assistant | Groups all AI-assistant traffic under one medium. GA4’s native AI Assistants channel recognizes this value, so it classifies automatically — no custom channel group needed. |
utm_campaign | (optional) | Use it if the link belongs to a specific initiative; otherwise leave it off. |
For how the receiving end classifies all this — how GA4’s native AI Assistants channel picks up utm_medium=ai-assistant, and why the literal ai still falls into Unassigned — see Google Analytics .
Limitations and gotchas
- No macros, no click ID. There’s no
gclid/fbclidequivalent and no click-time substitution. Everything rests on the UTMs you pre-place on your own URLs. - You can’t tag a link the model writes itself. If ChatGPT composes a URL from memory rather than citing your tagged canonical, your parameters won’t be on it. You can only influence the links you actually control.
- Casing splits reports.
utm_source=ChatGPTandutm_source=chatgptare two different sources to GA4. Pick lowercase and enforce it everywhere. - Use
ai-assistant, notai. GA4’s native AI Assistants channel recognizesutm_medium=ai-assistantout of the box — no custom channel group needed. The literalutm_medium=aiis not recognized and still sits in Unassigned, so the exact value matters. - Referrer is unreliable. Don’t lean on
chatgpt.comshowing up — it often won’t. Treat the UTM as primary and the referrer as a bonus confirmation.
Verification
- Inspect a tagged link end to end. Open one of your tagged canonical URLs and confirm
utm_source=chatgpt&utm_medium=ai-assistantis intact in the address bar after any redirects. - Confirm the AI Assistants channel. With
ai-assistantthe session should classify under GA4’s native AI Assistants channel — check there to confirm your tags are arriving and being recognized, rather than waiting for traffic to surface in Unassigned. - Cross-check the referrer. Where
chatgpt.comdoes appear as a referrer, confirm it lines up with your UTM-tagged sessions so you know the convention is holding.
ChatGPT won’t hand you a tracking parameter, but you can still measure the traffic — by tagging the links you own and giving AI its own lane in analytics. For the bigger picture, read how to track AI traffic across ChatGPT, Perplexity, and Gemini, the UTM convention for the AI search era, and whether AI referral traffic should get its own GA4 channel.
