GA4 direct traffic: pulling AI referrals back out of the bucket

GA4 direct traffic is where a visit goes when nothing told Analytics where it came from, which is where assistant clicks often land. Here is the custom channel group that recovers part of it, and an honest account of the part it cannot.

Measurement7 min read2530 views
GA4 direct traffic: pulling AI referrals back out of the bucket

GA4 direct traffic is where a visit goes when nothing told Analytics where it came from. Clicks out of an AI assistant frequently land there, because a native app sends no referrer and GA4 has nothing to attribute. You can pull some of it back out with a custom channel group, and you should know before you start that you will never recover all of it.

Read this first

This chapter assumes GA4 is installed and collecting. It does not cover Search Console, which measures a different thing on a different surface — how to read a change there is in the 14-day check.

If you have not recorded what your channel mix looked like before you started changing things, do that first. Splitting a bucket is only useful against a before, and the routine for capturing one is in record your baseline.

Why an AI referral lands in GA4 direct traffic

GA4 defines the bucket narrowly. Its documentation says "Direct is the channel by which users arrive at your site/app via a saved link or by entering your URL." In practice it is wider than that, because it is also the fallback: when a request arrives with no referrer and no campaign parameters, no other rule matches, and the visit is filed here.

An assistant running as a desktop or mobile application is a browser-less origin from Analytics' point of view. The click opens your page with nothing attached. The same product used in a web browser usually does send a referrer, which is why the same assistant can appear in two different buckets in the same week.

How they arrivedGA4 files it asWhy
Google AI Overviews or AI ModeOrganic SearchNamed in GA4's own channel definition
An assistant in a web browserReferralA referrer is sent, so there is a source
An assistant's desktop or mobile appDirectNo referrer arrives with the request
Typed your URL after reading an answerDirectIndistinguishable from any typed visit
Direct is not a source. It is the name GA4 gives to a visit whose source was not transmitted.

One part of this has already been solved for you, and it is easy to miss. GA4's Organic Search definition now reads: "Organic Search is the channel by which users arrive at your site/app via non-ad links in organic-search results, including Google's AI Overviews and AI Mode." Read 2026-08-18 in the Analytics Help default channel group reference. Clicks from Google's AI surfaces are already counted as organic search, so they are not part of this problem.

What you can and cannot change

GA4's own reference is blunt about the first half: "Default channel groups can't be edited in Google Analytics. You have the option to create custom channel groups, which let you create your own rule-based categories of web-traffic sources."

There is a second consequence worth stating before you build anything: a custom channel group is applied when the report is generated, so it reshapes historical sessions too. You are not starting a new count from today. That is genuinely useful — you get a before and an after out of one afternoon's configuration — and it also means a sloppy rule rewrites how last year looks.

So the work is to build a parallel grouping, not to fix the default one. Everything below lives in that custom group, and your default reports keep showing the old shape — which is a feature, because you can compare them.

The deliverable: a custom channel group for AI referrals

Google documents this exact case. Its custom channel groups help page carries a worked example titled "Example: AI assistants", and the setup is four steps in Admin, under Data display, then Channel groups.

  1. Create a new custom channel group, or edit one you already have.
  2. Add a channel and name it something you will still recognise in a report next year. Google's example uses "AI assistants".
  3. Add a condition on Source with the match type "matches regex", and give it a pattern covering the assistants you care about.
  4. Reorder the channel list so this channel sits above Referral. Google's instruction is explicit: "To ensure proper data processing, reorder your channel list so that 'AI Assistants' appears above 'Referrals'."

Two properties of custom channel groups are worth knowing before you build one. They can be applied to your reports retroactively, so you get a before and an after out of one afternoon's configuration rather than starting a new count from today. And the default group is untouched, so your existing reports stay comparable.

Google's example regex is too broad, and you should tighten it

The pattern in that help page, read 2026-08-18, is this one.

^.*ai|.*\.openai.*|.*chatgpt.*|.*gemini.*|.*gpt.*|.*copilot.*|.*perplexity.*|.*google.*bard.*|.*bard.*google.*|.*bard.*|.*.*gemini.*google.*$

Look at the first alternative, ^.*ai. Depending on how the pattern is evaluated, that branch can reach hostnames whose only qualification is the letters a and i in that order — mail.google.com, airbnb.com, dailymail.co.uk. We have not verified which way GA4 resolves it, and that is exactly the problem: a rule you cannot predict is a rule you cannot report from.

Use an explicit list of hosts instead. It is longer to maintain and it never surprises you.

^(chatgpt\.com|chat\.openai\.com|perplexity\.ai|www\.perplexity\.ai|claude\.ai|copilot\.microsoft\.com|gemini\.google\.com)$

Then verify the way you would verify anything else. Run the report for a period you already have data for, compare the channel's session count against the same sources in the Traffic acquisition report, and confirm the two agree. If your version catches sessions the source list does not explain, the rule is wrong, not the data.

The deliverable: the report that shows you the rest

The custom group catches the traffic that arrived with a referrer. For the traffic that did not, you are looking for a shape rather than a label.

  1. Open Reports, then Acquisition, then Traffic acquisition, and set the primary dimension to Session default channel group.
  2. Add Landing page as a secondary dimension and filter to Direct.
  3. Sort by sessions and read the top twenty landing pages.

Set the date range to at least eight weeks. A single week of this view is noise, because a small site's direct sessions on any one page swing by more than the effect you are looking for.

Direct traffic to a homepage is ordinary — people type domains. Direct traffic to a deep page with a long slug is not, because nobody types that. A rising column of direct sessions on one specific article, with no campaign behind it, is the pattern worth investigating.

Note what you are doing here. This is a plausibility argument built on a landing-page pattern, and it is not proof of anything. Write down the number, watch it move, and resist turning it into a percentage you report upward.

Three things this will not tell you

Each of these is a boundary of the method, not a gap you can close with a better report.

  1. How much of Direct is AI. Referrer-less traffic includes bookmarks, typed URLs, links in email clients, links in messaging apps, and privacy tooling that strips referrers. There is no way to separate them after the fact.
  2. Whether you were cited or merely reached. A session tells you someone arrived. It does not tell you whether your page was quoted as a source or was one of ten links in a footnote list.
  3. What the assistant said about you. Analytics measures arrivals. Whether the answer that produced the click described you accurately is not visible here, and it needs the entity work in QueryWin and a separate record of what engines say.

Where this chapter stops

This is attribution triage, not attribution. The honest ceiling is that you will know roughly how much identifiable AI referral traffic you get, and you will not know the size of the unidentifiable part.

Anyone offering you a clean figure for AI-driven visits is either counting only the referrer-carrying half and calling it the whole, or estimating. Both are defensible if stated. Neither is a measurement.

Source hostnames also change as products get renamed and rehosted. Re-read your own source list every quarter, because a rule that stopped matching does not announce itself — the sessions simply return to Direct and the chart looks like a decline.

Common questions

Why is my GA4 direct traffic so high?

Because it is the fallback bucket. Every session with no referrer and no campaign parameters is filed there, so it collects bookmarks, typed URLs, app clicks, and anything a privacy setting stripped on the way in.

Do clicks from Google's AI Overviews show as Direct?

No. GA4's documentation puts AI Overviews and AI Mode inside Organic Search. That part of the problem is already handled by the default grouping.

Can I add UTM parameters to fix this?

Not for AI referrals. Campaign parameters work on links you publish; you do not control how an assistant links to you. They remain useful for your own newsletters and campaigns, which is a different leak.

Should I edit the default channel group instead?

You cannot — Analytics does not allow it. A custom channel group runs alongside the default one, which also means your historical reports stay comparable.

Part of the QueryWin handbook · Level 2

GA4 direct traffic: pulling AI referrals back out of the bucket