DEV Community

Cover image for GA4 Now Has an AI Assistant Channel. Here's What It Misses
Moksh Gupta
Moksh Gupta

Posted on Originally published at devtoollab.com

GA4 Now Has an AI Assistant Channel. Here's What It Misses

If you've been hand-rolling a regex channel to spot ChatGPT and Perplexity visits in Google Analytics, GA4 quietly started doing it for you this year. It's good, not complete. I pulled 90 days of data from DevToolLab's own property to see exactly where the built-in version falls short, and wrote up the full method with the Data API script on DevToolLab. Here's the condensed version.

What GA4 does now

Google added an AI Assistant channel to the default channel group in its release notes on May 13, 2026. The rule is simple: when a session's referrer is on Google's list of AI assistants, GA4 stamps the session with an ai-assistant medium and an (ai-assistant) campaign, and the channel collects everything carrying that medium. Google's examples are ChatGPT, Gemini, DeepSeek, Copilot and Grok, and its docs say outright that AI Overviews and AI Mode are not included.

Google Analytics Help table of default channel descriptions, showing the AI Assistant row that names ChatGPT, Gemini, Deepseek, Copilot and Grok and excludes AI Overviews and AI Mode

To see it, open Reports, Acquisition, Traffic acquisition, and look at the channel column. On our property, the first ai-assistant sessions showed up the week of June 1, 2026.

The history doesn't move

The new label only applies going forward. Every chatgpt.com or claude.ai visit before that June week is still sitting in Referral, so a year-over-year chart of "AI Assistant" starts from zero in June and looks like explosive growth that's mostly a relabel.

Weekly stacked bars of AI-sourced sessions on devtoollab.com, April to September 2026: Referral and Unassigned until the week of June 1, then AI Assistant rising to 98.5% by late September

The old picture was worse than "it was all Referral", too. For the eight full weeks before the switch, somewhere between 21% and 59% of our AI-sourced sessions each week landed in Unassigned. Anyone who counted AI referrals from the Referral row back then was low by that much.

Also worth knowing: Google doesn't publish the list of referrers it treats as AI assistants. Its downloadable default-channel source sheet (819 sources, checked October 1, 2026) has search, shopping, social and video categories and nothing for AI. Your own data is the only way to find out what counts.

Where the 5.5% goes

Over the 90 days to September 30, 2026, the built-in channel caught 94.5% of our AI-sourced sessions. The rest split like this: 4.2% Unassigned, 1.2% Referral, 0.1% Organic Search.

Diagram of three paths for an AI click in GA4: referrers on Google's list go to AI Assistant at 94.5%, a source tag with no medium goes to Unassigned at 4.2%, and referrers not on the list go to Referral at 1.2%, all feeding one custom channel

The Unassigned chunk isn't a referrer problem at all. Sources like perplexity and copilot.com arrive with a medium of (not set), which means the link carried a source tag but no medium. The perplexity one was still showing up on September 24, so it's not just rollout noise.

The Referral chunk is assistants GA4 doesn't seem to recognize: duck.ai (DuckDuckGo's chat), l.meta.ai, copilot.cloud.microsoft. The odd one is gemini.google.com. Google lists Gemini as an example, yet every Gemini web session we got since June went to Referral, the last one on July 5.

The original post has the Python script that produces this breakdown for your own property through the GA4 Data API, so you can check your numbers instead of trusting mine.

One custom channel catches all three

Custom channel groups apply to past data, which the built-in channel doesn't, so this also fixes the June discontinuity. You need Editor access; standard properties get 2 custom groups, 360 properties get 5, with up to 50 channels each.

  1. Admin, then Data display, then Channel groups, then Create new channel group (it starts as a copy of the default).
  2. Add a channel called something like "AI assistants (all)".
  3. Condition one: Medium exactly matches ai-assistant.
  4. OR condition two: Source matches regex, using the pattern below.
  5. Reorder so the new channel sits first. GA4 assigns traffic to the first channel that matches, so anything below Referral never gets the chatgpt.com referrals.
  6. Save and pick the group as the dimension in Traffic acquisition.
(.*\.)?(chatgpt\.com|chat\.openai\.com|openai|perplexity|perplexity\.ai|claude\.ai|gemini|gemini\.google\.com|copilot\.com|copilot\.microsoft\.com|copilot\.cloud\.microsoft|meta\.ai|duck\.ai|poe\.com|chat\.deepseek\.com|grok\.com|chat\.mistral\.ai)
Enter fullscreen mode Exit fullscreen mode

GA4's "matches regex" has to match the whole value, so the (.*\.)? prefix is what lets l.meta.ai through while keeping every name exact. Before saving, paste your real source list into the Regex Tester with the pattern wrapped in ^(?:...)$ to mimic that whole-value matching.

Skip Google's sample regex

The custom channel help page includes a sample AI regex. Don't paste it. Because GA4 matches the whole value, its first alternative, ^.*ai, matches any source ending in "ai". On our property that pulled in five .ai domains GA4 itself didn't consider assistants, and .*gemini.* also matches gemini.com, the crypto exchange. Meanwhile it misses poe.com, grok.com and chat.deepseek.com, even though DeepSeek and Grok are in Google's own examples.

Google's own AI traffic stays hidden

Clicks from AI Overviews and AI Mode count as Organic Search in GA4. Google's Search Central docs say they're included in Search Console's Performance report under the "Web" search type, mixed in with regular results. That makes Search Console the only first-party view of them, and it doesn't break them out on their own.

The logs see what GA4 can't

A lot of AI usage never becomes a click: the assistant fetches your page, quotes it, and the user never visits. Those fetches land in your access log. OpenAI's agent for a user's live question is ChatGPT-User (alongside OAI-SearchBot and GPTBot), Perplexity's is Perplexity-User, and Anthropic's is Claude-User.

grep -E 'ChatGPT-User|Perplexity-User|Claude-User' access.log | awk '{print $7}' | sort | uniq -c | sort -rn
Enter fullscreen mode Exit fullscreen mode

That prints the pages assistants pulled into answers, most-fetched first.

A few things that trip people up

  • No AI Assistant row at all? Check the date range: it probably stops before GA4 started applying the label to your property.
  • perplexity / (not set) in Unassigned is the medium-less tag; the source condition in the custom channel catches it.
  • A custom channel stuck at zero is almost always sitting below a channel that matched first. Move it to the top.
  • If you tag your own links, give them a medium as well as a source. The UTM Link Builder puts the medium field right next to the source, which makes it hard to forget.

Bottom line

For a trend line from June 2026 on, the built-in AI Assistant channel is enough. Anyone who has to put AI traffic in a report should build the custom group, since it covers the gaps and backfills history. Tell stakeholders plainly that Google's AI Overviews can't be separated in GA4. And if the question is whether assistants read your content at all, count the -User agents in your logs.

References

Top comments (0)