GETCITED

Free tool

AI traffic rules for your analytics

Last verified

When someone clicks a link in a ChatGPT, Perplexity or Claude answer, the visit reaches your analytics as a referral from that assistant's hostname. Counting those visits needs a list of the hostnames, and many of the lists in circulation are stale: some still match Bard and Neeva, which send nobody, and some match by substring, so unrelated sites count as AI.

This is a maintained list of 13 hosts, each with the evidence behind it and the date it was checked, plus rules generated from it for GA4, Plausible, PostHog and Matomo. Version 1.0.0; the same list is published as JSON.

The hosts

A rule matches each host and any subdomain of it, so www.perplexity.ai counts as perplexity.ai. Documented means the operator says so itself; observed, not documented by the operator means an analytics vendor lists the host from the traffic it sees. Retired hosts are listed so you can remove them, and are in no rule.

AssistantReferrer hostsutm_sourceEvidenceChecked
ChatGPT
OpenAI
OpenAI documents that ChatGPT adds utm_source=chatgpt.com to links from search results, so these visits are attributable even when the referrer is missing.
  • chatgpt.com active
    Serves ChatGPT (bot challenge to scripts)
  • chat.openai.com legacy
    308 redirect to chatgpt.com
chatgpt.com
Observed, not documented by the operator.
Perplexity
Perplexity AI
  • perplexity.ai active
    301 redirect to www.perplexity.ai
none documented
Observed, not documented by the operator.
Claude
Anthropic
  • claude.ai active
    Serves Claude (bot challenge to scripts)
none documented
Observed, not documented by the operator.
Gemini
Google
Bard was renamed Gemini in February 2024 and its host now redirects, so no visitor arrives with a Bard referrer any more.
  • gemini.google.com active
    200, serves Gemini
  • bard.google.com retired
    301 redirect to gemini.google.com
none documented
Microsoft Copilot
Microsoft
  • copilot.microsoft.com active
    200, serves Copilot
none documented
Observed, not documented by the operator.
DeepSeek
DeepSeek
  • chat.deepseek.com active
    202, serves DeepSeek chat
none documented
Observed, not documented by the operator.
Grok
xAI
Grok inside X (x.com/i/grok) shares the x.com host, so only the standalone site is separable by host.
  • grok.com active
    200, page title Grok
none documented
Observed, not documented by the operator.
Meta AI
Meta
  • meta.ai active
    www.meta.ai, page title Meta AI
none documented
Observed, not documented by the operator.
Le Chat
Mistral AI
  • chat.mistral.ai active
    Serves Le Chat (bot challenge to scripts)
none documented
Observed, not documented by the operator.
You.com
You.com
  • you.com active
    200; its search now asks visitors to sign in
none documented
Observed, not documented by the operator.
Qwen Chat
Alibaba
  • chat.qwen.ai active
    200, page title Qwen
none documented
Observed, not documented by the operator.
Duck.ai
DuckDuckGo
  • duck.ai active
    200, page title Duck.ai by DuckDuckGo
none documented
Observed, not documented by the operator.
Neeva
Neeva (acquired by Snowflake)
Still present in many copied GA4 regexes. It sends no visitors.
  • neeva.com retired
    Consumer search shut down in June 2023
none documented
Observed, not documented by the operator.

Scroll the table sideways for more.

What referrer data cannot see

Read any AI traffic number as a floor. A referral rule only sees visits that arrive with a referrer, and many do not.

  • Links opened from an app arrive with no referrer and land in direct traffic. PostHog says so in its direct traffic troubleshooting, and the assistants' desktop and mobile apps are apps. We do not know a measured share, so we do not quote one.
  • By default a browser sends only the origin of the page to another site (Referrer-Policy), so a rule can match a host but never a path.
  • ChatGPT is the exception that helps: OpenAI documents that it adds utm_source=chatgpt.com to links from its search results, so those visits are attributable even without a referrer. Every rule below includes it.

Assistants a host rule cannot separate

Google AI Mode and AI Overviews
Clicks arrive with a google.com referrer, the same as an ordinary Google result, so no host rule can separate them.
Kagi Assistant
Served from kagi.com/assistant, the same host as Kagi Search; by default browsers send only the origin to another site, so the path is not there to match.
Grok inside X
Served from x.com/i/grok, the same host as every other link on X.
Copilot in Bing
Answers inside bing.com share the host with Bing's ordinary results.

Google Analytics 4

In Admin, under Data display, open Channel groups and Create new channel group. Use Add new channel, name it AI assistants, add a condition on Source with matches regex, and paste the expression. Google's own instructions say to reorder the list so the channel sits above Referrals, because traffic goes to the first channel it matches (custom channel groups).

GA4: Source matches regex
^(.+\.)?(chatgpt\.com|chat\.openai\.com|perplexity\.ai|claude\.ai|gemini\.google\.com|copilot\.microsoft\.com|chat\.deepseek\.com|grok\.com|meta\.ai|chat\.mistral\.ai|you\.com|chat\.qwen\.ai|duck\.ai)$

GA4 regex is RE2, case sensitive and matches the whole value (GA4 regex reference), which is why the expression is anchored and lowercase. A tagged ChatGPT visit has Source chatgpt.com, so it matches too.

Why not the regex in Google's help article

The example in the channel group article, as published when we checked, is below. It matches by substring: any source ending in "ai" counts, and so does any source containing "gpt" or "copilot", and it still lists Bard.

Quoted from Google's help article, not recommended
^.*ai|.*\.openai.*|.*chatgpt.*|.*gemini.*|.*gpt.*|.*copilot.*|.*perplexity.*|.*google.*bard.*|.*bard.*google.*|.*bard.*|.*.*gemini.*google.*$

Plausible

Plausible already groups known assistants into an AI Assistants channel in the dashboard (Plausible on AI traffic). Use this filter when you query the Stats API v2 and want the exact list on this page. It goes in the filters of a POST /api/v2/query body; matches uses RE2, and visit:referrer is the referrer without the scheme or www (Stats API reference).

Plausible Stats API v2: filters
{
  "filters": [
    [
      "or",
      [
        [
          "matches",
          "visit:referrer",
          [
            "^(.+\\.)?(chatgpt\\.com|chat\\.openai\\.com|perplexity\\.ai|claude\\.ai|gemini\\.google\\.com|copilot\\.microsoft\\.com|chat\\.deepseek\\.com|grok\\.com|meta\\.ai|chat\\.mistral\\.ai|you\\.com|chat\\.qwen\\.ai|duck\\.ai)([/?#:]|$)"
          ]
        ],
        [
          "is",
          "visit:utm_source",
          [
            "chatgpt.com"
          ]
        ]
      ]
    ]
  ]
}

PostHog

PostHog has a built-in AI channel type (channel type docs). For your own list, use this SQL expression as an SQL filter or in a WHERE clause on events. It uses match() (SQL expressions), which runs ClickHouse's RE2 matcher; dots are written as [.] because ClickHouse string literals would otherwise need every backslash doubled (ClickHouse match).

PostHog SQL expression
match(properties.$referring_domain, '^(.+[.])?(chatgpt[.]com|chat[.]openai[.]com|perplexity[.]ai|claude[.]ai|gemini[.]google[.]com|copilot[.]microsoft[.]com|chat[.]deepseek[.]com|grok[.]com|meta[.]ai|chat[.]mistral[.]ai|you[.]com|chat[.]qwen[.]ai|duck[.]ai)$') OR properties.utm_source = 'chatgpt.com'

Matomo

Matomo classifies assistants itself: the segment referrerType==ai selects its own AI channel. Matomo segments have no regex operator, so this list becomes one "starts with" condition per host and its www form, joined by commas, which Matomo reads as OR, with each value URL-encoded as the API requires (segmentation reference). It is the value of the segment parameter in a Reporting API call. It matches referrers only, so it does not include ChatGPT's utm_source.

Matomo segment
referrerUrl=^https%3A%2F%2Fchatgpt.com%2F,referrerUrl=^https%3A%2F%2Fwww.chatgpt.com%2F,referrerUrl=^https%3A%2F%2Fchat.openai.com%2F,referrerUrl=^https%3A%2F%2Fwww.chat.openai.com%2F,referrerUrl=^https%3A%2F%2Fperplexity.ai%2F,referrerUrl=^https%3A%2F%2Fwww.perplexity.ai%2F,referrerUrl=^https%3A%2F%2Fclaude.ai%2F,referrerUrl=^https%3A%2F%2Fwww.claude.ai%2F,referrerUrl=^https%3A%2F%2Fgemini.google.com%2F,referrerUrl=^https%3A%2F%2Fwww.gemini.google.com%2F,referrerUrl=^https%3A%2F%2Fcopilot.microsoft.com%2F,referrerUrl=^https%3A%2F%2Fwww.copilot.microsoft.com%2F,referrerUrl=^https%3A%2F%2Fchat.deepseek.com%2F,referrerUrl=^https%3A%2F%2Fwww.chat.deepseek.com%2F,referrerUrl=^https%3A%2F%2Fgrok.com%2F,referrerUrl=^https%3A%2F%2Fwww.grok.com%2F,referrerUrl=^https%3A%2F%2Fmeta.ai%2F,referrerUrl=^https%3A%2F%2Fwww.meta.ai%2F,referrerUrl=^https%3A%2F%2Fchat.mistral.ai%2F,referrerUrl=^https%3A%2F%2Fwww.chat.mistral.ai%2F,referrerUrl=^https%3A%2F%2Fyou.com%2F,referrerUrl=^https%3A%2F%2Fwww.you.com%2F,referrerUrl=^https%3A%2F%2Fchat.qwen.ai%2F,referrerUrl=^https%3A%2F%2Fwww.chat.qwen.ai%2F,referrerUrl=^https%3A%2F%2Fduck.ai%2F,referrerUrl=^https%3A%2F%2Fwww.duck.ai%2F

Plain regex and JSON

For anything else that takes a hostname: anchored, lowercase, and written in syntax that RE2, PCRE and JavaScript read the same way.

Regex over a bare hostname
^(.+\.)?(chatgpt\.com|chat\.openai\.com|perplexity\.ai|claude\.ai|gemini\.google\.com|copilot\.microsoft\.com|chat\.deepseek\.com|grok\.com|meta\.ai|chat\.mistral\.ai|you\.com|chat\.qwen\.ai|duck\.ai)$

The list itself, with status, evidence and dates for every host, is at /tools/ai-traffic-rules/hosts.json. It carries a version and an updated date, so a script can tell when to refresh. It is published under CC BY 4.0: reuse it, with a link back.

Considered and left out

x.ai
xAI's company site, not the Grok assistant (grok.com). No referrer list we found includes it.
phind.com
Could not verify on 2026-10-04 that the product is still serving answers; the site blocked our check.
notebooklm.google.com
Now redirects to notebook.google.com, a host no published referrer list includes yet.
labs.openai.com
DALL-E's former web app, not a source of answer links.
app.writesonic.com
A writing tool rather than an answer engine; still matched by widely copied regexes.
app.jasper.ai
A writing tool rather than an answer engine.
chat-gpt.org
A third-party site not operated by OpenAI; counting it as ChatGPT would be wrong.

Changelog

v1.0.0 ·
  • First published list: 12 assistants, 13 hosts in the rules, ChatGPT's documented utm_source.
  • bard.google.com and neeva.com listed as retired and kept out of every rule.

Where this list comes from

GetCited's visitor script records the referrer and landing page of each visit. Our server puts sessions from these assistants, or carrying ChatGPT's utm_source, in their own AI channel and reports them as aggregates per assistant, alongside the AI visibility checks that show which engines cite your site. The product's list and this one are compared in a test, so neither drifts quietly.

Your first audit is free.

Run the free audit