GA4 9 min read

GA4's New AI Assistant Channel Group: How to Separate ChatGPT, Gemini, and Claude Traffic in Your Reports

Google just made 'AI Assistant' a default channel group in GA4 — meaning ChatGPT, Gemini, Claude, and Perplexity traffic now gets isolated automatically. But most reports still lump it under Referral

A
Ashwani Bhasin
·

Google quietly added “AI Assistant” as a default channel group in GA4, and most analytics teams haven’t noticed yet. ChatGPT, Gemini, Claude, and Perplexity traffic should now bucket themselves automatically, but in practice the rollout is patchy and the source/medium matching rules are tighter than the documentation suggests. I’ve audited about a dozen GA4 properties since the change landed, and roughly half still dump AI traffic into Referral or Direct because of trailing slashes, missing UTM parameters, or browsers stripping the referrer entirely.

This post covers what the new default group actually catches, where it conflicts with custom AI channel groups you may have already built, how to backfill historical data, and the gaps you still need GTM to plug.

What the AI Assistant default channel group actually matches

The new default group is rule-based, like every other GA4 channel grouping. It looks at source and medium and matches against a list Google maintains internally. From testing across several properties, here’s the working match list:

Source patternMediumBucketed as
chatgpt.comreferralAI Assistant
chat.openai.comreferralAI Assistant
gemini.google.comreferralAI Assistant
bard.google.comreferralAI Assistant
claude.aireferralAI Assistant
perplexity.aireferralAI Assistant
copilot.microsoft.comreferralAI Assistant
you.comreferralAI Assistant
poe.comreferralAI Assistant

A few things worth flagging that most write-ups miss:

  1. The medium must be referral. If a user clicks an AI-generated link that includes UTM parameters with utm_medium=organic or utm_medium=cpc, GA4 honours those and the AI Assistant rule never fires. This sounds obvious, but several SaaS clients I work with have outbound link UTMs in their own docs that AI tools then surface in answers — those visits never land in AI Assistant.
  2. Subdomain matching is exact, not wildcard. chat.openai.com is matched separately from chatgpt.com. If OpenAI moves traffic between subdomains (as they have done before), the rule list has to be updated by Google. There’s a lag.
  3. character.ai, pi.ai, and most niche LLM products are not in the default list. If your audience uses them, you still need a custom rule.

Why your existing custom AI channel group will now conflict

If you followed any of the popular guides from the last 18 months (including ours), you built a custom channel group using a regex like:

Source matches regex: chatgpt|openai|gemini|bard|perplexity|claude|copilot|you\.com

That group still works. It also now overlaps with the native default group. In practice this causes two problems:

Problem 1: Double reporting in Looker Studio. If one report uses Default Channel Group and another uses your custom group, the AI numbers will reconcile but most stakeholders won’t realise they’re looking at the same traffic counted under two different labels.

Problem 2: The “Unassigned” leak. Some custom groups were built with rules that explicitly excluded AI sources from Organic Search or Referral. Now that Google’s default group catches them first in its own evaluation order, your custom group’s “everything else” bucket can shift unexpectedly. I’ve seen Referral traffic drop 8–12% in a single week with no actual change in user behaviour, purely because the channel group reshuffled.

Reconciliation approach that works:

  • Keep the custom group, but rename it to something like AI Assistant (Extended) and add the niche sources Google doesn’t cover yet (character.ai, pi.ai, kagi.com, internal enterprise LLMs, etc.).
  • Use the native default group as your primary reporting dimension.
  • In Looker Studio, build a calculated field that flags any session where Default Channel Group = AI Assistant OR Custom Channel Group = AI Assistant (Extended). That’s your true AI total.

If you need help untangling overlapping channel group logic across multiple properties, this is the kind of thing our GA4 service handles regularly.

Verifying the channel group is live in your property

The rollout isn’t simultaneous across all properties. Here’s how to check:

  1. Go to Reports → Acquisition → Traffic acquisition.
  2. In the dimension dropdown, select Session default channel group.
  3. Scroll the list. If AI Assistant appears as a row (even with zero sessions), the group is live.

If it’s not there, two things to try:

  • Wait 48 hours. New default groups sometimes take a couple of days to populate even after the rollout reaches your account.
  • Check the property creation date. Older properties (created before October 2023) seem to get the update slightly later in some regions.

You cannot manually enable the AI Assistant default group. It’s controlled at the Google account level. What you can do is replicate it with a custom channel group while you wait:

Channel name: AI Assistant
Conditions:
  Source matches regex: ^(chatgpt\.com|chat\.openai\.com|gemini\.google\.com|bard\.google\.com|claude\.ai|perplexity\.ai|copilot\.microsoft\.com|you\.com|poe\.com)$
  AND
  Medium exactly matches: referral

Build this as a separate custom channel group, not by editing the default. Editing the default group is a one-way action in GA4 and creates reporting headaches across your whole property.

Historical data won’t reclassify — here’s how to backfill

GA4 evaluates channel groups at query time for the default group, but only going forward from when the new rule is introduced. Sessions that happened before the rollout stay categorised under whatever channel they were assigned at the time, usually Referral for ChatGPT and Direct for Gemini (which often strips referrer).

There’s no button to retroactively recategorise. But you can build segments that reproduce the AI Assistant logic and apply them to historical date ranges.

Segment definition for historical AI traffic:

Session segment:
  Include sessions where:
    Session source matches regex: chatgpt|openai|gemini|bard|claude|perplexity|copilot|poe\.com|you\.com
  AND Session medium = referral

Apply this segment in Explorations and you’ll get a reasonable view of historical AI traffic. Two caveats:

  1. Direct/(none) AI traffic is invisible to this segment. Anything that came in without a referrer (mobile apps, some browser configurations, copy-pasted links) is lost.
  2. The segment uses session scope. If you want user-level analysis (cohort retention, LTV by acquisition channel), you need a user-scope segment instead, and the numbers will diverge.

For Looker Studio reports that need consistent historical comparisons, I recommend exporting GA4 data to BigQuery and building the AI Assistant logic as a SQL CASE statement. That way you get one definition that applies retroactively and prospectively:

SELECT
  CASE
    WHEN REGEXP_CONTAINS(traffic_source.source,
      r'(chatgpt|openai|gemini|bard|claude|perplexity|copilot|poe\.com|you\.com)')
      AND traffic_source.medium = 'referral'
    THEN 'AI Assistant'
    WHEN traffic_source.medium = 'organic' THEN 'Organic Search'
    WHEN traffic_source.medium = '(none)' THEN 'Direct'
    ELSE 'Other'
  END AS unified_channel,
  COUNT(DISTINCT user_pseudo_id) AS users,
  COUNTIF(event_name = 'purchase') AS purchases,
  SUM(IF(event_name = 'purchase', ecommerce.purchase_revenue, 0)) AS revenue
FROM `your-project.analytics_XXXXXX.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20240101' AND '20241231'
GROUP BY unified_channel
ORDER BY revenue DESC;

This approach also sidesteps the GA4 UI’s sampling thresholds, which kick in surprisingly fast on large properties.

Comparing AI Assistant conversion rates in Looker Studio

The reason most teams want this isolated channel in the first place is to answer one question: does AI-referred traffic convert? My read across e-commerce and SaaS data is that the answer varies wildly by vertical.

Here’s a benchmark from three Shopify stores I have access to (anonymised, ~3 months of post-rollout data):

ChannelAvg. session durationPages/sessionConversion rateAvg. order value
Organic Search2m 14s3.82.1%$84
AI Assistant4m 02s5.13.4%$112
Direct1m 48s2.91.6%$76
Referral (non-AI)2m 31s3.21.9%$91

AI Assistant traffic is small in volume (typically 0.5–3% of sessions) but engages deeper and converts at a noticeably higher rate. That tracks with intent: users arriving from an LLM have usually had the product contextualised before clicking.

Looker Studio setup:

  1. Connect your GA4 property as a data source.
  2. Add a table chart with Session default channel group as the dimension.
  3. Add metrics: Sessions, Engagement rate, Conversions, Total revenue.
  4. Add a calculated field for conversion rate: Conversions / Sessions.
  5. Filter to include only Organic Search, AI Assistant, Direct, and Referral to keep the comparison clean.

Add a date range control and a comparison period set to the previous period. AI Assistant volume grows month-over-month for almost every property I’ve seen, so the trend is usually more interesting than the snapshot.

If you’re running this on a Shopify store and want server-side enrichment so AI-sourced orders get tagged at the order level, our Shopify service covers that integration.

The Direct traffic leak: AI tools without referrers

Here’s the gap nobody talks about. ChatGPT’s iOS and Android apps often don’t pass a referrer. Same with the Claude desktop app, Perplexity’s mobile app, and any user who copy-pastes a link out of an LLM conversation. All of that lands in Direct.

You can catch some of it with GTM. The trick is to look at the document.referrer value at the point of pageview, and supplement with URL inspection if the user landed on a page with a known AI-attached UTM. Here’s a GTM Custom HTML tag that runs early and writes a sessionStorage flag:

<script>
(function() {
  var ref = document.referrer || '';
  var url = window.location.href;
  var aiPatterns = /(chatgpt|openai|gemini|bard|claude|perplexity|copilot|poe\.com|you\.com)/i;
  var utmSource = new URLSearchParams(window.location.search).get('utm_source') || '';

  var isAI = aiPatterns.test(ref) || aiPatterns.test(utmSource);

  // Heuristic: long URLs with no referrer often come from LLM copy-paste
  var isLikelyAICopyPaste = !ref &&
    url.length > 120 &&
    /[?&](ref|source|src)=/.test(url);

  if (isAI || isLikelyAICopyPaste) {
    sessionStorage.setItem('ai_assistant_session', '1');
    window.dataLayer = window.dataLayer || [];
    window.dataLayer.push({
      event: 'ai_assistant_detected',
      ai_detection_method: isAI ? 'referrer_match' : 'url_heuristic'
    });
  }
})();
</script>

Then create a GA4 event parameter ai_assistant_session and send it on every event when the flag is set. You can use that parameter to build an audience or a custom dimension that catches the leaked Direct traffic.

The URL heuristic is fuzzy. I’d estimate it correctly identifies about 60–70% of AI copy-paste traffic with maybe a 5% false positive rate. It’s a rough patch, not a precise fix. If you want a cleaner approach using server-side GTM, our GTM service is the right starting point.

Common Mistakes and Troubleshooting

Mistake 1: Editing the default channel group instead of creating a new custom one. Editing the default group affects every report in the property and can’t be undone cleanly. Always build custom groups alongside the defaults.

Mistake 2: Assuming chatgpt.com traffic equals all ChatGPT traffic. A significant portion arrives without referrer headers, especially from mobile apps. If your AI Assistant numbers look suspiciously low compared to anecdotal customer reports (“I found you on ChatGPT”), the gap is almost certainly in Direct.

Mistake 3: Building Looker Studio reports against Session default channel group before verifying the rollout is live. If the AI Assistant bucket isn’t live in your property yet, the dimension returns an empty value for those rows and they fall into “Unassigned”. Use a custom channel group as a fallback.

Mistake 4: Counting AI Assistant sessions twice across overlapping custom groups. Audit every channel group definition in the property and check for source regex overlap. GA4 will assign a session to multiple custom groups simultaneously when conditions overlap.

Mistake 5: Forgetting BigQuery export uses different field paths. traffic_source.source in the export is the first user-level source, not the session source. For session-scope analysis, use the session_traffic_source_last_click fields available in recent schema versions.

Key Takeaways

  • The AI Assistant default channel group catches major LLM referrers but only when medium is referral and the source matches an exact subdomain on Google’s list — niche AI tools still need a custom group.
  • Existing custom AI channel groups will overlap with the new default. Keep them as an “Extended” group for niche sources, and use the default for primary reporting.
  • Historical traffic does not reclassify. Use session segments in Explorations for quick views, or rebuild the logic in BigQuery for consistent retroactive reporting.
  • AI Assistant traffic typically converts at 1.5–2x the rate of Organic Search but at much lower volume. The trend matters more than the snapshot.
  • A meaningful share of AI traffic arrives via Direct because mobile apps and copy-paste flows strip referrers. A GTM detection script catches some of it, but not all.
  • Audit your channel group definitions before trusting any AI traffic report. Overlapping rules are the most common source of reconciliation errors.
#GA4#AI Traffic#Channel Groups#Attribution

Share this article

Want This Implemented Correctly?

Let our team apply these concepts to your specific setup — with QA validation and 30 days of support.