Sales keeps saying prospects arrive already mentioning a comparison they read somewhere, your organic numbers do not explain it, and you have no segment in GA4 that isolates the traffic you suspect is responsible. This guide gives you the configuration that produces that segment, then spends equal time on what the segment structurally cannot see, because a partial number presented as a total is worse than no number.
Configuration steps below describe the Google Analytics 4 admin interface as it stood when this post was drafted in September 2026.
What arrives with a usable referrer and what doesn't
GA4 attributes a session to a referral when the browser sends an HTTP Referer header from a host that is not on your domain and not on your unwanted-referrals list. Everything in this post depends on that header surviving the trip.
It often does not. The main ways an assistant-sourced visit becomes invisible:
- Native and desktop apps. A link opened from an application rather than a web page frequently arrives with no referrer at all, and GA4 files it under Direct.
- Referrer policy. A referring site can set a policy that strips the path, strips everything but the origin, or sends nothing. You have no control over that setting.
- In-app browsers and webviews. Behaviour varies by platform and version, and the referrer is regularly lost.
- Copy and paste. A person reading an answer, then typing or pasting your domain into a browser, generates a Direct session that is genuinely assistant-influenced and permanently unattributable.
- Delayed visits. Someone sees you named in an answer on Tuesday and searches your brand on Friday. That is branded organic, and it is real influence you will book under a different channel.
- Consent and blocking. Where a visitor declines analytics consent or blocks the tag, there is no session to classify.
Two structural points follow, and both belong in any report you produce. First, this measurement undercounts, and the size of the undercount is unknown. Second, no referrer count tells you what an assistant said. A referral proves a link was followed, not that you were recommended, and certainly not that you were recommended favourably. A visit could just as easily follow a passing mention or an unflattering comparison.
Building the segment or channel group
You have two useful implementations. Build the comparison first because it is reversible, then promote it to a channel group once you trust the pattern list.
A. A comparison in a standard report (fast, non-destructive)
- Open Reports, then Acquisition, then Traffic acquisition.
- Add a secondary dimension of Session source so you can read raw hostnames rather than a bucketed channel.
- Sort by sessions and read the source list yourself. Write down every host you recognise as an assistant or AI answer surface. This step matters more than the regex; you are discovering your own actual pattern rather than importing someone else's.
- Use the comparison builder at the top of the report to add a condition where Session source matches your regex.
B. A custom channel group (durable, reportable)
- Open Admin, then under the property column, Data display, then Channel groups.
- Choose Create new channel group, name it something explicit such as
AI assistants (partial). Put the word partial in the name. It travels with the data into every screenshot and stops the number being read as complete. - Add a new channel, name it, and set the condition to Session source matches regex.
- Place the new channel above Referral and above Organic Search in the ordering, because GA4 evaluates channel rules in order and the first match wins.
- Save. Channel groups apply going forward and, depending on the property, may also apply retroactively in some reports. Verify the behaviour on your own property before quoting historical figures. For the regex, start from the hosts you observed in step A.3 rather than from memory. A starting shape looks like this:
^(chatgpt\.com|chat\.openai\.com|perplexity\.ai|copilot\.microsoft\.com|gemini\.google\.com|claude\.ai)$
Two practical cautions. Anchor the expression or use precise alternatives so you do not accidentally match an unrelated domain that contains one of these strings. And check your unwanted referrals configuration under Data streams, because a host listed there will never appear as a referral at all.
C. An exploration for session-level analysis
Open Explore, create a Free form exploration, and define a segment with the same Session source condition. Explorations let you look at landing pages, engagement, and conversion for the segment without changing property-wide configuration, which is what you want during validation.
Validating it against your logs
Trust nothing until two independent sources agree on direction. GA4 sees a browser-side event; your server sees the request. They will not match, and the pattern of the mismatch is informative.
Run the same window through both:
- Export sessions from your new channel or segment by day and by landing page.
- Pull the equivalent requests from your access logs, filtering the referrer field rather than the user-agent field. In NCSA combined format that is field 4 when splitting on the double-quote character. The commands in the guide to find AI crawlers in your logs adapt with a one-field change.
- Compare on three axes: daily direction, landing-page ranking, and total magnitude.
| What you observe | Most likely explanation | What to do |
|---|---|---|
| Logs show referrers GA4 never classifies | Regex is missing a hostname, or the host is in unwanted referrals | Add the host, re-check ordering |
| GA4 sessions materially exceed log hits | Log window, sampling, or CDN log gaps | Reconcile windows before touching the config |
| Log hits exceed GA4 sessions | Consent declines, tag blocking, or bot filtering | Expected; document the gap, do not chase it to zero |
| Neither source sees anything | Either there is no such traffic yet, or the referrer is being stripped upstream | Check a manual visit end to end before concluding |
Do a manual end-to-end test as well. Follow a link to your site from each surface you care about, on both desktop and mobile, and see which of your two systems records it. That single exercise usually explains more of the gap than a week of query work.
Where the numbers still disagree after reconciliation, report the range rather than picking the flattering end. The wider question of whether uncounted assistant-influenced demand is real, and how to talk about it responsibly, is covered in is dark AI traffic real?.
Reporting it without implying completeness
The configuration is the easy half. The reporting is where credibility is won or lost.
- Label the metric honestly. "Sessions with an identified AI-assistant referrer" is accurate. "AI traffic" is not, and it will be quoted back to you as though it were a total.
- Publish the definition beside the number. State the hostname list, the date it was last updated, and the channel-group ordering. A number whose definition is not visible cannot be audited, and an unauditable number gets discounted the moment it is inconvenient.
- Show the undercount in the artefact itself. One line under the chart: this measure excludes app-opened links, stripped referrers, copy-paste visits, delayed branded searches, and non-consented sessions, so it is a floor.
- Never present the trend as a measure of AI-influenced demand. It is a measure of one attributable slice of it. If your channel doubles, the honest reading is that identified referrals doubled, which may reflect changed referrer behaviour on the provider's side rather than changed demand.
- Do not treat crawl or fetch volume as the same thing. Crawler hits in your logs and referral sessions in GA4 answer different questions, and neither is a visibility metric. Whether an assistant recommends you is only answerable by sampling assistants directly.
- Keep causal language out. Correlation between a visibility programme and this curve is a hypothesis, not a result.
Downloadable versions of the definition block and the caveat language are on the resources and downloads page, and the structure for the report they sit inside is on the reporting hub.
Maintaining it as referrer patterns change
This configuration decays. Treat it as a maintained asset with an owner.
- Monthly: sort Session source by sessions in Traffic acquisition and read the top of the unclassified referral list for hosts you do not recognise. New surfaces show up here before they show up in anyone's blog post.
- Quarterly: re-verify the hostname list against provider documentation, update the date on the definition block, and confirm the channel ordering has not been disturbed by someone else's edit.
- On every change: annotate. Record the date, the old regex, the new regex, and who made the change. Without that, a step change in the chart is uninterpretable six months later, and someone will read a configuration edit as a performance result.
- Watch for reclassification. If a provider changes its outbound link handling, traffic can move between Direct and Referral with no change in reality. Annotate the moment you see it rather than the quarter you explain it.
- Re-baseline rather than restate. When the definition changes materially, start a new series and keep the old one visible. Retrospectively rewriting history destroys trust faster than a gap in the chart.
In Plain English
You can build a GA4 channel group or segment that isolates sessions arriving with an identifiable AI-assistant referrer, and it takes about twenty minutes. What you get is a floor, not a count, because app-opened links, stripped referrers, copy-paste visits, and delayed branded searches are all invisible to it. This helps analytics and growth leads who need a defensible first-party signal to put in a monthly report. Use it when you want directional evidence and a landing-page view. Build the comparison first, validate against your server logs, name the channel so the word "partial" travels with it, and re-verify the hostname list every quarter.
Get the AI referral attribution pack for the channel-group definitions, the validation checklist, and the caveat language to paste under your chart.
Primary-source verification
Checked July 28, 2026. The operational and factual guidance above was reviewed against the primary references below. Provider features, prices, policies, interfaces, jurisdictions, and account-specific results can change; recheck the controlling first-party document and your own account or measured data before acting.
- Google Search: AI features and your website - How Google describes eligibility, preview controls, and appearance in its AI search features.
- Google: common crawlers and special-case user agents - Current Googlebot and Google-Extended identities and controls.
- OpenAI: overview of OpenAI crawlers - Current GPTBot, OAI-SearchBot, and ChatGPT-User descriptions and publisher controls.
- Anthropic: web-crawler controls - Current ClaudeBot, Claude-SearchBot, and Claude-User descriptions and controls.
- Perplexity: crawler and user-agent documentation - Current PerplexityBot and Perplexity-User descriptions and controls.
- Apache HTTP Server: mod_log_config - Authoritative Apache access-log fields and formats.
- nginx: HTTP log module - Authoritative nginx access-log configuration and variables.
- Google Analytics: traffic-source dimensions - Current GA4 source, medium, campaign, and default-channel definitions.