utm.new
guide ·

How to track ChatGPT, Perplexity, and Gemini traffic

AI assistants send real visitors to your site — and your analytics already classifies them from the referrer. Here's where to find that traffic, what's genuinely missing, and why tagging it yourself makes things worse.

Open your analytics and look at the last 90 days. Somewhere in there — small but climbing — you’ll find traffic from chatgpt.com, perplexity.ai, maybe gemini.google.com. People are asking an AI a question, the AI is citing your page, and they’re clicking through.

The instinct is to reach for UTMs. Resist it. There is nothing to tag here, and tagging anyway will corrupt the data you’re trying to read.

Organic AI traffic is already handled. GA4 and AnyTrack both classify it automatically from the referrer — no configuration, no parameters, no work. This guide covers where that traffic shows up, the one slice that genuinely goes missing, and the only situation where UTMs belong in this conversation at all.

Your analytics already does this

GA4 ships an AI Assistants default channel. Google’s own definition of how it fills: “The medium is set to ai-assistant and the campaign is set to (ai-assistant) if the referrer matches a list of AI Assistants.”

Read that carefully, because it’s the whole point. ai-assistant is a value GA4 writes when it recognizes an assistant’s referrer. It’s an output, not an input. You don’t type it — Google stamps it for you, and the channel rule then reads its own stamp. Google names ChatGPT, Gemini, Deepseek, Copilot, and Grok as matched sources, and explicitly excludes AI Overviews and AI Mode.

AnyTrack does the same job on its side. Every session gets a channel assigned from the referrer, the URL parameters, and any other available signal — which is why AI assistants show up as their own channel in the Campaign Report alongside organic search, email, social, and direct.

Two independent systems, same mechanism: the referrer arrives, the classifier reads it, the session lands in an AI bucket. Nothing was tagged to make that happen.

Why you can’t tag an AI citation anyway

Set aside the fact that it’s unnecessary. It also isn’t possible, and understanding why kills the idea properly.

When ChatGPT cites your blog post, it emits your canonical URL — the address it read off your page. You didn’t hand it a link. There’s no advertiser console, no destination-URL field, no macro. The model constructs the citation, and you have no reach into someone else’s product output.

So “tag the links you control that an assistant might cite” collapses on inspection. The link an assistant cites is your canonical URL. To tag it, you’d have to publish your canonical URL with ?utm_source=chatgpt baked in — which means:

  • Every visitor gets labeled chatgpt. Organic search, your newsletter, a direct type-in, a link from someone else’s site — all of them land on the tagged URL and all of them report as AI traffic. You haven’t measured the AI channel; you’ve inflated it with everything else.
  • You override a correct classification with a false one. GA4 gives precedence to UTM parameters on the URL. Your hand-typed ai-assistant medium overwrites the referrer-derived answer that was already right.
  • You fragment your canonical URLs. A parameterized address in circulation is a second version of the page, cited and linked as though it were the real one.

That’s three ways to make the report worse, in exchange for information you already had.

Where to actually look

In GA4. Reports → Acquisition → Traffic acquisition, grouped by default channel group. AI Assistants is a row. For the breakdown by assistant, switch the dimension to Session source.

Perplexity and Claude are not among the sources Google names, and Google doesn’t publish the full list. In practice those referrals land in Referral under perplexity.ai and claude.ai — still visible, still attributed, just filed one bucket over. If you want them counted alongside the rest, a custom channel group matching those hostnames by source is the supported way to do it. That’s an admin setting, not a tagging exercise.

In AnyTrack. The Campaign Report shows every channel, AI assistants included, with the conversions tied to each. Because AnyTrack tracks conversions server-side, you see what that traffic actually did — not just that it arrived.

The slice that genuinely goes missing

Referrer-based classification has one real failure mode: no referrer, no classification. Some assistant clicks arrive with the Referer header stripped, and those sessions land in (direct) / (none), indistinguishable from a type-in.

No parameter recovers this. The click never carried one, because you never authored the URL. Anyone selling you a tagging convention that “rescues referrer-less AI clicks” is selling something that cannot work — the tag would have to be on a link the model wrote.

What helps at the margin is capturing the visit server-side. Client-side analytics miss fast-bouncing sessions, blocked scripts, and consent-gated loads on top of the missing referrer. Server-side capture records the request when it hits your origin, before any of that. It doesn’t invent a referrer that was never sent — it just stops you from losing the visits that did carry one. That’s the half AnyTrack handles.

Treat your AI number as a floor, and be honest about it in reporting. It’s a real measurement of a real channel, with a known undercount — which is a much better position than a number you’ve inflated by tagging your own canonical URLs.

When UTMs do belong: AI ad platforms

Here’s the case that changes everything, and it’s arriving now.

The moment an assistant sells advertising, you’re back on familiar ground. OpenAI opened self-serve advertising in ChatGPT during 2026, and others will follow. An ad is a link you author — you set the destination URL, you control the query string, and the platform gives you its own tracking template and click-ID parameter.

At that point you tag it exactly the way you tag Google or Meta today: the platform’s documented template, its dynamic tokens for campaign and ad IDs, utm_source naming the platform. Not a chatgpt source invented for organic citations — the real convention that platform publishes for its advertisers.

Two rules for that day:

  1. Read the platform’s own advertiser docs when you set it up. Tokens, click-ID parameters, and template syntax are platform-specific and they change. Don’t carry over a shape you read in a blog post — including this one.
  2. Keep it separate from organic. Paid placements on an assistant and citations in its answers are different channels that happen to share a brand name. Tag the ads; leave the citations to the referrer.

Until an assistant is selling you a placement, there is no link for you to tag.

The short version

  1. Do nothing for organic AI traffic. GA4 and AnyTrack classify it from the referrer already.
  2. Never put utm_medium=ai-assistant on your own URLs. GA4 writes that value itself. Typing it forges the classifier’s output and mislabels every non-AI visitor who lands on the same link.
  3. Read the reports you already have. AI Assistants channel in GA4; Perplexity and Claude under Referral; the Campaign Report in AnyTrack.
  4. Accept the referrer-less floor. No tag recovers it. Capture server-side so you keep everything that did arrive.
  5. Tag AI ads when you buy them — per that platform’s own documented template, checked at setup time.

That’s the whole loop: let the referrer do the classification it’s already doing, and save your UTM discipline for links you actually author.

More in this series

Have AI traffic you can’t explain? The FAQ covers the common cases, or tell us what you’re seeing.