AI Search ROI: Attributing Pipeline When an Assistant Sits in the Middle
Sep 8, 2026 · 10 min read
The GA4 and CRM configuration that connects assistant-driven demand to pipeline, the order to build it in, and the part no configuration recovers. Written for the measurement owner who already decided this matters and now has to make the report show it.

AI search ROI is the pipeline you can trace back to an answer engine. Two systems measure it, and each sees a different part. Google Analytics catches the visits an assistant referred. Your CRM catches the deals where a buyer says an assistant sent them. Neither catches the answer that produced no click, and no configuration recovers that slice.
Two figures set the size of the problem. In the first four months of 2026, 68.01% of US Google searches ended without a click to anywhere. That comes from SparkToro's 2026 zero-click study of Similarweb's desktop and mobile browser panel, checked September 2026.
That panel excludes the Google search app, so the real figure is likely higher.
The second is a configuration fact rather than a statistic. Google Analytics now ships an AI Assistant default channel for arrivals from sources like ChatGPT, Gemini, Copilot, and Grok. Its default channel group documentation explicitly excludes AI Overviews and AI Mode.
Key Takeaways
- The assistant is an intermediary: when it passes a referrer, you can learn which engine sent the visit. The question the buyer asked does not travel with it.
- Two systems, two partial views: Google Analytics measures referred sessions and a CRM field measures stated influence. Report both numbers separately.
- The accurate number is smaller than the number you want. Publishing the smaller one is what makes the trend defensible three months later.
- Order of operations decides the data: traffic lands in the first channel whose rule it matches, so an AI Assistants channel below Referrals may lose much of its traffic to the earlier rule.
- A stated coverage gap belongs in the report: name what the number excludes as you present it, or somebody else will name it for you.
Why AI Search Breaks Normal Attribution
Attribution assumes a visible chain: a query, a click, a landing page, and data connecting one step to the next. An assistant answers in the middle. If the buyer clicks through, the visit may reach your server. The query does not.
Three things break at once, and they break for different reasons.
- The keyword is gone. An assistant referral arrives as a plain referrer hostname. No search term travels with it, so the intent behind the visit is unrecoverable.
- The session starts late. Some of the comparison and objection handling happens inside the answer. The visitor may arrive further into the decision, which makes the landing page look more persuasive than it was alone.
- Most influence never becomes a request. An answer can name you correctly and send nobody. Your analytics has no row for that.
The first two problems make GEO ROI noisy. The third makes it structurally incomplete, and no amount of tagging closes the gap. The same wall shows up in planning. Deciding how to split the budget between search and generative work meets it from the other side.
What You Can Attribute
You can attribute a visit that produced a request to your server when its referral data arrives with it. Everything else is either self-reported or absent. That single line is the whole boundary, and the table below writes it out.
Teams often start by asking how to measure generative engine optimization (GEO) visibility. That is a supply-side question about whether engines name you at all. This article answers the demand-side one.
Visibility work sits upstream. The metrics worth tracking there are leading indicators, not substitutes for pipeline attribution.
| What you want to count | Attribution status | Why it lands there |
|---|---|---|
| A visit arriving from an assistant's domain | Attributable | The referrer hostname is in the request and Google Analytics can group it |
| Which assistant sent the visit | Attributable | When a referrer is present, its hostname usually identifies the provider |
| Sessions, key events, and revenue from those visits | Attributable | Standard reporting, once the channel exists |
| A deal where the buyer says an assistant sent them | Partially attributable | Self-reported, and only from the people who answer the question |
| Traffic from Google AI Overviews and AI Mode in GA4 | Not separable in GA4 | Google excludes both from the AI Assistant channel and files their visits under Organic Search |
| The prompt that produced the answer | Not attributable | Assistants pass no query string |
| An answer that named you and sent nobody | Not attributable | No request reaches your server, so nothing reaches your analytics to count |
Two internal readings sit either side of this boundary. Treating AI visibility as an outcome, not a discipline explains why the upstream number moves for reasons the downstream number cannot show. Share of voice across engines is the comparative version of that same measurement.
Without a supply-side baseline, start there. Running the audit by hand takes an afternoon. It produces a number this configuration cannot.
What You Genuinely Cannot
This section decides whether the rest of the report survives scrutiny. Most writing on this subject overstates what is recoverable. A specific list of what is not is why a CFO believes the rest.
Zero-Click Influence
An answer engine can describe your product accurately, place you above two rivals, and end the session. The buyer learns something. Your server learns nothing.
There is no event to fire and no row to count. It is a major category of influence the attribution model cannot see.
The SparkToro figure bounds the behavior at the search layer, not inside assistants themselves. Treat it as a category signal rather than your number.
Any vendor quoting a precise share of pipeline without publishing the assumptions behind it is presenting a model as observed fact. No public dataset sees enough of the zero-click influence to produce a complete figure.
Answers That Never Referred
Google's own channel definitions put the constraint in writing. AI Assistant covers arrivals from named assistants.
Organic Search includes AI Overviews and AI Mode. Neither rule is yours to change, because the default channel group cannot be edited in Google Analytics.
That produces a permanent blend. Traffic from Google's generative surfaces sits in the same bucket as ten blue links. No custom rule separates them, because the referrer does not.
A second slice goes missing before any rule runs. A channel rule can only read a referrer that arrives. An arrival with no identifiable referral source is normally recorded as Direct. Unassigned is different: it means the available source data matched none of Google’s channel rules. No reordering can recover a referrer that never arrived.
You can measure assistants. Google's own AI answers stay merged into organic.
The Multi-Touch Problem
Say an assistant appears somewhere in the middle of a multi-touch path. Your model assigns it a fraction under whatever rule you chose. The assistant plays no part in choosing that rule. The number you publish is your model's opinion about a session.
Say which model you used. Data-driven attribution and paid and organic last click can assign different credit to the same conversion path. A reader who does not know which one you ran cannot check the claim.
Setting Up Assistant Referrer Tracking
The build takes one sitting in the Google Analytics admin. You need Editor or above on the property.
Why the Default Group Will Not Do It
Google Analytics now classifies assistant traffic on its own. The AI Assistant channel fires when the medium exactly matches ai-assistant. Google sets that automatically when the referrer appears on its list of assistants.
That is a real improvement and it is not sufficient. The list is Google's. You cannot add an assistant it misses, and the default channel group cannot be edited.
A custom group gives you a definition you control and can defend in a meeting.
Identifying Assistant Referrers
Start from your own data, not from a template. Open Acquisition, then Traffic acquisition, and set the dimension to Session source. Reading by source rather than by channel matters here, because Google may already be filing some of these under AI Assistant.
Look for the hostnames sending sessions: chatgpt.com, perplexity.ai, claude.ai, gemini.google.com, copilot.microsoft.com.
Write down what you actually see. Google's example regex covers ChatGPT, Gemini, Copilot, Claude, and Perplexity. Its own note says to update the expression as your list changes. Your list will differ by category and by region.
HubSpot reached the same conclusion from the CRM side. Treating AI referrals as a distinct traffic source is now settled in both kinds of system.
Building the Custom Channel Group
Google's custom channel groups documentation, read 7 September 2026, carries the worked example this walkthrough follows. The order of operations matters more than any single setting.
- In Admin, under Data display, open Channel groups.
- Click Create new channel group. That starts you on a copy of the default group.
- Find the copied AI Assistant channel and edit it. If it is not present, add one. Set the condition to Source matches regex.
- Enter a regex covering the hostnames you listed. Use Google's published example as a starting point, not as the finished answer.
- Click Reorder and drag AI assistants above Referrals. Put it above Organic Search too if you want assistant traffic pulled out of that bucket.
- Save group.
Step five is the one people skip. Google states that traffic is included in the first channel whose definition it matches, given the current order. An AI Assistants channel below Referrals may lose much of that traffic to the earlier rule. The build looks broken when it is only misordered.
Two properties of this setup are worth knowing before you present anything from it.
- Custom channel groups apply retroactively. Your reports fill in history you never configured for. That is the best argument for building this today.
- Making it your primary channel group does not. Any custom group can be promoted to the property's primary. Google states the new criteria populate from that point forward only.
| Google Analytics limit | Standard property | 360 property |
|---|---|---|
| Custom channel groups, beyond the predefined one | 2 | 5 |
| Channels within each group | 50 | 50 |
| Available in the BigQuery export schema | No | No |
| Available in the Key events paths report | No | No |
The BigQuery line is the one that bites later. A team rebuilding this in a warehouse rewrites the rules by hand. The group does not travel with the export. Deletions are also irreversible, so delete a custom group only when you are sure it is no longer needed.
CRM Source Tagging
Google Analytics tells you a session arrived. It cannot tell you a deal closed six weeks later because an assistant recommended you in March. The CRM half is where revenue actually attaches. It depends on a field most teams skip or fill in badly.
The Self-Reported Field
Add a single-select picklist on the lead or contact object, asked once on the form. Name assistants explicitly in one option: ChatGPT, Claude, Perplexity, or another AI assistant.
Do not use free text. A free-text answer cannot be aggregated cleanly without normalizing it first. "chat gpt", "GPT", and "the AI" will sit in three separate rows forever. A short fixed list plus one Other field gives you a number you can report.
| Field | Who sets it | Overwritten later | What it answers |
|---|---|---|---|
| Last-touch source | The system, automatically | Possibly, depending on the CRM setup | Which channel delivered the final click |
| Self-reported source | The buyer, once, at form fill | No, write-once by rule | Which channel the buyer believes influenced them |
Tagging at Lead Creation
Set the field at lead creation and never again. Write-once is the whole discipline here.
A field that updates on later form fills becomes a noisier copy of last-touch source. It stops answering the question you added it for.
Pass the Google Analytics reading into the same record on the same event. Most CRMs accept a hidden form field carrying the session's source. One submission then writes both the observed channel and the stated one.
Reconciling the Two Sources
The two numbers will disagree, and the disagreement is the finding rather than a defect. A buyer reads an answer in ChatGPT, searches your brand name, and arrives through Organic Search.
Google Analytics calls that organic. The CRM field calls it an assistant. Both records are correct.
Report them as two coverage figures, not as one total. Adding them without reconciling individual deals can double count the same influence. Picking the larger one is what gets an attribution model quietly retired.
What to Tell a CFO
Lead with coverage, not with the number. The sentence that survives the meeting names the method, the size, and the gap in one breath.
"Assistant-referred sessions produced X in new pipeline last quarter, from the deals we can see. There is a slice we cannot see at all."
Three things belong in the answer, in this order.
- What the number includes: sessions referred by named assistants, plus deals where the buyer told us an assistant was involved, reported separately.
- What it excludes: answers that named us and sent nobody, Google AI Overviews and AI Mode traffic, and the prompt behind every visit.
- The direction over three months: the trend on an unchanged definition, which is the only comparison this data supports.
Do not report a share of total pipeline. The denominator includes influence you cannot observe, so the percentage’s relationship to the full picture is unknown. Stating it as a share invites a question you cannot answer.
The honest conversation is about how much the report can see and how much confidence the number deserves. The format question, taking the number to a board, is a different job for a different audience.
So is proving the spend before pipeline shows. A retainer conversation needs that in month one, before any of this data exists.
Version the definition. Write down: “Definition v1, built September 7, three engines in the regex.” That lets you explain a later step change as a rule change rather than a result.
Where Klarivo Sits in an Attribution Stack
Everything above is demand-side measurement, built by you in systems you already own. It produces a lagging, partial view: who arrived, from which assistant, and who says an assistant influenced them.
Klarivo does not replace this demand-side setup. No part of the walkthrough needs to be outsourced.
Klarivo Monitor measures what happens before the visit. It runs targeted queries across ChatGPT, Claude, Perplexity, Gemini, and Grok, and tracks each provider independently.
It reports visibility scores, competitor share of voice, query-level mention rates, sentiment trends, and Top 10 Citation Sources as domains. All of it is exportable and filterable, on a schedule the client controls.
The two systems answer different questions, and neither substitutes for the other. Your channel group tells you what happened after an answer sent someone. Monitor tells you which domains the engines drew on when they built the answer, dated and per provider. That upstream reading turns measurement into work. A domain you can influence gives the team somewhere concrete to act.
Want to know which domains the engines are reading in your category? Book a Klarivo discovery call at a time that works for you. The call takes 15 minutes. Tracking runs inside Klarivo Monitor.
Frequently Asked Questions About AI Search ROI
How do you measure the ROI of generative engine optimization (GEO) when the query does not reach your analytics?
You measure the effect and accept that the cause stays hidden. Build the channel group, add the self-reported CRM field, and hold the definition still for a quarter. The output is a dated trend on two partial measurements. That is enough to decide whether to keep spending. It will not tell you which piece of work caused which deal, and anyone offering that is selling a model.
How do you measure the success of generative engine optimization campaigns?
Pair one supply-side metric with one demand-side metric and report both. Supply-side: how often engines name you, and which domains they cite in your category. Demand-side: assistant-referred sessions and stated-source deals. A campaign that moves the first and not the second may be early rather than failing. The lag usually runs to months.
Do UTM parameters help with assistant traffic?
Only on links you control. You cannot tag a citation an engine chose to include. Your own documentation, community posts, and syndicated pieces are examples of places where you can control the link and add a UTM. That covers a narrow slice of assistant referrals, and it is still worth doing.
How long before the number means anything?
Longer than most reporting cycles allow. One month gives you a configuration test rather than a result. The first reading worth arguing about arrives around month three, once the definition has stopped changing. Shorter windows mostly document the variance of the engines.
What does building this cost?
No additional analytics license or attribution vendor is required. The initial GA4 setup should take an afternoon for whoever owns the property. A CRM admin adds a picklist and a hidden field. After that the recurring cost is discipline: nobody edits the channel definition without versioning it.
Start accelerating your Reddit presence
See how Klarivo can shift your visibility across AI, search and buyer communities.
Book a Demo

