Guide · updated 2026-10-29

How to track ChatGPT traffic and other AI assistant visits

To track ChatGPT traffic in GA4, filter session source with a regex that lists every AI assistant's referring host, then read GA4's AI Assistant channel beside it. Neither catches everything: a link opened from a desktop or phone app, or a URL pasted into the address bar, reaches you with no referrer and is filed as Direct.

The GA4 regex

Paste it into a Session source filter set to matches regex. It covers 51 referring hosts across 40 assistants. It's anchored, so it never matches google.com, bing.com or a look-alike such as notchatgpt.com.

^(www\.)?(chatgpt\.com|chat\.openai\.com|openai\.com|perplexity\.ai|claude\.ai|gemini\.google\.com|aistudio\.google\.com|copilot\.microsoft\.com|m365\.cloud\.microsoft|grok\.com|you\.com|meta\.ai|poe\.com|phind\.com|chat\.deepseek\.com|chat\.mistral\.ai|chat\.qwen\.ai|kimi\.com|felo\.ai|iask\.ai|andisearch\.com|komo\.ai|chat\.z\.ai|doubao\.com|copilot\.cloud\.microsoft|duck\.ai|yuanbao\.tencent\.com|ai\.perplexity\.app|chat\.felo\.ai|genspark\.ai|chat\.genspark\.ai|chatglm\.cn|deepseek\.com|ernie\.baidu\.com|yiyan\.baidu\.com|ai\.baidu\.com|hunyuan\.tencent\.com|xinghuo\.xfyun\.cn|giga\.chat|hey\.pi\.ai|lumo\.proton\.me|manus\.im|sarvam\.ai|t3\.chat|venice\.ai|notebooklm\.google\.com|bard\.google\.com|app\.jasper\.ai|app\.writesonic\.com|chatplus\.com|chat-gpt\.org)$|^(([a-z0-9-]+\.){2,}|([a-vx-z0-9-][a-z0-9-]*|w|ww|w[a-vx-z0-9-][a-z0-9-]*|ww[a-vx-z0-9-][a-z0-9-]*|www[a-z0-9-]+)\.)(perplexity\.ai|openai\.com|claude\.ai|anthropic\.com|you\.com|phind\.com|poe\.com)$
The same regex in 5 shorter parts

Use these if a field won't take the full pattern. Each part works on its own; add them as OR conditions on the same channel.

^(www\.)?(chatgpt\.com|chat\.openai\.com|openai\.com|perplexity\.ai|claude\.ai|gemini\.google\.com|aistudio\.google\.com|copilot\.microsoft\.com|m365\.cloud\.microsoft|grok\.com|you\.com|meta\.ai|poe\.com|phind\.com|chat\.deepseek\.com|chat\.mistral\.ai)$
^(www\.)?(chat\.qwen\.ai|kimi\.com|felo\.ai|iask\.ai|andisearch\.com|komo\.ai|chat\.z\.ai|doubao\.com|copilot\.cloud\.microsoft|duck\.ai|yuanbao\.tencent\.com|ai\.perplexity\.app|chat\.felo\.ai|genspark\.ai|chat\.genspark\.ai|chatglm\.cn|deepseek\.com)$
^(www\.)?(ernie\.baidu\.com|yiyan\.baidu\.com|ai\.baidu\.com|hunyuan\.tencent\.com|xinghuo\.xfyun\.cn|giga\.chat|hey\.pi\.ai|lumo\.proton\.me|manus\.im|sarvam\.ai|t3\.chat|venice\.ai|notebooklm\.google\.com|bard\.google\.com|app\.jasper\.ai)$
^(www\.)?(app\.writesonic\.com|chatplus\.com|chat-gpt\.org)$
^(([a-z0-9-]+\.){2,}|([a-vx-z0-9-][a-z0-9-]*|w|ww|w[a-vx-z0-9-][a-z0-9-]*|ww[a-vx-z0-9-][a-z0-9-]*|www[a-z0-9-]+)\.)(perplexity\.ai|openai\.com|claude\.ai|anthropic\.com|you\.com|phind\.com|poe\.com)$
A visit that arrives with a source can be routed to its own channel. One that arrives without it lands in Direct.

How to track ChatGPT traffic in GA4

  1. 1

    Read GA4's own AI Assistant channel first

    In Reports, Acquisition, Traffic acquisition, set the primary dimension to Session default channel group. GA4 now files sessions whose referrer is on Google's list of AI assistants under AI Assistant. Google doesn't publish that list, and the channel leaves out clicks from AI Overviews and AI Mode, which arrive as Google search.

    Source:Google: GA4 default channel group

  2. 2

    Filter session source with the full referrer regex

    Add a filter on Session source, condition matches regex, and paste the regex above. It is generated from the same host list Growth Radar classifies arrivals with, so you can check Google's channel against a list you can read. GA4 regex is case sensitive; the pattern is lowercase, as referring hostnames are.

    Source:Google: regular expressions in GA4

  3. 3

    Make it a channel in a custom channel group

    In Admin, Data display, Channel groups, copy the default group, add a channel named AI assistants with the condition Session source matches regex, and drag it above Referral. GA4 assigns a session to the first channel that matches, so below Referral it never fires. Custom channel groups apply to past data too. If the field refuses the full pattern, add the split parts as OR conditions in the same channel.

    Source:Google: custom channel groups

  4. 4

    Keep bing.com and google.com out

    bing.com and google.com are search engines. Copilot sends visitors from copilot.microsoft.com and its cloud.microsoft hosts, and Gemini from gemini.google.com, so a bare bing or google token counts ordinary search clicks as AI. A loose pattern like gpt or bard matches any source containing those letters.

  5. 5

    Break the AI sessions down by landing page

    Switch the dimension to Landing page with the same filter. The pages assistants send people to are the pages they cite, so that's the list worth improving first.

Every AI referrer host in the regex

This is the list Growth Radar itself uses to decide that a visit came from an assistant, rendered from the same code. It includes hosts from the PostHog and Matomo AI-referrer lists. A zone marked * also covers its subdomains.

Andi
andisearch.com
Baidu AI
ai.baidu.com
Chat+
chatplus.comchat-gpt.org
ChatGLM
chatglm.cn
ChatGPT
chatgpt.comchat.openai.comopenai.com*.openai.com
Claude
claude.ai*.claude.ai*.anthropic.com
Copilot
copilot.microsoft.comm365.cloud.microsoftcopilot.cloud.microsoft
DeepSeek
chat.deepseek.comdeepseek.com
Doubao
doubao.com
Duck.ai
duck.ai
ERNIE
ernie.baidu.comyiyan.baidu.com
Felo
felo.aichat.felo.ai
Gemini
gemini.google.combard.google.com
Genspark
genspark.aichat.genspark.ai
GigaChat
giga.chat
Google AI Studio
aistudio.google.com
Grok
grok.com
Hunyuan
hunyuan.tencent.com
iAsk
iask.ai
iFlytek Spark
xinghuo.xfyun.cn
Jasper
app.jasper.ai
Kimi
kimi.com
Komo
komo.ai
Le Chat
chat.mistral.ai
Lumo
lumo.proton.me
Manus
manus.im
Meta AI
meta.ai
NotebookLM
notebooklm.google.com
Perplexity
perplexity.aiai.perplexity.app*.perplexity.ai
Phind
phind.com*.phind.com
Pi
hey.pi.ai
Poe
poe.com*.poe.com
Qwen
chat.qwen.ai
Sarvam
sarvam.ai
T3 Chat
t3.chat
Venice
venice.ai
Writesonic
app.writesonic.com
You.com
you.com*.you.com
Yuanbao
yuanbao.tencent.com
Z.ai
chat.z.ai

What no analytics tool can see

A regex only sorts visits that arrived with a source. These arrive without one, and land in Direct whatever you paste.

Clicks from an app with no referrer

The Referer header names the web page a request came from. A link opened from a desktop or phone app has no web page behind it, so unless the app adds one or tags the link, the visit has no source and GA4 files it as Direct.

Source:MDN: the Referer headerGoogle: GA4 default channel group

Copied and pasted links

Someone who copies a URL out of an answer and pastes it into the address bar arrives exactly like someone who typed it. GA4 defines Direct as arriving by a saved link or by entering the URL, and nothing in the request says otherwise.

Source:Google: GA4 default channel group

Links that strip the referrer

A link marked noreferrer, or a page served with a no-referrer policy, sends no Referer at all. Whether an assistant does this can change without notice.

Source:MDN: Referrer-Policy

Answers nobody clicks

An answer that names you without a click leaves no trace in any analytics tool. That's citation tracking, which measures something different from traffic.

ChatGPT's utm tag recovers part of the gap

OpenAI says ChatGPT adds utm_source=chatgpt.com to links in its answers. When the referrer is gone but the tag survives, GA4 still reads chatgpt.com as the session source, and the regex above matches it. Other assistants make no such promise.

Source:OpenAI: publishers and developers FAQ

What Growth Radar does with the same list

  • Growth Radar's tracker records the referring host and any utm source on the landing pageview, and classifies both with the host list on this page, so the two never disagree.
  • A visit that carried only an assistant's utm tag is counted as its own channel, never folded into referrer visits.
  • GA4's AI Assistant channel is shown beside its own numbers as a site-level floor, never added to them.
  • Every AI visit is tied to the landing page it hit, and from there to the page's AI-crawler hits and citations Bing reports.
  • A zero is shown with the size of the list behind it, 40 assistants, because no arrivals can also mean an assistant the list doesn't know yet.

Questions

Why does ChatGPT traffic show up as Direct in GA4?

Because the visit reached your site with no referrer and no utm tag. That happens when the link is opened from an app rather than a web page, when someone pastes the URL, or when the link strips the referrer. GA4 files any session with no source as Direct.

Does GA4 track AI traffic on its own now?

Partly. GA4's default channel group has an AI Assistant channel built from Google's own list of assistant referrers. It only sees visits that carried a referrer, and it leaves out AI Overviews and AI Mode clicks, which count as Google search.

Should the regex include bing.com for Copilot?

No. Copilot sends visitors from copilot.microsoft.com and Microsoft cloud hosts. bing.com is web search, and counting it as AI mixes ordinary search clicks into the AI number.