Why the GA4 default report underreports AI traffic.
GA4’s default Channel Group was built for a pre-AI web. Traffic from chat.openai.com, perplexity.ai, gemini.google.com, and claude.ai lands mostly in Referral (when the referrer header survives), some in Direct (when the AI client strips it), and a meaningful slice in (Other). Looking at the channel report, you see none of these called out by name.
Conservative estimates: 30–70% of actual AI-referred sessionsare invisible in the default report. If you’re measuring “AI visibility ROI” off the default channel group, the number you’re reporting is wrong. The fix is one-time setup — 15 minutes per GA4 property.
Step 1 — Build the Custom Channel Group.
GA4 → Admin → Data display → Channel groups → + Create new channel group. Add 4 channels in this order (first-match-wins):
Channel 1: ChatGPT
Rule: Session source matches regex → ^(chat\.openai\.com|chatgpt\.com|openai\.com)$
Channel 2: Perplexity
Rule: Session source matches regex → ^(www\.perplexity\.ai|perplexity\.ai)$
Channel 3: Google AI (Gemini + Bard)
Rule: Session source matches regex → ^(gemini\.google\.com|bard\.google\.com)$. Note: AI Overviews referrals come through as google / organic and are not isolable at the GA4 level — see the limitations section below.
Channel 4: Claude / Other AI
Rule: Session source matches regex → ^(claude\.ai|anthropic\.com|you\.com|copilot\.microsoft\.com|bing\.com\/(chat|copilot))$
Step 2 — Client-side attribution event.
The Custom Channel Group buckets sessions. To tie AI referrals to conversions, fire a GA4 event on every page load that originated from an AI source. Paste this into the site’s <head>:
<script>
(function () {
if (!window.gtag) return;
var AI_HOSTS = [
'chat.openai.com', 'chatgpt.com', 'openai.com',
'perplexity.ai', 'www.perplexity.ai',
'gemini.google.com', 'bard.google.com',
'claude.ai', 'anthropic.com',
'you.com',
'copilot.microsoft.com'
];
var ref = document.referrer || '';
try {
var host = new URL(ref).hostname;
if (AI_HOSTS.some(function (h) { return host === h || host.endsWith('.' + h); })) {
window.gtag('event', 'ai_referral_session', {
ai_source: host,
event_category: 'ai_search',
non_interaction: true
});
}
} catch (e) {}
})();
</script>Now every conversion event (signup, demo request, purchase) can be sliced by “happened inside an ai_referral_session” — the single highest-value metric this program produces.
Step 3 — Single-regex for ad-hoc reports.
For Explorations, Segments, and Audiences where the Custom Channel Group isn’t available, use this one-paste regex:
^(chat\.openai\.com|chatgpt\.com|openai\.com|www\.perplexity\.ai|perplexity\.ai|gemini\.google\.com|bard\.google\.com|claude\.ai|anthropic\.com|you\.com|copilot\.microsoft\.com|bing\.com\/(chat|copilot))$Apply as: Dimension = Session source, Match type = matches regex.
The limitation to name explicitly: Google AI Overviews.
google / organic, indistinguishable from plain organic. You cannot build a channel group or regex that separates them. Two workarounds:- Infer from Search Console CTR drops. For queries that trigger AIO, organic CTR has dropped an average of 61% since June 2024 (Dataslayer, 2026). The shortfall is the AIO impact.
- Use AIO-specific citation tracking.Probe tools like Cited, Profound, or Semrush AI Visibility Toolkit measure AIO citations directly. Cited’s probe data is the source of truth for AIO attribution in its reports.
The benchmarks — what conversion rates should you hit?
| Metric | Good | Great | Exceptional |
|---|---|---|---|
| AI referral conversion rate (B2B SaaS) | 5–10% | 10–15% | 15%+ |
| ChatGPT referral conversion | 10% | 15% | 20%+ |
| Perplexity referral conversion | 5–8% | 10–12% | 12%+ |
| AI referral share of total site traffic | 0.2–0.5% | 1–2% | 3%+ |
Per-platform B2B baselines for comparison (Seer Interactive / ALM Corp, 2026): ChatGPT 15.9%, Perplexity 10.5%, Claude 5%, Gemini 3%, Google Organic 1.76%. The gap is structural — AI pre-qualifies visitors by answering the top-of-funnel questions before they click.
The 7-day verification ritual.
- Apply the channel group in GA4 Admin.
- Deploy the client-side event via GTM or direct script.
- Use GA4 DebugView to confirm
ai_referral_sessionfires on a test visit from Perplexity. - Wait 24 hours for GA4 daily processing to backfill.
- Open Reports → User acquisition; switch the primary dimension to the new channel group.
- Confirm non-zero rows for ChatGPT + Perplexity + Google AI + Claude / Other AI.
- In Explore, build a report: conversions split by “session included
ai_referral_session” vs not. Compare conversion rates against the benchmark table.
If all four AI channels register zero sessions for 7+ days, the regex failed — revisit step 1. If only ChatGPT registers, the brand has no presence on Perplexity / Gemini / Claude yet and the off-site playbook is the fix.
How Cited uses this in monthly reports.
The assemble-reportjob pulls AI citation data from the internal probe database and includes a section titled “AI referral attribution” that stitches three numbers:
- AI referral sessions (from GA4 when operator has wired this playbook).
- AI-referred conversion count (from the
ai_referral_sessionevent joined with existing conversion events). - AI-referred conversion rate vs overall site conversion rate — the headline number.
Without the GA4 setup above, the report falls back to internal probe-based attribution only. Operators wire the GA4 side during the onboarding call. See Cited pricing or start with the free audit.