Track AI assistant traffic in Google Analytics

Many AI assistant visits arrive without a referrer but still carry a UTM tag. Google Analytics 4 (GA4) has an AI Assistant channel, but it reads the referrer, not the tag, so tagged visits from the apps fall through to Unassigned. One extra condition brings them in. These steps reflect our tests as of October 2026; the scorecard shows the current state.

1. Keep the UTM tag on the landing URL

GA4 sets a session's source from utm_source in the page URL, and falls back to the referrer when there is no tag. When an assistant's app sends a tag and no referrer, the tag is the visit's only trace. If it's gone before the GA4 tag fires, the visit lands in Direct.

Check that nothing drops the query string on the way in:

To test it, open any page on your site with ?utm_source=attribution-test appended, then look for that value under Session source in the Realtime report.

ChatGPT, Perplexity's apps and part of Copilot rely on the tag. Without it, those visits count as Direct. See Estimate your hidden AI traffic for how much each assistant sends this way.

2. Extend the AI Assistant channel

GA4's default channel group includes an AI Assistant channel. It matches a visit when the referrer is on Google's list of AI assistants, or when utm_medium is ai-assistant. No assistant we test sends that medium, so tagged visits that arrive without a referrer don't match. That is most of ChatGPT's visits, and the app visits from Perplexity and Copilot. They often land in Unassigned instead.

  1. In Admin > Data display > Channel groups, create a new channel group, starting from a copy of the default one.
  2. Open its AI Assistant channel and add a second condition, joined with or: Session source matches regex, using the pattern below.
  3. Add a condition joined with and: Session medium doesn't match regex ^(.*cp.*|ppc|retargeting|paid.*)$, the pattern GA4 uses for paid traffic. This keeps ChatGPT ad clicks out of the channel.
  4. Check that AI Assistant sits above Referral and Unassigned, and save.
  5. In your reports, pick the new channel group in place of the default one.

Keeping Google's own condition keeps the assistants on its list that we don't test, such as DeepSeek and Grok.

Custom channel groups apply to past data too, so you can compare the result with last month straight away.

3. The values to match

GA4 puts the referrer host or the utm_source value into the same dimension, Session source. One pattern covers both:

^((.*\.)?(chatgpt\.com|gemini\.google\.com|claude\.ai|copilot\.microsoft\.com|copilot\.cloud\.microsoft|m365copilotapp\.svc\.cloud\.microsoft|m365\.cloud\.microsoft|perplexity\.ai|meta\.ai|com\.openai\.chatgpt)|gemini|geminiforbusiness|perplexity|copilot\.com.*)$

What it matches:

ChatGPT
chatgpt.com, and com.openai.chatgpt from the Android app, which sends android-app://com.openai.chatgpt/
chatgpt.com, documented by OpenAI
Gemini
gemini.google.com
gemini, geminiforbusiness, seen only from Sep 18 to 28, 2026
Claude
claude.ai
none: Claude adds no tag yet
Copilot
copilot.com, copilot.microsoft.com, copilot.cloud.microsoft, m365copilotapp.svc.cloud.microsoft
copilot.com, sometimes with a suffix like copilot.com?form=MG0AUO
Perplexity
perplexity.ai
perplexity, sent by the apps

The pattern also includes m365.cloud.microsoft and meta.ai, which Adobe lists for AI traffic.

4. The Google exception

Google lists some pages with ChatGPT's tag still in the URL. Those visits came from search, but GA4 takes the tag over the referrer, so they count as chatgpt.com. A channel group can't fix this, because its conditions can't see the referrer.

To size it, build an exploration with Session source and Page referrer, filtered to chatgpt.com, and look for Google referrers. Subtract them when you report ChatGPT's numbers.

5. ChatGPT ad clicks

If you advertise in ChatGPT, your ad clicks carry the UTM tags you set, and OpenAI adds oppref or olref to the landing URL. They are paid traffic, so keep them out of the AI Assistant channel.

To report everything ChatGPT sends you, show ad clicks as their own line next to the AI Assistant channel, not inside it.

6. Check it works

  1. Ask an assistant to link to a page on your site, open the link, and find the visit in your AI assistants channel in the Realtime report.
  2. Repeat from a phone app, where the tag is often the only signal.
  3. Recheck now and then. Assistants change their links without notice, and our changelog records each change we see.