Last updated: July 2026. AI platform behavior changes frequently — referrer policies, crawler names, and feed protocols may have evolved since publication.
TL;DR — 2 minute version
- Since May 13, 2026, GA4 has a native “AI Assistant” channel that auto-detects ChatGPT, Gemini, and Claude referrals — no configuration needed, but it only catches sessions with an intact referrer
- ChatGPT still strips referrers on most link types — clicks from in-app browsers, mobile apps, and copy-paste still appear as Direct in GA4
- Perplexity, Gemini, and Claude have historically passed referrers more consistently than ChatGPT — a custom Channel Group still helps you catch platforms outside GA4’s documented native list, and preserves historical trend data (the native channel is forward-only)
- The most reliable currently available method to track ChatGPT clicks in unlinked/copy-pasted contexts is still UTM parameters in your llms.txt
- Search Console Crawl Stats show GPTBot and OAI-SearchBot activity — a leading indicator that precedes traffic by weeks
- If AI traffic converts several times better than organic, misclassifying it as Direct means you cannot measure ROI from your AEO work
You updated your robots.txt. You generated llms.txt. You fixed your Product schema. Your AEO audit score went from 25% to 85%. And then you opened GA4 — and saw nothing unusual.
This is the most common frustration after implementing AEO on a Magento 2 store. Not because the work didn’t help, but because standard analytics tools were not built to track AI referral traffic. The signals exist — they are hidden in the wrong buckets.
Why misclassified AI traffic is a real business problem
Early anecdotal reports from eCommerce teams experimenting with AI referral tracking suggest that visitors arriving from AI recommendations may convert at significantly higher rates than standard organic traffic — in some cases 2–5× higher. Reliable industry-wide benchmark data does not yet exist, but the directional trend appears consistent across multiple early adopters. The likely reason is intent: a user who asked Perplexity “best waterproof running shoes under €150” and clicked your store has already received a personalised recommendation and done their comparison before arriving. They are not browsing — they are closer to buying.
If that traffic is invisible in GA4 — sitting inside Direct or Unassigned — you cannot justify continued AEO investment, cannot optimise for it, and cannot report on it. Fixing the tracking is not a technical exercise. It is a prerequisite for measuring whether your AEO strategy is working at all.
This guide covers several methods to surface AI search traffic in Magento 2 — from GA4’s own native classification to server-side log analysis — so you can connect your AEO work to real business outcomes.
Why AI traffic disappears in your analytics
Each AI platform handles referral data differently, which is why a single tracking method won’t cover all of them:
| Platform | Referrer passed? | What GA4 sees by default | Crawler user agent |
|---|---|---|---|
| ChatGPT | ❌ No | Direct / (none) | GPTBot, OAI-SearchBot |
| Perplexity | ✅ Yes | Referral — unclassified | PerplexityBot |
| Google Gemini | ✅ Partial | Referral from gemini.google.com | Google-Extended |
| Claude (Anthropic) | ✅ Yes | Referral from claude.ai | ClaudeBot |
| Microsoft Copilot | ✅ Partial | Referral from copilot.microsoft.com | Bingbot (shared) |
| ChatGPT Shopping | ❌ No | Direct / (none) | OAI-SearchBot |
Referer HTTP header — GA4 records these identically to someone typing your URL directly. OpenAI has been observed appending UTM parameters to some links surfaced through ChatGPT Search’s “More sources” section since mid-2025, though this isn’t documented as a guaranteed or universal behavior across all link types. In practice, most individual publishers still see a large share of ChatGPT-driven visits land as Direct. Published estimates of how many ChatGPT sessions arrive with a usable referrer vary considerably by source and methodology — some vendor analyses report figures as low as 10–15%, others closer to 30–40% — so treat any single benchmark as directional and verify against your own server logs rather than assuming a fixed percentage applies to your traffic.
The practical upside: Perplexity, Gemini, and Claude together likely represent more trackable eCommerce referral traffic than ChatGPT at this stage — and all three are addressable right now with GA4’s native classification and a five-minute custom Channel Group.
Method 0: Start with this — GA4’s native “AI Assistant” channel
Effort: 0 minutes | Covers: ChatGPT, Gemini, Claude out of the box (list expanding)
On May 13, 2026, Google added a native “AI Assistant” channel to GA4’s Default Channel Group. This is a significant change from the setup most AEO guides — including earlier versions of this one — were written around. You no longer need to build a custom Channel Group from scratch just to see ChatGPT, Gemini, and Claude traffic separated from generic Referral.
When GA4 detects a referrer matching a recognized AI assistant, it now automatically assigns:
- Medium:
ai-assistant - Campaign:
(ai-assistant) - Default Channel Group:
AI Assistant— appearing alongside Organic Search, Direct, Referral, and Paid Search in standard Acquisition reports - Source: remains the originating AI platform’s domain (for example,
chatgpt.comorgemini.google.com) — so you can still break results down by individual platform within the AI Assistant channel
No configuration is required. If your GA4 property hasn’t received the update yet, nothing is broken on your end — Google rolled this out gradually across properties, with wider availability reached over the following weeks into early June 2026.
- It is not retroactive. Historical traffic before May 13, 2026 stays classified as it was — Direct or Referral. You will not get clean year-over-year AI traffic comparisons from this channel alone for some time.
- It still depends entirely on the referrer header being present. Traffic from mobile apps, in-app browsers, and copy-pasted links still lands in Direct — the structural gap described throughout this guide has not gone away, it’s just easier to see what you’re missing now.
- Google’s published documentation focuses on ChatGPT, Gemini, and Claude. Some third-party sources suggest broader coverage (Perplexity, Copilot, Grok, DeepSeek and others), but this is not consistently documented in Google’s own materials and coverage may vary or change. Treat Perplexity attribution via the native channel as unconfirmed until you verify it in your own data.
How to verify the AI Assistant channel is working on your property
-
Reports → Acquisition → Traffic acquisition
Open the standard Traffic acquisition report in GA4.
-
Set the primary dimension to “Session default channel group”
This is the dimension dropdown at the top of the report table.
-
Look for a row labeled “AI Assistant”
If it’s present, the channel is live on your property and already capturing qualifying sessions.
-
If it’s missing, check date range first
Expand to the last 30–90 days. If it’s still absent, the rollout may not have reached your property yet, or you may genuinely have zero qualifying sessions in that window — both are normal at this stage.
Native channel vs. custom Channel Group, side by side
| Capability | Native AI Assistant channel | Custom Channel Group |
|---|---|---|
| Setup effort | None — automatic | Manual — ~5 minutes |
| Historical data | No — forward-only from May 13, 2026 | Yes — as far back as you configure it |
| Platform coverage | Documented: ChatGPT, Gemini, Claude | Unlimited — any domain you add, including Perplexity |
| Referrer required | Yes | Yes |
| Retroactive reclassification | No | No |
| Maintenance | None — Google maintains the referrer list | You update the domain list as new platforms emerge |
The native AI Assistant channel may be sufficient on its own if:
- you only care about reporting going forward, not historical comparisons
- your AI traffic mainly comes from platforms Google’s documentation confirms — ChatGPT, Gemini, or Claude
- you don’t need to isolate individual AI platforms beyond what the Source dimension already shows you
Otherwise — if you need Perplexity coverage, a continuous historical trend line, or reporting for a client who wants year-over-year AI traffic numbers — keep both the native channel and a custom Channel Group running in parallel.
Method 1: Custom Channel Grouping in GA4
Effort: 5 minutes | Covers: Perplexity and other platforms outside GA4’s native list, plus historical trend continuity
Even with the native AI Assistant channel now live (see Method 0 above), a custom Channel Group is still worth setting up — mainly to cover platforms Google hasn’t officially added yet (Perplexity is the most common gap), and to keep a continuous trend line since the native channel doesn’t apply retroactively. Think of this as a complement to the native channel, not a replacement for it.
-
GA4 Admin → Data display → Channel groups → Create new channel group
This is in the Property column of GA4 Admin, not the main left nav.
-
Name the group “AI Search” and set condition type to Session source
Use contains as the operator — one rule per domain.
-
Add all known AI referrer domains from the table below
New AI platforms appear regularly — revisit this list quarterly.
-
Save and wait 24–48 hours
Channel groups apply to new sessions only — historical data is not reclassified.
| Add to Session source — contains | Platform |
|---|---|
perplexity.ai | Perplexity |
gemini.google.com | Google Gemini |
bard.google.com | Google Bard (legacy) |
claude.ai | Anthropic Claude |
copilot.microsoft.com | Microsoft Copilot |
bing.com/chat | Bing Chat |
you.com | You.com AI |
phind.com | Phind |
poe.com | Poe |
kagi.com | Kagi AI |
Demo: GA4 Custom Channel Group setup — add one condition per AI domain with OR logic between them.
Method 2: UTM parameters — attributing at least part of ChatGPT traffic
Effort: 30 minutes | Covers: ChatGPT (partial attribution)
Since ChatGPT strips referrer headers on most link types, the most practical currently available method to attribute at least part of ChatGPT-driven traffic is adding UTM parameters to URLs exposed through AI discovery layers — such as llms.txt and experimental commerce feeds. When a user clicks a UTM-tagged link, GA4 receives the attribution string regardless of the missing referrer. This captures confirmed intentional clicks, not total AI-influenced traffic.
Add UTMs to llms.txt
Add UTMs to OpenAI experimental commerce feeds
If you are testing OpenAI-compatible commerce integrations or experimental shopping feeds — where your product data is submitted directly to OpenAI infrastructure — those product URLs should also carry UTM parameters. This is an evolving area and OpenAI has not published a stable, widely-documented merchant onboarding standard as of 2026, so treat any integration here as experimental:
Using distinct utm_source values (chatgpt vs chatgpt_shopping) lets you separate organic ChatGPT referrals from any feed-driven product clicks in GA4.
Method 3: Search Console Crawl Stats — AI bots as a leading indicator
Effort: 2 minutes | Covers: All major AI crawlers
Search Console does not show AI referral traffic directly. What it does show is AI crawler activity — and crawler visits are a leading indicator that precedes recommendation traffic by days or weeks. When GPTBot crawls a product page, it is building or updating its knowledge of your catalog.
-
Search Console → Settings → Crawl stats
Bottom-left Settings panel, not the main navigation.
-
Click “See all crawl requests” and filter by user agent
Look for the agents in the table below.
| User agent | Platform | What increasing crawl frequency means |
|---|---|---|
GPTBot | ChatGPT (OpenAI) | Your pages are significantly more likely to be considered for ChatGPT answers |
OAI-SearchBot | ChatGPT Search | OpenAI is indexing you for real-time results |
Google-Extended | Google Gemini | Gemini training and AI Overviews data collection |
PerplexityBot | Perplexity | Your content may appear in Perplexity answers |
ClaudeBot | Anthropic Claude | Claude retrieval and training data |
Demo data — illustrative crawl stats. GPTBot and OAI-SearchBot returning 200 status confirms your pages are accessible to OpenAI crawlers.
Method 4: Server-side access logs
Effort: 15 minutes | Covers: Everything, including ChatGPT — most accurate method
Server logs capture every HTTP request — including AI crawler visits and (where available) referrer headers from AI platforms. This is the most complete data source and the only one that can confirm GPTBot activity independently of Search Console.
Demo output — illustrative. High GPTBot frequency on product pages indicates those pages are strong candidates for ChatGPT recommendations.
For Hypernode hosting, logs are at /var/log/nginx/access.log with daily rotation. The same commands above work without modification. You can also use the Hypernode Control Panel under Logs → Access logs for a browser-based view.
Putting it together: AI traffic dashboard in GA4
- GA4 → Explore → Blank exploration → name it “AI Search Performance”
- Add dimensions: Session default channel group, Session source, Landing page
- Add metrics: Sessions, Engaged sessions, Conversions, Revenue
- Add a filter group with two conditions (OR logic): Session default channel group exactly matches “AI Assistant” OR Session default channel group exactly matches “AI Search” (your custom group). This surfaces both native and custom-tracked AI sessions in one view without double-counting, since a session can only belong to one channel group definition at a time.
- Add date comparison: this month vs last month to track growth over time — keep in mind the native channel’s comparison will be limited until it has accumulated a few months of history
| Stage | Where to measure | What it means |
|---|---|---|
| AI bots crawling pages | Search Console → Crawl Stats | You are indexed and eligible for AI recommendations |
| AI referral sessions (ChatGPT, Gemini, Claude) | GA4 → native “AI Assistant” channel | Users are clicking through from AI answers — no setup needed, forward-only |
| AI referral sessions (Perplexity + other platforms) | GA4 → custom “AI Search” channel group | Coverage for platforms outside GA4’s documented native list |
| ChatGPT UTM sessions | GA4 → utm_source=chatgpt | Confirmed ChatGPT-driven clicks, including copy-pasted links |
| Conversions from AI | GA4 → AI Assistant + AI Search channels → Purchase event | Revenue attributable to AEO work |
How much AI traffic should you expect? Benchmark by store type
One of the most common questions after setting up AI tracking is: “Are these numbers normal?” Here are approximate ranges based on community reports and early data from stores that have implemented AEO. Treat these as directional benchmarks, not guarantees — this space is moving quickly.
| Store profile | AI traffic share of total sessions | Primary source | Notes |
|---|---|---|---|
| No AEO work done | 0.1–0.5% | Perplexity (passes referrer) | Mostly untracked — sitting in Direct |
| Basic AEO (robots.txt fixed, llms.txt present) | 0.5–2% | Perplexity, Gemini | Visible in GA4 after Channel Group setup |
| Strong AEO (schema complete, rich descriptions, UTMs) | 2–6% | Perplexity, ChatGPT (UTM-tracked) | Measurable ROI from AEO investment |
| Niche authority store (topic leader, cited in AI answers) | 5–12% | Multiple AI platforms | AI becoming a primary acquisition channel |
| B2B / specialist (narrow topic, strong llms.txt) | 3–10% | Perplexity, Claude | High conversion rate; smaller absolute volume |
AI attribution will remain partially probabilistic
It is worth being clear about what this guide can and cannot give you. Setting up all methods described here will give you a significantly better picture of AI-driven traffic — but it will not give you perfect attribution. That gap is structural, not a setup problem.
| Attribution gap | Why it happens | Workaround |
|---|---|---|
| Dark traffic from ChatGPT | No referrer passed; copy-paste strips UTMs | UTMs catch intentional clicks; server logs catch crawl activity |
| Safari / privacy browser stripping | Browser policy removes Referer on cross-site navigation | UTM parameters bypass browser referrer policy |
| In-app browsers | ChatGPT iOS app, Perplexity app may not pass referrers | No reliable workaround — contributes to Direct |
| Cross-device journeys | User sees recommendation on mobile, converts on desktop | GA4 User ID if logged in; otherwise unattributable |
| URL canonicalisation by AI | ChatGPT may surface a clean URL, stripping UTMs | Use short, memorable UTM values; monitor server logs for pattern |
What to do if you see no AI traffic at all
First: check the obvious AEO gaps
- robots.txt is blocking GPTBot or OAI-SearchBot — fix guide →
- llms.txt does not exist or returns 404 at yourdomain.com/llms.txt — generation guide →
- Product schema is missing
offers.availability— ChatGPT Shopping skips these products — schema guide → - Product descriptions are supplier copy — AI models cannot form a confident recommendation — description guide →
- AEO audit score above 70% and Channel Group set up — give it 4–8 weeks; AI crawl-to-traffic lag is real
Why AI traffic still shows as Direct (even after setup)
If you have confirmed AI bots are crawling your store but sessions are still landing in Direct rather than an AI channel, the issue is almost always one of these:
Browser / privacy stripping
- Safari strips referrer by default for cross-site navigations
- Firefox with Enhanced Tracking Protection removes referrer headers
- Privacy extensions (uBlock, Brave Shield) strip referrers
- iOS in-app browsers (including ChatGPT app) may not pass referrers
Server / infrastructure
- Cloudflare Page Rules or Transform Rules stripping Referer headers
- Magento full-page cache serving redirects that drop the referrer
- 301/302 redirect chains — referrer is dropped on redirect hops
- HTTPS → HTTP redirect (rare but strips referrer by browser policy)
GA4 configuration
- Google Consent Mode blocking session data before consent
- Channel Group condition using wrong match type (exact vs contains)
- GA4 referral exclusion list accidentally including AI domains
- GA4 data stream not firing on the landing page template
UTM issues
- UTM parameters stripped by Magento URL rewrite rules
- User copy-pasted URL without UTM (ChatGPT text display, not link)
- UTM not present in llms.txt (added to product pages but not discovery file)
- utm_source value not matching Channel Group condition string exactly
?utm_source=test_ai&utm_medium=debug to a product URL and visit it yourself from an incognito window. Check GA4 Realtime → Traffic sources. If the UTM shows up correctly, your GA4 setup is fine and the issue is upstream (browser stripping or redirect chain). If it doesn’t appear, the issue is in your GA4 data stream or Magento URL handling.
Complete AEO implementation guide — all steps
Not sure where to start?
Run a free automated AEO audit — get a score, identify the exact gaps, and see a prioritised fix list in under 2 minutes.
Run free AEO audit →