Segment AI-Agent Traffic in GA4 (and Why It Lands in Direct)
GA4 shipped a native channel for AI-assistant traffic in May 2026. It catches one narrow slice of what people mean by "AI agent traffic" - and the rest still needs a real fix, not a report filter.
In short
GA4's built-in "AI Assistant" channel only classifies sessions that arrive with a recognized AI-assistant HTTP referrer - it does not cover Perplexity's referrer on Google's current list, and it does nothing at all for a session with no referrer or for an agent that completes an action through a direct API call. Both of the latter fall to Direct, or vanish from GA4 entirely, because there is no browser hit to classify. A custom channel group extends coverage for referrer-carrying agent traffic; the referrer-less and API-driven half requires server-side capture, not a channel-group change.
Landscape as of September 2026 - GA4's AI Assistant channel is roughly four months old and still expanding its recognized-referrer list; verify the current definition in your own property before treating any named-assistant list as fixed.
What GA4's Native AI Assistant Channel Actually Does
Google added an "AI Assistant" channel to the GA4 Default Channel Group on 13 May 2026, with broad availability across properties reached by early June. It requires no setup: when a session's HTTP referrer matches Google's own list of recognized AI-assistant domains, GA4 assigns the session medium ai-assistant and the reserved campaign value (ai-assistant), and buckets it under the new channel alongside Organic Search, Paid Search, Direct, and Referral in the standard channel precedence order.
That is a real improvement over the prior state, where any AI-assistant click-through landed in plain Referral, indistinguishable from a link from any other website. But the mechanism is the same fallback logic GA4 has always used for channel assignment - it reads a referrer header against a list. It does not detect an agent by behavior, by header signature, or by anything happening after the click. If the referrer isn't there, or isn't on the recognized list, the channel doesn't fire.
Automation now accounts for the majority of HTML web traffic (57.5% per Cloudflare Radar, cited in HUMAN Security's 2026 benchmark report) and AI-driven traffic converted 42% better than non-AI traffic in March 2026 (Adobe Analytics) - which is exactly why a referral-only detector catching one slice of that traffic isn't the same as measuring it.
What the Native Channel Misses
| Gap | What happens instead | Fix |
|---|---|---|
| Perplexity referrals | perplexity.ai is not on Google's current AI Assistant recognized-domain list, so those sessions still read as plain Referral [hypothesis - named-assistant lists vary across secondary sources; confirm your property's live Default Channel Group definition] | Add a regex condition for perplexity.ai in a custom channel group |
| Referrer-less agent sessions | An agent client that sends no HTTP referrer header at all falls to Direct - the same fallback every referrer-less session gets, agent or not | Cannot be fixed by channel-group configuration alone; needs header/signature capture - see the server-side bridge below |
| API / agent-completed actions | An agent that completes an action via a direct API call never loads a page or runs gtag.js - no hit is sent, so there is nothing in GA4 to classify. An estimated ~70.6% of AI-referred activity is invisible to standard GA4 this way, undercounted 3-4x against its real volume | Server-side event capture with agent context attached at collection time, not a reporting fix |
| Historical sessions | Anything collected before the channel launched, or before a custom channel group is saved, keeps its original classification permanently | None - GA4 does not reprocess past sessions under new channel-group rules |
Building a Custom Channel Group for Agent Referrals
For the slice of agent traffic that does carry a referrer - just not one on Google's built-in list - a custom channel group closes the gap without touching the Default Channel Group other reports depend on.
- Admin > Data display > Channel Groups > Create custom channel group.
- Add a new channel above where Direct or plain Referral would otherwise match - GA4 evaluates channel-group rules top to bottom and stops at the first match, so ordering decides the outcome.
- Define the rule on Session source, using a regex condition matching the referrer domains you want to catch beyond Google's default list - perplexity.ai is the clearest current gap; add any other assistant domain your traffic actually shows once you've checked it.
- Name the channel something explicit ("AI Agent Referral," not "Other") so it doesn't get missed in a dropdown later.
- Save. This channel group only reclassifies sessions that already sent a referrer-carrying hit - it does not, and cannot, create visibility into the referrer-less or API-driven traffic covered in section 02.
Why Agent Sessions Default to Direct
Direct is GA4's catch-all, not a real acquisition channel - it means "no stronger signal was present." Two distinct agent behaviors both land there for that reason, not because GA4 misidentified anything:
- No referrer sent. Many agent browsing clients and headless fetchers don't send an HTTP referrer header at all, or strip it. GA4 applies the exact same rule to that session as it would to a human who typed the URL directly - no referrer, no UTM, no click ID, so Direct.
- No hit sent. An agent that completes a purchase, a form submission, or any other action through a direct API call to your backend never opens a browser tab and never runs your GA4 tag. There is no session for GA4 to assign to any channel, Direct included, because no event ever reached the property.
Neither case is a channel-group problem. A channel group can only relabel a hit GA4 already has; it can't manufacture a hit that was never sent. Capturing agent activity that arrives with no referrer and no client-side execution is exactly the problem server-side capture solves - firing the event from your own server, tag server, or request log, with the agent identified from headers or a signed signature rather than a referrer, and attached at collection time instead of guessed at afterward. That build is covered in capturing agent traffic server-side when no JavaScript fires - the piece this GA4 setup is meant to feed into, not replace.
How to Verify It Worked
- Reports > Acquisition > Traffic acquisition > change the primary dimension to your new custom channel group (or add it as a secondary dimension alongside Session default channel group). A passing result shows sessions bucketed under your named agent channel instead of Direct or Referral.
- Realtime report > Traffic acquisition card. Trigger a test visit carrying a known-agent referrer (or a manually set UA/header matching one you're targeting). A passing result surfaces under your custom channel within roughly 30 seconds - if it still shows under Direct or Referral, the rule order or regex condition is wrong, not the concept.
- For the referrer-less/API gap specifically: once the server-side bridge is sending events, check Admin > DebugView for hits carrying your agent-identifying parameter (for example a custom parameter distinguishing server-fired agent events from browser-fired ones). A passing result shows the parameter present and populated on the server-sent event; its absence means the bridge isn't attaching agent context, not that GA4 failed to receive anything.
Frequently Asked Questions
Does GA4's AI Assistant channel catch ChatGPT and Perplexity the same way?
No. The native channel classifies by HTTP referrer against Google's own list of recognized AI-assistant domains, and Perplexity's perplexity.ai referrer is not on that list as of September 2026 - those sessions still fall into Referral. Which named assistants Google's list covers has shifted since the channel's May 2026 launch and secondary sources do not fully agree on the current set, so check your own property's Default Channel Group definition rather than assuming a list from memory.
Why is my agent traffic landing in Direct instead of any AI channel?
Two separate reasons produce the same symptom. First, many agent clients send no HTTP referrer header at all, and a session with no referrer and no other acquisition signal falls to Direct by GA4's own default-channel logic - the same fallback rule that puts any referrer-less traffic there. Second, an agent completing an action via a direct API call never runs a browser or fires gtag.js in the first place, so there is no hit to classify as anything - it is not miscategorized, it is simply never sent.
Can a custom channel group in GA4 capture an AI agent's API purchase with no browser session?
No. A channel group, custom or default, only reclassifies hits GA4 already received - it changes the label, not the collection. If the agent's action never triggered a page load or a client-side script, there is no event in the property to relabel. Capturing that requires sending the event server-side (from your own backend, tag server, or the request log) with the agent context attached, independent of any channel-group configuration.
Will a new custom channel group fix how my historical sessions are classified?
No. Channel group definitions, like the unwanted-referrals list, only apply to sessions from the point you save the change forward. Sessions already collected keep whichever channel they were assigned at collection time; there is no retroactive reprocessing in GA4's standard reporting.
Agent Traffic Still Falling Into Direct or Referral?
We build the custom channel group for what GA4 can already see, and wire up server-side capture for the agent activity it can't see at all.
Get GA4 Agent-Traffic Segmentation FixedGet Your Agent Traffic Segmented in GA4
Tell us what you're seeing - Direct that shouldn't be Direct, Referral that should be an agent channel, or a suspicion that agent activity isn't showing up at all.