Ask most retail analytics teams how much revenue ChatGPT, Perplexity, Gemini or Copilot sent them last quarter and the honest answer is a shrug. The traffic exists. It shows up in Google Analytics 4 as a scatter of odd referral sources, a bump in direct sessions nobody can explain, and a handful of orders with unusually high average values. None of that is labeled “AI assistant” anywhere in the default reports, and so it gets ignored or, worse, quietly credited to whichever channel touched the customer last.
This guide walks through how to isolate that traffic in GA4, how to tie it back to actual orders rather than modeled conversions, and how to present the result to a finance director without overclaiming. It assumes a standard GA4 property with e-commerce events firing and an order system you can export from. The number you find will be small, and the point of the exercise is to judge it on the right scale.
In short
- AI assistant traffic lands in three GA4 buckets, not one: Referral (when the assistant passes a referrer), Direct (when the app strips it), and Organic Search (for Google AI Overviews and AI Mode, which are indistinguishable from classic Google clicks).
- A custom channel group is the fastest fix: a regex on session source that catches chatgpt.com, perplexity.ai, gemini.google.com, copilot.microsoft.com and their variants puts everything in one row of the standard acquisition reports.
- Volume looks tiny because it is measured at the wrong stage: assistants pre-qualify the shopper, so sessions are few but conversion rate and order value run 2–5 times the site average in most retailer reports we have seen.
- Only an order-data join gives you real revenue: GA4’s purchase event drops orders, models others and thresholds small segments; joining on transaction ID against your order export fixes all three.
- Report it as a cohort, not a campaign: the right stakeholder framing is “these shoppers behave differently and here is how we serve them better”, not “AI drove X percent of revenue”.
Where AI assistant traffic actually lands in analytics
Google Analytics classifies a session by looking at the referrer and any UTM parameters on the landing URL, then mapping the combination to a default channel. AI assistants were not part of the design, and as of this writing there is no dedicated “AI” channel in the default channel grouping. Google has adjusted its channel definitions several times, so check the current Admin documentation before assuming anything below is still exact. The behavior described here reflects what retailers have reported through mid-2026.
The practical result is that assistant clicks split three ways. When a user clicks a link inside the ChatGPT web app, the browser sends chatgpt.com as the referrer and GA4 files the session under Referral. When the same user clicks from the iOS or Android app, the in-app browser often passes no referrer at all, and the session is filed under Direct. When the user clicks a link in a Google AI Overview or in AI Mode, the referrer is google.com, and GA4 files it as Organic Search with no way to separate it from a classic blue-link click.
There is one helpful wrinkle. OpenAI began appending utm_source=chatgpt.com to outbound links from ChatGPT in 2025, which means a growing share of that traffic carries an explicit source tag even when the referrer is missing. Perplexity, Gemini and Copilot have not consistently done the same, so their app traffic still leaks into Direct.
Anthropic’s Claude passes claude.ai as a referrer from the web app but is a small source for most retailers. If you want the broader context on why these assistants matter for a store at all, our primer on what AIO is for retailers and why it now matters more than SEO alone covers the strategic side.
The three buckets in one view
| Assistant | Typical session source in GA4 | Default channel | Referrer reliability | Notes |
|---|---|---|---|---|
| ChatGPT (web) | chatgpt.com, chat.openai.com | Referral | High | UTM tag usually present since 2025 |
| ChatGPT (mobile app) | (direct) or chatgpt.com via UTM | Direct or Referral | Medium | Depends on whether the UTM survived the app browser |
| Perplexity | perplexity.ai, www.perplexity.ai | Referral | High on web, low in app | Some clicks route through a redirect domain |
| Google Gemini | gemini.google.com | Referral | Medium | Occasionally appears as google.com and lands in Organic |
| Google AI Overviews / AI Mode | Organic Search | Not separable | Identical to a classic organic click in GA4 | |
| Microsoft Copilot | copilot.microsoft.com, bing.com | Referral or Organic Search | Medium | Bing-hosted answers show as bing / organic |
| Claude | claude.ai | Referral | High | Low volume for most retail sites |
The table explains why a Referral-only report understates the channel. It also explains why you should never claim to have measured AI Overviews traffic from GA4 alone: you have not, and anyone who has read the Google documentation will know it. The best you can do for Google’s own AI surfaces is to watch Search Console impressions and clicks for queries that trigger an overview, which is a different measurement with its own limits.
What “dark” assistant traffic looks like
Assistant sessions that lose their referrer do not vanish. They land in Direct with a landing page that is almost never the homepage. Classic direct traffic goes to the homepage, a bookmarked account page or a URL typed from a print ad.
Assistant traffic goes to a deep product page, a comparison article or a category page with filters already applied, because that is the page the assistant cited. A Direct session landing on a page like /kitchen/espresso-machines/under-500 with a session duration of four minutes and a purchase is very unlikely to be a bookmark.
You cannot prove those sessions came from an assistant, and you should not present them as if you could. What you can do is track the share of Direct sessions landing on non-homepage, non-account URLs over time. If that share rises in step with your tagged assistant referrals, you have a reasonable proxy for the dark portion, and you can report it as a range rather than a point estimate. The problem only gets harder from here: as we set out in our guide to preparing your store for AI shopping agents, an agent that completes the purchase on the shopper’s behalf may leave no session on your site at all, so the referral measurement you build now is the foundation for whatever replaces it.
Building a referral segment for the main assistants
There are three places to do this in GA4, and a well-run property uses all three. A custom channel group makes the assistants visible in the standard Acquisition reports, which is where most stakeholders look. A comparison or segment in Explorations lets you drill into landing pages, funnels and paths.
A saved audience lets you activate the cohort in Google Ads or push it to a CRM. Start with the channel group because it is the cheapest and it changes what everyone else sees.
The custom channel group
In Admin, under Data display, open Channel groups and create a new custom group. Add a channel named something like “AI assistants” and set its condition to session source matching a regular expression. A practical starting pattern is:
^(chatgpt.com|chat.openai.com|.*.perplexity.ai|perplexity.ai|gemini.google.com|copilot.microsoft.com|claude.ai|you.com)$
Order matters in custom channel groups: GA4 evaluates the rules top to bottom and assigns the first match, so place the AI channel above Referral. Google’s own guide to custom channel groups documents the rule syntax and the current limits, which have moved over time. Note that a custom channel group only applies to data from the date it was created; it does not reclassify history. If you want a historical view you need Explorations or BigQuery.
The Explorations segment
Create a session segment in Explorations using the same regex on session source, and add a second condition on the session manual source for the UTM-tagged ChatGPT traffic. Explorations let you go back to the start of your data retention window, which by default is only two months on standard properties. If you have not already extended event data retention to 14 months in Admin, do it before you build anything else, because you will want year-over-year comparisons by next spring.
The audience
Build a GA4 audience with the same conditions and a 30-day membership duration. This has no reporting value on its own, but it lets you do two things later: suppress the audience from prospecting campaigns in Google Ads so you are not paying to reacquire people the assistant already sent, and export a rough count to compare against the order-data numbers.
| Method | Where it shows up | Applies to history? | Best for | Main limitation |
|---|---|---|---|---|
| Custom channel group | Standard Acquisition reports | No | Stakeholder visibility | Regex maintenance, forward-only |
| Explorations segment | Explorations only | Yes, within retention | Landing pages, funnels, paths | Sampling and thresholding on small cohorts |
| Audience | Audiences, Google Ads | No | Suppression and activation | No revenue detail |
| BigQuery export | Your warehouse | Yes, from export start | Order-level joins | Requires SQL and export setup |
Why volume looks tiny and conversion looks high
The first time a retailer builds this segment, the session count is deflating. For a mid-sized store doing a few million dollars a year online, AI assistant referrals in GA4 typically sit somewhere between a few hundred and a few thousand sessions a month, a fraction of a percent of total traffic. The instinct is to close the report and move on. That instinct is wrong, and understanding why is the most important part of this whole exercise.
An assistant does the shopper’s research. By the time someone clicks through from ChatGPT or Perplexity, they have usually described their need, compared three or four options, asked about price and returns, and picked a candidate. The click is the last step, not the first.
So the session count is low because the assistant absorbed the sessions that would previously have happened on your site and your competitors’ sites. Your funnel starts at the bottom for these visitors.
That shows up in three metrics. Conversion rate for the segment commonly runs 2–5 times the site average, and the retailers we have spoken with report figures in that band fairly consistently for 2025 and 2026. Average order value skews high because assistants are asked about considered purchases more than impulse ones.
And pages per session is low, not because visitors are disengaged but because they already know what they want. Treating low pages per session as a quality problem would be the wrong read entirely.
How the assistants choose what to send
The behavior of the traffic follows from how the assistants choose sources. ChatGPT cites pages it can retrieve, parse and trust, which tends to favor clear comparison content and well-structured product pages. Our breakdown of how ChatGPT cites retail content goes through the patterns in detail.
Perplexity leans harder on freshness and on pages that answer a specific question, which is why its referrals often land on a single deep article. The differences matter for measurement because they determine which landing pages you should expect to see, and a landing page report that does not match those expectations is a sign the segment is catching something else.
The sampling and thresholding trap
Small segments are exactly where GA4’s data quality features bite. Standard properties sample Explorations above 10 million events in the date range, which is fine, but they also apply data thresholds when Google signals are enabled and a segment is small enough that individual users might be identifiable. A thresholded row simply disappears or shows a warning icon, and a monthly report with 40 assistant purchases can lose a meaningful fraction of them to thresholding. If the row counts do not add up, that is usually why.
Modeled conversions, which GA4 uses to fill consent gaps, are least reliable for small, unusual cohorts. That is the strongest argument for the order-data join in the next section: your order system does not sample, threshold or model. It has every order.
Joining session data to order data for real numbers
The goal here is a table with one row per order, a column that says whether the order’s session came from an AI assistant, and the actual revenue, margin and refund status from your order system. Everything downstream of that table is trustworthy in a way that GA4 reports alone never will be.
Step one: make sure the join key exists
GA4’s purchase event carries a transaction_id parameter. If your implementation populates it with the same order number your order system uses, you already have the key. Check a handful of recent purchase events in DebugView or in the BigQuery export against real orders.
Mismatches are common: a Shopify store might send the checkout token in one place and the order name in another, a WooCommerce site might send the post ID instead of the customer-facing order number. Fix that first, because without a clean key nothing else works.
If you cannot get transaction_id populated properly, the fallback is to capture the attribution on the order itself. Write a small script that reads the GA4 client ID from the _ga cookie and the landing referrer and UTMs from the first page view, stores them in a first-party cookie, and posts them into an order note, custom field or metafield at checkout. It is uglier but it makes the order system self-describing, and it survives GA4 outages and consent gaps. Several retailers we know run both methods and reconcile them monthly.
Step two: get the session source to order level
The clean route is the BigQuery export. Google documents linking a GA4 property to BigQuery at no charge for the export itself, though the queries you run are billed at normal BigQuery rates, which for a retail property of ordinary size come to a few dollars a month. Once the daily export is flowing, a query that selects the transaction_id from purchase events and the session source and medium from the session_start event of the same session gives you the mapping. The session traffic source fields in the export are the ones to use for last-click; if you want first-touch, use the user-level traffic source fields instead and be explicit in your reporting about which one you chose.
If BigQuery is not an option, an Explorations free-form table with transaction ID as a dimension and session source as a secondary dimension gets you most of the way, subject to the sampling and thresholding limits already described. Export it as CSV. It is a manual step, which means it will be skipped when the analyst is busy, so treat it as a stopgap while the export is set up.
Step three: join and enrich
Pull an order export with order number, date, gross revenue, discount, shipping, product margin if you have it, refund amount, and customer ID. Join on order number to the session-source mapping. Flag each order as AI-referred using the same regex from your channel group. Then compute, for AI-referred orders versus everything else, the metrics your finance team actually cares about: net revenue after refunds, contribution margin, refund rate, and the share of orders from new versus returning customers.
Two enrichments pay for themselves. First, look up each AI-referred customer’s subsequent orders over the following 90 days. If assistants are sending you customers who come back, the lifetime value argument is far stronger than the single-order one.
Second, tag the product category of each order. Assistants are strong in some categories and absent in others, and the category split tells your merchandising team where the content investment should go. Our piece on product feeds for AI shopping agents explains why some products get surfaced and others never do, which usually maps directly onto that category split.
A worked example of the difference
Consider a home goods retailer that saw 1,800 AI assistant sessions in a month in GA4, with 61 purchases and $9,400 in reported revenue. After the order join, the same month showed 74 orders, because 13 purchases had been thresholded or lost to consent gaps, and $11,900 in gross revenue. Net of refunds it was $11,100, against a site-wide refund rate that would have implied $10,500.
Margin ran four points above the site average because the orders skewed toward full-price considered items rather than clearance. None of that was visible in GA4.
Landing pages that AI assistants send people to
Once the segment exists, the landing page report is the most actionable thing in it. Assistant traffic concentrates on a small number of URLs, usually far fewer than organic search traffic does, and those URLs are rarely the ones your SEO team has been optimizing. The typical pattern for a retailer is a handful of comparison or buying-guide articles, a few specific product pages that happen to have complete specifications, and one or two category pages with a clear name.
Three questions to ask of the list. Which pages get assistant traffic but have a low conversion rate for that segment, which usually means the assistant is sending people to an informational page when they are ready to buy, and the page lacks a clear path to the product. Which product pages get cited, and what do they have in common that the uncited ones lack: structured data, a specifications table, a clear price, in-stock status, a plain-language description. And which pages get assistant traffic that then bounces to a competitor, visible as a high exit rate on a page with an obvious commercial intent.
Why the citation pattern differs by assistant
Perplexity and Google AI Overviews reward different things from ChatGPT, and the landing page split reflects it. Perplexity tends to cite recently updated pages with a clear answer to the exact question asked, so its referrals arrive on articles with dated updates and direct headings. AI Overviews draw on Google’s index and lean on pages that already rank, so those referrals (invisible in GA4 but visible as a shift in Search Console click patterns) tend to hit the same pages your organic traffic does. Our guide to what retailers should optimize for in Perplexity and AI Overviews goes through the differences in detail.
Watching for the wrong pages
Two classes of page show up in assistant landing reports that should not. Out-of-stock or discontinued product pages get cited because the assistant’s retrieval was cached or because the page still exists and looks fine to a crawler. Those referrals convert at nearly zero and inflate the bounce rate for the segment, so they need either a restock, a redirect to the replacement, or a clear on-page alternative. Stale pricing pages and ended promotions produce the same effect, and cleaning them up improves assistant traffic quality within weeks rather than months.
What to do with the finding once you have it
The measurement is only useful if it changes something. The most common outcome, once a retailer has a trustworthy monthly figure, is that the number is too small to justify a dedicated budget line but large enough to justify not breaking it. That leads to a short list of practical actions that cost little and protect a channel that is growing faster than its current size suggests.
First, put the assistant channel on the same weekly dashboard as paid search and organic, even though the row will be much smaller. Channels that are not on the dashboard get broken by well-meaning changes, and the most common breakages are a robots.txt update that blocks assistant crawlers, a site migration that changes the URLs of the cited pages, and a content refresh that removes the specifications table an assistant was relying on. We cover the crawler side in the pillar guide to agentic commerce readiness, and the measurement dashboard is what tells you when something you did last week has cut the channel in half.
Second, use the landing page list to prioritize content work. Pages that assistants already cite are the cheapest to improve because the assistant has already decided they are trustworthy; making the path to purchase clearer on those pages raises conversion without needing to win any new citations. The 2026 retailer AIO checklist is a useful audit frame for those specific pages.
Third, protect the cohort from double-spend. If your paid search or paid social campaigns retarget everyone who visited a product page, you are paying to re-reach people the assistant sent you at no cost, and then crediting the retargeting campaign with the conversion. Suppressing the assistant audience from retargeting for a test period, and watching whether the assistant segment’s conversion rate holds, is a cheap test with a clear answer. It is essentially an incrementality question, and the methods in our piece on campaign incrementality testing without an enterprise budget apply directly.
The attribution model question
GA4’s default reporting attribution is data-driven for most properties, with last-click available as an alternative. Neither is designed for a channel whose whole value is that it happens before the site visit. Under data-driven attribution, an assistant referral followed by a branded search and a direct visit will usually see most of the credit go to the later touches, because the model learns from paths it has seen many times and assistant paths are rare. That is not a bug in the model; it is a limit of training a model on sparse data.
The practical answer is to report assistant referrals on a first-touch basis alongside the default model, and to be transparent that you are doing so. First-touch overstates the channel a little. Data-driven understates it a lot. Showing both and explaining why bounds the truth in a way that a single number cannot.
Reporting it to stakeholders without overclaiming
The fastest way to lose credibility on this topic is to walk into a leadership meeting with a slide that says “AI drove 4 percent of revenue”. Someone will ask how you measured Google AI Overviews, and the correct answer is that you did not, and the conversation is over. The second fastest way is to present the GA4 conversion rate for the segment without the order join, at which point someone from finance will point out that the revenue figure does not match anything in the ledger.
A better structure is a one-page monthly note with four parts. The measured floor: tagged and referrer-identified assistant sessions, orders and net revenue from the order join, presented as a hard number with the method stated. The estimated range: the dark-traffic proxy from Direct landing page behavior, presented as a range with the assumption spelled out.
The cohort profile: conversion rate, order value, margin, refund rate and 90-day repeat rate versus the site average. And the actions: what changed on the cited pages, what broke, and what is planned.
The phrases to use and avoid
Say “assistant-referred orders” rather than “AI-driven revenue”; the first is a measurement, the second is a claim about causation. Say “at least” when quoting the floor and “between” when quoting the range. Say “we cannot separate AI Overviews from organic search in GA4” once, clearly, and then stop apologizing for it. Avoid year-over-year growth percentages until you have twelve months of consistent measurement, because growth from a base of 30 orders is not a trend, it is noise.
| Attribution pitfall | How it shows up | Direction of error | Correction |
|---|---|---|---|
| Referral-only counting | Assistant app traffic lands in Direct | Understates | Add the Direct landing-page proxy as a range |
| Data-driven attribution | Credit flows to later branded search and direct touches | Understates | Report first-touch alongside the default |
| GA4 thresholding | Small-segment rows vanish or show a warning | Understates | Order-data join, which has no thresholds |
| Consent-gap modeling | Modeled conversions unreliable for rare cohorts | Either | Order-data join, capture attribution on the order |
| Claiming AI Overviews | Counted as assistant traffic from google / organic | Overstates | Exclude; monitor Search Console separately |
| Ignoring refunds | Gross revenue reported as net | Overstates | Join refund status from the order system |
| Retargeting double-credit | Paid campaign claims the assistant-referred order | Misallocates | Suppress the assistant audience in a holdout test |
Most retailers who have measured this for more than a year describe the same shape: a channel that is small, that grows every quarter, and whose growth rate matters more than its current size. A finance director who is told “this is 0.8 percent of orders, it was 0.3 percent a year ago, and here is what would break it” makes better decisions than one who is told “AI is the future”.
FAQ on measuring AI referrals
Does GA4 have a built-in channel for AI assistant traffic?
Not in the default channel grouping as of this writing. Assistant referrals with a referrer land in Referral, app traffic without one lands in Direct, and Google’s own AI surfaces land in Organic Search. A custom channel group with a regex on session source is the standard workaround, and it is worth checking the current GA4 documentation because Google revises channel definitions periodically.
What regex should I use to catch the main assistants?
A reasonable starting pattern on session source is ^(chatgpt.com|chat.openai.com|.*.perplexity.ai|perplexity.ai|gemini.google.com|copilot.microsoft.com|claude.ai|you.com)$. Review your Referral report quarterly for new domains and add them. ChatGPT’s domain change in 2024 broke many early patterns, and redirect domains appear from time to time.
Why does the segment show so few sessions?
Because the assistant absorbed the research sessions that would previously have happened on your site. Visitors arrive at the decision stage, so there are fewer of them but a much higher share convert. Judge the channel on orders, margin and repeat rate rather than on session volume, and expect the count to be a fraction of a percent of total traffic for most retailers.
Can I measure traffic from Google AI Overviews or AI Mode in GA4?
No. Those clicks carry a google.com referrer and are classified as Organic Search, identical to a classic result click. The closest proxy is Search Console, where you can watch impressions and clicks for queries known to trigger an overview, but that is a different measurement with its own gaps. Do not present organic search figures as AI Overview figures.
Why do I need the order-data join if GA4 already reports purchases?
GA4’s purchase data is subject to sampling in large Explorations, thresholding on small segments when Google signals are on, and modeling when consent is denied. Small cohorts like assistant referrals are affected by all three. Your order system has every order with its actual net revenue, refund status and customer ID, so joining on transaction ID gives you numbers a finance team will accept.
Which attribution model should I use for assistant referrals?
Report first-touch alongside the property’s default model and say so explicitly. Data-driven attribution learns from common paths and assistant paths are rare, so it tends to push credit to later branded search and direct touches. First-touch overstates slightly; data-driven understates substantially. Showing both bounds the truth better than either alone.
How do I handle assistant traffic that loses its referrer in a mobile app?
You cannot identify those sessions individually. What you can do is monitor the share of Direct sessions that land on deep product, category or article pages rather than the homepage or account pages, and track whether that share moves in step with your tagged assistant traffic. Present the result as an estimated range, never as a measured count.
What should I do first with the landing page list?
Find the cited pages that convert poorly for the assistant segment and make the path to purchase clearer on them, since the assistant has already decided to trust those URLs. Then fix or redirect any cited pages that are out of stock, discontinued or carry stale pricing, because those referrals convert at nearly zero and drag the whole segment’s metrics down.
How often does this measurement need maintenance?
Quarterly for the regex and the assistant domain list, monthly for the reconciliation between GA4 purchase counts and the order join, and continuously for a changelog of site changes touching the cited pages. The numbers are small enough that a break can look like normal variance, so the reconciliation step is what catches tracking problems before they compound.