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 pattern | Medium | Bucketed as |
|---|---|---|
chatgpt.com | referral | AI Assistant |
chat.openai.com | referral | AI Assistant |
gemini.google.com | referral | AI Assistant |
bard.google.com | referral | AI Assistant |
claude.ai | referral | AI Assistant |
perplexity.ai | referral | AI Assistant |
copilot.microsoft.com | referral | AI Assistant |
you.com | referral | AI Assistant |
poe.com | referral | AI Assistant |
A few things worth flagging that most write-ups miss:
- The medium must be
referral. If a user clicks an AI-generated link that includes UTM parameters withutm_medium=organicorutm_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. - Subdomain matching is exact, not wildcard.
chat.openai.comis matched separately fromchatgpt.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. 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:
- Go to Reports → Acquisition → Traffic acquisition.
- In the dimension dropdown, select Session default channel group.
- Scroll the list. If
AI Assistantappears 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:
- 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.
- 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):
| Channel | Avg. session duration | Pages/session | Conversion rate | Avg. order value |
|---|---|---|---|---|
| Organic Search | 2m 14s | 3.8 | 2.1% | $84 |
| AI Assistant | 4m 02s | 5.1 | 3.4% | $112 |
| Direct | 1m 48s | 2.9 | 1.6% | $76 |
| Referral (non-AI) | 2m 31s | 3.2 | 1.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:
- Connect your GA4 property as a data source.
- Add a table chart with
Session default channel groupas the dimension. - Add metrics:
Sessions,Engagement rate,Conversions,Total revenue. - Add a calculated field for conversion rate:
Conversions / Sessions. - Filter to include only
Organic Search,AI Assistant,Direct, andReferralto 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
referraland 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.
Share this article