Attrifast
ProductAI visibilityPricingDocsBlog
Log inStart free trial
ProductAI visibilityPricingDocsBlogLog in
Product
  • Track Website Traffic
  • Attribution Software
  • Website Visitor Tracking
  • SEO Dashboard
  • Analytics for SaaS
  • Revenue by Source
  • Traffic Source Tracking
  • Revenue Channel Attribution
  • Revenue Attribution
  • Privacy-First Analytics
  • Cookieless Analytics
  • UTM to Revenue
  • AI Visibility Score
  • Share of Voice (AI)
  • Prompt Tracking
  • AI Citation Tracking
  • ChatGPT Rank Tracker
  • AI Revenue Attribution
  • Pricing
Track AI Traffic
  • Track ChatGPT Traffic
  • Track Perplexity Traffic
  • Track Claude Traffic
  • Track Gemini Traffic
  • Track AI Overviews
  • Track Copilot Traffic
  • ChatGPT Revenue Attribution
  • Perplexity Revenue Attribution
  • Claude Revenue Attribution
  • Gemini Revenue Attribution
  • AI Visibility to Revenue
Use Cases
  • Stripe Analytics
  • Shopify Analytics
  • Stripe Attribution
  • For Bootstrapped SaaS
  • Affordable Attribution
Compare
  • vs Profound
  • vs Loamly
  • vs Peec AI
  • vs Otterly
  • vs Cometly
  • vs Segment
  • vs Google Analytics
  • vs Plausible
  • vs Fathom
  • vs Simple Analytics
  • vs PostHog
  • vs Matomo
  • vs Umami
  • vs Pirsch
  • vs Mixpanel
  • vs Amplitude
  • vs Heap
  • vs Hyros
  • vs AnyTrack
  • vs DataFast
  • vs Similarweb
  • All comparisons
Resources
  • GEO Hub
  • AEO Hub
  • AI Search Hub
  • Research
  • Best Conversion Tracking Software
  • ChatGPT vs Google Traffic
  • Mixpanel Alternative
  • Track Channel Revenue
  • First vs Last Touch
  • Cookieless Conversion Tracking
  • GA4 Attribution Limits
  • CAC by Channel
  • Stripe Conversion Tracking
  • Stripe Revenue Tracking
  • AEO vs SEO 2026
  • AI Traffic Benchmark
  • How to Rank in ChatGPT
  • Best AEO Tools 2026
  • Measure GEO ROI
  • Schema for AI Search
  • Dark AI Traffic in GA4
  • What Is Referral Traffic?
  • What Is Direct Traffic?
  • What Is Cookieless Analytics?
  • What Is Conversion Attribution?
  • AI Share of Voice
  • Documentation
  • View all posts
  • Multi-Touch Attribution
  • Free Tools
  • UTM Builder
  • UTM Checker
  • ROI Calculator
  • AI Readiness Checker
  • AI Crawler Directory
  • SEO + GEO Workflow
Company
  • About
  • Contact
  • Return Delay Penalty
  • Backlink RPV Scoring
  • AI Instructions
  • Live Demo
  • FAQ
  • Log in
© 2026 Attrifast · built by Vincent Ruan & Jessica Huang
AboutContactTermsPrivacy
Blog / Attribution

The AI Search Attribution Gap: GA4 Says 0.1%, Your Signup Survey Says 10.6% — Payment Data Says Something Else

12 min readUpdated Aug 2026
Vincent Ruan
Vincent RuanFounder, Attrifast · July 19, 2026 · 12 min read

Otterly's signup surveys found Claude driving 10.6% of signups while GA4 showed 0.1% — a 106× gap. Both numbers are honest, and both are wrong in different directions. Here is what the three measurement methods — last-click analytics, self-report surveys, and payment-verified joins — can and cannot see, with Stripe-verified data from 200 sites.

Part of the AI revenue attribution hub, the AI Search Hub, and the tracking guide for ChatGPT traffic.

TL;DR

  • Otterly.ai — a competitor of ours, credit where due — published a signup-survey study in July: Claude drives 10.6% of their signups, while Google Analytics credits it 0.1% [1]. A 106× gap between what users say and what analytics sees.
  • Both numbers are honestly produced and both are wrong in different directions: GA4 undercounts because AI clients strip the referrer (65–82% of ChatGPT visits land in Direct [2][4]); surveys overcount noisily because memory, response rates, and vocabulary are fuzzy — and they stop at the signup, so they never see dollars.
  • The third method — a server-side join between the AI-referred session and the Stripe payment — is the only one that outputs revenue. Across our 200-site benchmark: 34% of GA4 "Direct" is AI-referred, the median SMB undercounts AI traffic by 64%, and AI visitors convert at 2.7% vs 1.4% for Google organic [3].
  • The practical move is a measurement ladder, not a tool war: keep the survey (it proves the gap), patch GA4 (it recovers the surviving referrers), and add the payment join (it turns the gap into a dollar figure). See the per-engine revenue split inside Attrifast → Start free trial

In early July, Otterly.ai published one of the more useful data points of the year in AI search measurement: across their own signup surveys, 10.6% of new users said they found the product through Claude, while Google Analytics attributed 0.1% of signups to it [1]. They titled the post around that discrepancy, and they were right to — a 106× gap between the user's account and the analytics tool's account is not a rounding error. It is a broken measurement layer.

Full disclosure before anything else: Otterly is a competitor. They monitor AI search visibility; we do revenue attribution for AI traffic. I am writing about their study because it is good, honest, first-party data that deserves engagement — and because their survey method and our payment-join method disagree in an instructive way. This post is about why the three available measurement methods produce three different numbers from the same traffic, what each one structurally cannot see, and what the payment-verified version of the same question looks like across the 200 Stripe-connected sites in our benchmark [3].

The 106× gap, and why both of its endpoints are honest

Start by taking both numbers seriously, because both were produced in good faith.

Share of signups attributed to Claude — same company, same period, two methods
Share of signups attributed to Claude — same company, same period, two methods

Source: Otterly.ai signup-survey study, July 2026 — 'Claude Drives 10.6% of Our Signups. Google Analytics Says 0.1%'

GA4's 0.1% is not a bug in GA4. It is GA4 accurately reporting what arrives at its doorstep. When a user clicks a link inside a Claude or ChatGPT answer, the AI client frequently strips the Referer header; the visit lands on your site carrying no origin, and GA4 files it — correctly, given what it can see — under Direct/(none). Independent measurements and our own detection data put 65–82% of ChatGPT-originated visits in that Direct bucket [2][4]. The engines differ (some Perplexity clicks keep a referrer; Copilot referrals arrive more intact; in-app browsers behave differently from web clients), but the direction is the same everywhere: the referrer dies in transit more often than it survives.

The survey's 10.6% is honest in the opposite way. It asks the one witness who was actually there — the user — and the user does not need a referrer header to remember "I asked Claude which tool to use and it suggested you." That is exactly the information the analytics layer lost, recovered from memory. This is why survey numbers for AI discovery run an order of magnitude or two above analytics numbers essentially everywhere the comparison has been run.

So the gap is real. Where I part ways with the survey method is on what to do next — because a survey has structural limits of its own, and they matter as soon as you try to spend money based on the number.

What each method can and cannot see

There are three ways to attribute an AI-originated customer today. They are not competing answers to the same question; they are different instruments with different blind spots.

Last-click analytics (GA4)Signup survey (self-report)Payment-verified join (server-side)
What it measuresReferrers that survive transitWhat respondents rememberSessions joined to Stripe payments
AI visits with stripped referrer❌ Filed as Direct✅ Recovered from memory✅ Recovered from detection signals
Response/coverageEvery visitThe fraction who answerEvery session + every payment
Numeric precisionPrecise but wrong bucketDirectional, noisyPrecise, transaction-grade
Sees revenue (not just signups)Partially, if e-comm configured❌ Stops at signup✅ Dollars per engine, RPV, MRR
Continuous monitoring✅❌ Point-in-time✅
Cost to runFreeCheapA tracking script + webhook

The survey's blind spots are worth spelling out, because they are less discussed than GA4's:

  • Response bias. Only a fraction of signups answer the "how did you hear about us" box, and the ones who do skew toward engaged users. You are extrapolating from a self-selected sample.
  • Recall compression. Users report the last memorable touch, not the first. "Claude told me about you" and "I'd seen you on X for months, then asked Claude to compare tools" produce the same survey answer and very different attribution truths.
  • Vocabulary noise. "AI", "ChatGPT" (used generically for every chatbot), "a friend sent me a link", and "Google" (meaning the AI Overview at the top of Google) all blur category boundaries in free-text answers.
  • It ends at the signup. This is the structural one. A survey can tell you 10.6% of signups mention Claude. It cannot tell you whether those signups became paying customers, what they paid, or whether Claude-attributed customers are worth more or less than Google-attributed ones. For a revenue decision, signups are the wrong denominator.

What the payment-verified version of the number looks like

Attrifast's approach is the third row of the table: detect AI-referred sessions server-side using every signal that survives (intact referrers, engine-specific URL parameters like utm_source=chatgpt.com, and known AI client patterns), store a first-party identifier, and join that identifier to the Stripe payment webhook when money actually moves. No memory, no sampling — a session and a transaction, joined on the server.

Before the aggregate numbers, here is what the method's output looks like on a single site — not a mockup, this is our own dashboard on one of our own products, last 30 days (domain and page paths blurred):

The AI tab of the Attrifast dashboard on one of our own sites: 109 AI-engine visits over 30 days split by engine — ChatGPT 82, Copilot 10, Claude 6, Gemini 6, DeepSeek 2, Perplexity 2, Grok 1 — alongside 6,156 total visitors and $1,150 in attributed revenue

The AI tab reads 109 visits — 1.8% of the site's 6,156 — with ChatGPT carrying 82 of them, then Copilot, Claude, and Gemini in single digits. Every row is a session detected server-side, not a survey answer, and each engine carries its own conversion and revenue line downstream. Small counts, individually attributable: exactly the shape last-click analytics is worst at surfacing, and the shape the benchmark below describes at population scale.

Across the 200 Stripe-connected sites in our benchmark [3], that method produces four numbers that frame the same gap Otterly found, from the revenue side:

What's actually inside GA4's 'Direct' bucket
What's actually inside GA4's 'Direct' bucket

Source: Attrifast 200-site Stripe-connected benchmark, 2025-06 to 2026-05

34% of the traffic sitting in GA4's Direct bucket is AI-referred. Not exotic long-tail traffic — ChatGPT, Perplexity, Claude, and Gemini visits whose referrer died in transit. If your Direct share has been creeping up for six quarters while "nothing changed," this is the most likely reason.

AI traffic: what the median SMB dashboard reports vs what detection finds
AI traffic: what the median SMB dashboard reports vs what detection finds

Source: Attrifast 200-site Stripe-connected benchmark, 2025-06 to 2026-05

The median SMB undercounts its AI traffic by 64%. For every 100 AI-referred visits arriving, the default analytics setup correctly labels about 36. The other 64 are financing your "Direct is growing" chart.

Conversion rate: AI-referred visitors vs Google organic
Conversion rate: AI-referred visitors vs Google organic

Source: Attrifast 200-site Stripe-connected benchmark, 2025-06 to 2026-05

AI-referred visitors convert at 2.7%, versus 1.4% for Google organic in the same cohort. A visitor who arrives from an AI answer has usually already had the comparison conversation — the engine did the shortlisting before the click. Independent studies point the same direction: Lantern's cohort analysis found AI-referred visitors converting at multiples of search visitors [5]. This is why the attribution gap is expensive rather than merely annoying: the traffic you are mislabeling is your highest-intent traffic.

Revenue per visitor by AI engine (USD)
Revenue per visitor by AI engine (USD)

Source: Attrifast 200-site Stripe-connected benchmark, 2025-06 to 2026-05

Revenue per visitor ranges from $0.87 (ChatGPT) to $1.42 (Perplexity) to $1.94 (Claude). Claude sends the least volume and the most valuable visitors — a fact you cannot learn from a survey (signups, not dollars) or from GA4 (the sessions are in Direct). Ranking engines by visit count inverts their actual revenue order.

Notice what these numbers do to the survey-vs-GA4 debate: they don't split the difference, they change the units. The interesting question was never "is it 0.1% or 10.6% of signups" — it was "what is this channel worth," and neither of the first two methods can answer it even in principle.

Both endpoints of the 106× gap are honest, and neither is the number you should budget against. The payment-verified one is — Attrifast produces it by joining each AI session to the Stripe invoice it became.

Get the verified number →

How to close the gap yourself, in ascending order of effort

You do not need to buy anything to start; the first two steps are free.

1. Keep the survey — as a tripwire, not a measurement. A "how did you hear about us" box is genuinely useful evidence that the gap exists in your funnel. When survey mentions of AI run far ahead of your analytics attribution, you have confirmed the mislabeling locally. Just resist putting the survey percentage in a budget model — it is a direction, not a denominator.

2. Patch GA4 with a custom channel group. Build an "AI search" channel matching the referrers that do survive — chatgpt.com, perplexity.ai, gemini.google.com, copilot.microsoft.com — plus utm_source=chatgpt.com (which ChatGPT itself appends to some outbound links). Step-by-step guides exist [6]. This is free and recovers the surviving minority. Be clear-eyed about the ceiling: you are recovering the 18–35% of visits whose referrer arrived intact, not the majority that arrive as Direct, and GA4 still cannot join any of it to a Stripe invoice without an export project. We wrote up the mechanics of where the traffic hides in our dark-traffic breakdown.

3. Add the payment join. Server-side detection plus a session-to-payment webhook join is the step that changes the units from sessions to dollars. That is the thing Attrifast is: a 4kb first-party script that detects AI-referred sessions, and a Stripe webhook join that credits each payment to the engine that sent the customer — RPV, conversion, and MRR per engine, continuously, at $9.99/mo. The methodology behind the benchmark numbers above is published on our research page.

A fair question is whether the three methods ever agree. Directionally, yes — and that agreement is the useful diagnostic. On sites running all three, the pattern is consistent: the survey says "AI is a real channel," the patched GA4 shows a small-but-growing AI channel, and the payment join shows the same channel 2–4× larger than patched GA4 with a conversion rate roughly double the site average. When your three instruments disagree in that shape, the instruments are working; each is measuring the layer it can see.

The scoreboard

QuestionSurveyGA4 (patched)Payment join
"Is AI search sending us customers?"✅ Yes/no signal✅ Partial count✅ Full count
"Which engine sends the most visitors?"❌ Too noisy⚠️ Surviving referrers only✅
"Which engine sends the most revenue?"❌❌✅ RPV per engine
"What is our AI-attributed MRR?"❌❌✅
"Is the gap real for us?"✅ The cheapest proof✅ Before/after patch delta✅ Quantified in dollars

Otterly's study proved the gap with the survey method, and it deserves the attention it got — the 106× number made more founders check their Direct bucket than any tutorial on referrer plumbing ever has. The step after believing the gap exists is measuring it in the only unit that budgets understand. Payments don't misremember, don't skip the survey, and don't strip their own referrer.

A short product note, since the article should not pretend the author has no interest: Attrifast is the payment-join method productized — AI session detection joined to Stripe on every checkout.session.completed webhook, with per-engine RPV and revenue reported continuously. Where a survey tells you AI drove signups and GA4 tells you it drove almost nothing, the dashboard tells you which engine drove which dollars. The 200-site benchmark cited throughout is our aggregated, anonymized customer data; the methodology is on the research page.

Sources

Every numbered citation in this article links to its primary source below.

  1. [1]Claude Drives 10.6% of Our Signups. Google Analytics Says 0.1% — measuring AI search conversions — Otterly.ai (2026).
  2. [2]Why ChatGPT referral traffic doesn't show in analytics (65–82% lands in Direct/none) — Attrifast (2026).
  3. [3]AI Traffic Revenue Benchmark 2026 — 200 Stripe-connected sites, per-engine RPV and conversion — Attrifast (2026).
  4. [4]ChatGPT referral traffic study — May 2026 measurement of AI referral patterns — SE Ranking (2026).
  5. [5]ChatGPT drives 87% of AI referral traffic — cohort conversion analysis — Lantern (2026).
  6. [6]How to track AI traffic in Google Analytics 4 — custom channel group setup — Analytics Mania (2026).
  7. [7]Are AI sites like ChatGPT sending your website traffic? — Seer Interactive (2026).
  8. [8]Google AI Overviews linked to 25% drop in publisher referral traffic — Digiday (2025).
  9. [9]How to track ChatGPT and AI traffic in Google Analytics — Surfer SEO (2026).
  10. [10]ChatGPT traffic tracker — AI chatbot referral volumes — Similarweb (2026).

FAQ

What is the AI search attribution gap?

The AI search attribution gap is the difference between how much of your traffic and revenue actually originates from AI engines (ChatGPT, Claude, Perplexity, Gemini) and how much your analytics tool credits to them. It exists because AI clients strip or generalize the Referer header, so most AI-referred visits land in GA4's Direct/(none) bucket. The gap is large: Otterly measured 10.6% of signups self-attributing to Claude while GA4 showed 0.1% — a 106× difference — and Attrifast's 200-site Stripe benchmark finds 34% of GA4 'Direct' traffic is actually AI-referred.

Why does GA4 show almost no AI search traffic?

Three plumbing reasons. First, AI chat clients frequently strip the Referer header when a user clicks a link inside an answer, so the visit arrives with no source and GA4 files it as Direct/(none). Second, in-app browsers and API-driven agents identify inconsistently, scattering visits across Direct, Unassigned, and generic referral buckets. Third, GA4's default channel groups only started recognizing some AI referrers recently, and only when the referrer survives. Independent measurements and our own data put 65–82% of ChatGPT-originated visits in the Direct bucket — so a GA4 report can show 0.1% while the true share is orders of magnitude higher.

Are 'how did you hear about us' surveys accurate for AI attribution?

They are directionally valuable and numerically fuzzy. Surveys catch what analytics miss — a user who found you in a ChatGPT answer knows it, even if GA4 filed them under Direct — which is why survey numbers run far above analytics numbers. But they have known failure modes: only a fraction of signups answer, respondents misremember or name the last memorable touch rather than the first, vocabulary is inconsistent ('AI', 'ChatGPT', 'a friend sent a link'), and a signup survey can never tell you which answers became paying customers or what they spent. Treat the survey as proof the gap exists, not as the measurement.

How do you measure revenue from AI search traffic accurately?

Move the measurement server-side and tie it to payments. The reliable pattern has three parts: detect AI-referred sessions at the edge using every available signal (surviving referrers, engine-specific URL parameters like utm_source=chatgpt.com, and known AI client patterns), store a first-party identifier scoped to your own domain, then join that identifier to the payment event — the Stripe invoice or checkout webhook — on the server. The join produces per-engine revenue, conversion rate, and revenue per visitor from transactions rather than memory. It is the only method of the three that outputs dollars.

How much AI search traffic do SMBs really get?

More than their dashboards say. Across Attrifast's 200-site Stripe-connected benchmark, 34% of traffic sitting in GA4's Direct bucket is actually AI-referred, and the median SMB undercounts its AI traffic by 64%. The revenue skew is bigger than the traffic skew: AI-referred visitors convert at 2.7% versus 1.4% for Google organic in the same cohort, and revenue per visitor ranges from $0.87 (ChatGPT) to $1.94 (Claude). Small visit counts, disproportionate revenue — which is exactly the combination last-click analytics is worst at surfacing.

Can I fix AI attribution inside GA4 alone?

Partially. You can build a custom channel group matching known AI referrers (chatgpt.com, perplexity.ai, gemini.google.com, copilot.microsoft.com) and add exclusions so those referrals stop landing in generic buckets. This recovers the minority of visits where the referrer survives — worth doing, and free. What it cannot recover is the majority where the header was stripped before arrival, and GA4 cannot join a recovered session to a Stripe payment without a separate integration project. A GA4 channel group narrows the gap; it does not close it.

Reading this with an AI assistant?Ask Perplexity about this article →Read this article as markdown →

About the author

Vincent RuanFounder, Attrifast

Vincent Ruan is the founder of Attrifast, an analytics platform for website traffic, customer-level revenue and AI brand visibility, which he built after spending two years duct-taping GA4 exports to Stripe payouts for the Shopify store he and Jessica Huang started in 2021. He wrote the first 4kb tracking script himself, ships every backend webhook handler, and maintains the 200-site Stripe-connected benchmark cited in this post. Before Attrifast he ran growth and analytics for two bootstrapped products and watched ITP 2.3 quietly evaporate 30%+ of his paid-search attribution overnight.

  • X
  • vince-ruan.com
  • LinkedIn

Related reading

Analytics15 min
Google Analytics Conversion Tracking: The Complete 2026 Setup, Then the Honest Limits
Set up GA4 conversion tracking properly — key events, the Google Ads link, purchase events, server-side — then the five things GA4 cannot tell you.
AI Analytics14 min
What Is AI Visibility? The 2026 Definition, and How to Measure It
AI visibility is how often AI engines surface your domain across a defined prompt set. What it measures, how to score it, and why it means little on its own.
Guides16 min
What Is Conversion Attribution? Models, Examples, and What Breaks Them
Conversion attribution assigns credit for a sale to the touchpoints that led to it. How the models differ on the same sale, and why 34% of credit goes wrong.
Guides16 min
What Is Cookieless Analytics? How It Works, and Why It Measures More
Cookieless analytics measures your site without third-party cookies — no consent banner, no blocked data. How it works and how much more it captures.
Guides17 min
What Is Direct Traffic? What's Really Inside the Bucket (Data from 200 Sites)
Direct traffic is any visit with no referrer, but only 28% is real type-ins. Inside GA4's Direct bucket: why 34% is misfiled AI traffic, and how to fix it.

See which AI engines actually send you paying customers

Attrifast splits ChatGPT, Perplexity, Claude and Gemini into their own revenue lines — joined to real Stripe payments, not estimates.

  • ✓One script tag and a Stripe key — live in minutes
  • ✓Cookieless, so no consent banner for analytics
  • ✓Every AI referral matched to the payment it produced
Start your free trial →

7-day free trial · $0 due today · then $9.99/mo · cancel anytime

Attrifast dashboard: prompt-level AI visibility with estimated value, revenue split by channel across ChatGPT, Google, Perplexity, Claude and Direct, competitor position tracking, and per-engine scan settings.