How AI visits reach GA4

When someone clicks a cited link in an AI answer, the browser usually passes the assistant's domain as the referrer, and GA4 turns it into the session source. If that domain is on Google's list of AI assistants, GA4 also sets the medium to ai-assistant and the campaign to (ai-assistant), and the session lands in the AI Assistant channel. If it is not on the list, the medium stays referral and the session lands in Referral.

AssistantSession source you will usually see
ChatGPTchatgpt.com (older data: chat.openai.com)
Perplexityperplexity.ai
Google Geminigemini.google.com
Microsoft Copilotcopilot.microsoft.com
Claudeclaude.ai
DeepSeekchat.deepseek.com
Grokgrok.com

ChatGPT also appends utm_source=chatgpt.com to many of the links it shows, so those sessions arrive with the source set even when the referrer is missing. The tagging has not been consistent, and there have been periods when ChatGPT clicks arrived with neither a tag nor a referrer and were counted as Direct.

Google's own AI Overviews and AI Mode are not part of the AI Assistant channel. Clicks from them come from google.com and count as Organic Search.

Step 1: check the built-in channel

Open Reports → Acquisition → Traffic acquisition with Session default channel group as the dimension. The AI Assistant row shows sessions, engagement rate and key events for the assistants GA4 recognises.

Then switch the dimension to Session source / medium and look for assistant domains with the medium referral. Each one is an assistant the built-in channel does not recognise. Google names examples in its documentation but does not publish the full list, so this check is the only way to see what your property is missing.

Step 2: extend it with a custom channel group

You cannot edit the default channel group, but you can copy it. Custom channel groups apply to historical data as well as new data, and a standard property can have two of them (five on GA4 360).

  1. In GA4 go to Admin → Data display → Channel groups.
  2. Open the menu next to Default channel group and choose Copy to create new. Every channel in the copy is defined as "Default channel group matches exactly its name", so it behaves exactly like the default until you change it.
  3. Name the group, for example "Channels with AI assistants".
  4. Open the AI Assistant channel, click Or, and add a condition: Source · matches regex · the pattern below.
  5. Save the channel, click Reorder and drag AI Assistant above Referral. GA4 gives each session the first channel whose rules match, so otherwise an unrecognised assistant referral stops at Referral and never reaches your rule.
  6. Save the group. Choose it from the channel group selector in acquisition reports, or make it the primary channel group if you want it everywhere.

A starting pattern for the source condition:

(www\.)?(chatgpt\.com|chat\.openai\.com|perplexity\.ai|gemini\.google\.com|copilot\.microsoft\.com|copilot\.cloud\.microsoft|claude\.ai|chat\.deepseek\.com|chat\.mistral\.ai|meta\.ai|you\.com|phind\.com|chat\.qwen\.ai|kimi\.com|grok\.com)

GA4's "matches regex" has to match the whole source value, so list complete domains. Keep the pattern in a shared document and add new assistants as they show up in your referral report.

Step 3: report on it

  • Traffic acquisition with your new group as the primary dimension shows AI sessions, engagement rate and key events next to Organic Search and the other channels.
  • A free-form exploration with Session source as rows and Landing page as a second dimension shows which pages the assistants send people to. For content decisions this is the most useful single view.
  • Key events by channel let you compare how AI visitors convert with search visitors. On a small site, look at a quarter at a time rather than a week.

What GA4 cannot see

Treat the AI Assistant number as a floor. Several things push AI-driven visits into other channels or out of GA4 altogether:

  • Mobile and desktop apps. Links opened from assistant apps often reach your site with no referrer, and GA4 files them under Direct.
  • Copied links. People copy a URL out of an answer and paste it into a new tab. That is a Direct visit too.
  • Google's AI features. Clicks from AI Overviews and AI Mode count as Organic Search. For visibility there, use Search Console's Generative AI performance report, which shows how often your pages appeared in those features by page, country, device and date. It reports impressions, not clicks or queries.
  • Consent. With Consent Mode, visitors who decline analytics send only cookieless signals, so reports can show modelled or reduced numbers.

Two habits help. Watch the Direct channel for landing pages people would rarely type, such as a deep guide; a sudden rise there often follows a citation. And keep a small set of prompts that you check by hand each month, so you know which pages the assistants cite even when the click data is thin.

A server-side cross-check

GA4 only sees visitors whose browsers load the tag. Server logs, or a cookie-free first-party counter like the one this site uses, see every request, including visitors who block scripts. Comparing the two each month shows how much the browser-side number misses. Logs also show the AI crawlers themselves, which never appear in GA4. The companion guide on reading AI crawler traffic covers that side.

Primary sources and further reading

Book-derived explanations on this page are editorial synthesis. Platform-specific claims link to the platform's own current documentation.

Frequently asked questions

Does GA4 have a built-in AI channel?

Yes. The default channel group includes AI Assistant, which covers assistants Google recognises, such as ChatGPT, Gemini, DeepSeek, Copilot and Grok. It does not include Google's AI Overviews or AI Mode.

Why does some ChatGPT traffic show up as Direct?

Clicks from apps, copied links and untagged links without a referrer carry nothing GA4 can attribute, so they are counted as Direct.

Can I see which prompt sent the visitor?

No. Assistants do not pass the prompt to your site. The landing page is the best clue to the question that was being answered.