Back to Blog
SaaS Marketing

How to Track ChatGPT, Perplexity & Gemini Referral Traffic in GA4 (And What GA4 Misses)

·10 min read·John Rice

ChatGPT was sending my site real customers, and my analytics was quietly filing them under 'direct' — the same bucket as someone typing the URL from memory.

Isometric illustration of a team pointing at dashboards around a large card showing a rising traffic graph and AI chatbot logos, with headline overlay reading 'Track ChatGPT Perplexity Gemini Traffic GA4'

What you'll learn: You'll get the exact GA4 regex and channel setup to break out AI referral traffic by engine, plus an honest map of what GA4 simply can't tell you — and where to go instead.

Here's something that took me embarrassingly long to notice: ChatGPT was sending my site real customers, and my analytics was quietly filing them under “direct.” Not ChatGPT. Not “AI.” Just direct — the same bucket as someone typing the URL in from memory. If you're reading this, there's a decent chance the exact same thing is happening to you right now.

I run SubredditSignals, and at some point the AI-referral question got loud enough that I built a first-party attribution pixel to answer it properly. This is everything I learned wrestling GA4 into showing AI traffic: the regex, the custom channel group, the honest parts where GA4 just can't help you, and where you have to go first-party to get the real answer.

First, the hostnames you're actually hunting for

Before you touch GA4, know what you're looking for. Each AI engine shows up as a specific referral hostname. These are the current ones as of 2026:

  • ChatGPTchatgpt.com (and the older chat.openai.com)
  • Perplexityperplexity.ai
  • Geminigemini.google.com
  • Microsoft Copilotcopilot.microsoft.com
  • Claudeclaude.ai

They don't all behave the same. Perplexity and Claude pass a clean referrer on the web, so they're the easiest to catch. Gemini passes one inconsistently. ChatGPT is the messy one — more on that below — but it also tags outbound links with utm_source=chatgpt.com, which turns out to be the thing that saves you.

GA4 finally has an “AI Assistants” channel (and its limits)

For most of the last two years, GA4 had no concept of AI traffic at all — it dumped every AI referral into Referral or Direct and left you to sort it out. That changed. Google now ships a default channel called AI Assistants, which groups traffic from sources like ChatGPT, Gemini, DeepSeek, Copilot, and Grok. You can see Google's own definition in the GA4 default channel groups documentation.

That's genuinely useful, and if you just want a rough “is AI sending me anyone?” number, check that channel first. But be clear-eyed about three limits:

  • It's one bucket. AI Assistants lumps every engine together. If you want to know ChatGPT versus Perplexity versus Gemini — and you do, because they behave completely differently — you still have to build that split yourself.
  • It counts sessions, not customers. It tells you visits arrived. It does not tell you which of those visits became a signup or a sale.
  • It excludes the biggest wildcard. By Google's own definition, the AI Assistants channel does not include AI Overviews or AI Mode. The fastest-growing slice of AI-influenced traffic isn't in there at all.

Build your own AI traffic view in GA4, step by step

If you want engine-level detail — and honestly it's the only version worth having — here's the manual way. Takes about ten minutes.

Step 1: Open a blank Exploration

In GA4, go to Explore and start a Blank exploration. Set the date range wide — AI referral volume is still small for most sites, so a narrow window shows you noise.

Step 2: Add Session source as your dimension

Add Session source / medium (or just Session source) as your row dimension. For values, add Sessions and, crucially, Key events (conversions). You want to see visits and outcomes side by side.

Step 3: Filter with one regex that catches every engine

Add a filter on Session source, set it to matches regex, and paste this:

chatgpt\.com|chat\.openai\.com|perplexity\.ai|gemini\.google\.com|copilot\.microsoft\.com|claude\.ai

That single expression covers the five engines above plus ChatGPT's legacy host. When a new engine launches, you add one more alternation and you're done.

Step 4: Let the same regex catch the UTM stragglers

Here's a handy quirk: GA4 derives Session source from utm_source when a tag is present, and falls back to the referrer when it isn't. So a visit that arrives with no referrer but utm_source=chatgpt.com still shows up as source chatgpt.com — the regex in Step 3 already claims it. That's why ChatGPT's link tagging matters so much: it's often the only thing standing between a real customer and the “direct” void.

Step 5: Make it permanent with a custom channel group

Explorations are great for poking around, but you don't want to rebuild this every week. Go to Admin → Data display → Channel groups, create a new group, and add a channel called something like “AI Engines” with the condition Session source matches regex and the same pattern. Order it above Referral and Direct so AI sessions get claimed first. Now every standard report can break AI out on its own.

Step 6: Sanity-check it live in the Realtime report

Before you trust any of the historical numbers, prove the plumbing actually works. Open ChatGPT, ask it something that should surface your site, click through, and watch the GA4 Realtime report. If you show up under your AI Engines channel, great — it's wired correctly. If you land in Direct instead, you've just watched the referrer-stripping problem happen live, and the rest of this post will make sense in your bones.

How to read the numbers without fooling yourself

Two traps here. The first is absolute volume. For most sites, AI referral traffic is still small — often low single-digit percentages of total sessions. Don't panic that the number looks tiny; watch the trend line. A channel doubling month over month off a small base is the story, not today's raw headcount.

The second trap is you. Every time you test your own site from ChatGPT, you add a session to the exact channel you're measuring. Filter your own IP, or at minimum remember that you did fifteen test clicks last Tuesday before you conclude ChatGPT suddenly loves you. Self-referrals quietly poison a lot of early AI-traffic reports.

Where GA4 quietly breaks (the honest part)

Now the part I have to be straight with you about, because this is exactly what pushed me to build a pixel in the first place.

  • Logged-in and app ChatGPT strips the referrer. ChatGPT's paid tier and its mobile app don't pass a referrer. When the utm_source tag is missing too, that visit lands in Direct and no regex on earth pulls it back out. Given ChatGPT is the large majority of AI referral volume, that's not a rounding error.
  • Dark referrals in general. Plenty of AI surfaces and in-app browsers drop the referrer. Anything referrer-less with no UTM defaults to Direct, and Direct is where attribution goes to die.
  • Link-outs that scrub the origin. Some engines route clicks through a redirect that strips where the click came from before it reaches you.
  • AI Overviews and AI Mode are invisible. When Google's AI Overview cites you and someone clicks, it looks identical to a normal Google organic click. This isn't a GA4 flaw — no analytics tool can separate it, which is why Google's own AI Assistants channel leaves it out.
  • Sessions, not customers. Even when GA4 nails the source perfectly, it tells you someone visited. It does not tell you that visit turned into a paying customer, tied cleanly to the engine that sent them.

What GA4 can't tell you — and why I went first-party

The gap that mattered most to me wasn't “which engine sent a visit.” It was “which engine sent a customer.” When we built the SubredditSignals attribution pixel, the whole design goal fit in three words: conversions, not mentions.

A first-party pixel — one line of code, the same kind Google or Meta hands you — sits on your own domain and does two things GA4 won't. It reads the AI source by referrer and by utm_source, so it still catches ChatGPT when the referrer is stripped but the tag survives. And it ties that source to the signup, not just the pageview.

It doesn't fix everything, and I'd rather say so than oversell it. Nothing catches AI Overviews. Nothing recovers a visit that shows up with no referrer and no tag. But it closes the biggest, most valuable gap: knowing that Perplexity sent eight visits and one became a paying customer, or that ChatGPT is quietly your best-converting channel and you never knew.

There's a compounding reason to care, too. AI referrals are the leading edge of how people find software now — someone asks ChatGPT for “a tool that monitors Reddit for leads,” it names a few, they click. If that's turning into signups and you can't see it, you'll systematically under-invest in the one channel growing fastest. The businesses that win the next few years are the ones measuring this while everyone else is still calling it “direct.”

Why any of this is worth the effort

Because AI traffic punches well above its weight. In a twelve-month analysis of 94 ecommerce brands, Visibility Labs found ChatGPT referral traffic converted at 1.81% versus 1.39% for non-branded organic — about 31% higher. It's still a small slice of total volume, but it converts like high-intent traffic because it basically is: the person had their question half-answered before they ever clicked through to you.

If a channel that small converts that well, you want to know which engine it's coming from and whether it's growing. You can't optimize what you're filing under “direct.” If you want the bigger picture on how AI search is reshaping what people click, I dug into that here.

A few questions I get asked

Does the free version of ChatGPT get tracked?

Sometimes. Free-tier web ChatGPT often still passes the utm_source tag even when the referrer is thin, so the regex catches it. The paid tier and the mobile app are where it gets lossy. There's no clean way to fully separate free from paid inside GA4 — one more reason the engine-level pixel view ends up being the more honest picture.

What about Bing and Copilot?

Copilot on the web passes a referrer (copilot.microsoft.com), so the regex above catches desktop visits; the mobile app strips it like everyone else. If a meaningful chunk of your audience is Microsoft-heavy, keep that host in your pattern and don't assume Google engines are the whole AI story.

Is any of this a privacy problem?

Reading a referrer or a utm_source is standard first-party analytics — the exact same thing GA4 already does on every visit. You're not fingerprinting anyone; you're labelling where a click came from. Keep it first-party and you're on the same footing as any normal analytics setup.

The shortcut

If you just want a fast read on whether AI engines are already citing and sending traffic to your site — before you go build channel groups — we made a free AI traffic checker. Paste your domain, see what shows up. No account needed.

And if you want the full picture — which AI engine sent the visit and whether it converted — that's the entire point of the SubredditSignals pixel. It's one line of code, and you can try everything on a 14-day free trial: start here. Plans are $29 and $59 a month. Set it up in a couple of minutes and stop guessing what “direct” is really hiding.

Share this article:
John Rice
Written by
John Rice
#2 Product of the Day
#3 Product of the Week

Turn Reddit into Your Sales Engine

SubredditSignals monitors Reddit 24/7 to find conversations where your customers need help.

Start Free Trial

14-day free trial · Cancel anytime · Cancel anytime

Stop Missing Reddit Opportunities

While you're reading this, your competitors are finding customers on Reddit.

Start Free Trial
14-Day Free Trial
#2 Product of the Day
Cancel Anytime