Attribution

Attribution Models for AI Traffic: Why First-Touch and Last-Touch Both Break in 2026

Multi-touch attribution for ChatGPT, Perplexity, Claude, and Google AI Overviews. Why classic MTA models break, and the hybrid AI-discovery + last-touch revenue model that holds up.

Part of the AI Search Hub — browse all 35 AI Search guides.

A founder I work with shipped one well-cited comparison page in February. By April it was the top-cited page in ChatGPT for three of his commercial queries. His GA4 first-touch report attributed exactly zero conversions to ChatGPT. His last-touch report attributed exactly zero. His Direct/(none) bucket grew 38% over the same window. The page was working. The attribution model was not.

This article is the longer companion to the ChatGPT referral analytics guide. The earlier piece showed why ChatGPT sessions hide in Direct. This one walks through what to do about it at the model layer: which classic attribution models break, where they break, how three real customer journeys play out under six different model choices, and the hybrid that holds up.

If you have not read the earlier piece, the short version is: GA4 misclassifies the majority of ChatGPT, Perplexity, Claude, and Gemini sessions because the AI clients strip the Referer header and GA4 has no built-in channel rule for AI domains [2]. That misclassification is the upstream cause of every attribution problem in this article. You can fix the model all you want; if the upstream sessions are labeled Direct, no model recovers the AI signal.

AI-aware attribution model comparison: first-touch vs last-touch vs linear vs time-decay vs U-shaped vs hybrid AI Discovery + last-non-direct, across a sample 6-touch SaaS journey

Quick Facts

MetricValueSource
Average touches per B2B SaaS purchase decision27 (research-phase total), 6-8 attribution-eligibleForrester / Aberdeen attribution research [4][7]
Median time from first AI touch to paid conversion (B2B SaaS)9.3 daysAttrifast aggregate, n=24, Q1 2026
Median time from first AI touch to paid conversion (DTC ecommerce)2.1 daysAttrifast aggregate, n=8, Q1 2026
% of ChatGPT sessions correctly attributed in default GA4 first-touch~18%Attrifast aggregate, n=38
% of converting B2B SaaS customers with at least one AI touch19-34%Attrifast aggregate, Q1 2026
Last-touch AI revenue share, B2B SaaS median4-11%Attrifast aggregate, Q1 2026
AI Discovery Share, B2B SaaS median19-34%Attrifast aggregate, Q1 2026
Year Google Analytics dropped first-click model from UI2023 (GA4)Google Analytics docs [2]
AI Overviews trigger rate, US English13-15% of queriesSearch Engine Land [10]
Median consideration window for SaaS ($30-150 AOV)14-21 daysMarketing Evolution research [3]
Median consideration window for DTC ($60-200 AOV)3-7 daysMarketing Evolution research [3]
Stripe Checkout completion event used for revenue joincheckout.session.completedStripe docs [12]

Two of those numbers do most of the work in this piece. The 9.3-day median lag between an AI discovery touch and the paid conversion is the structural reason last-touch loses the AI signal. The 18% correctly-attributed first-touch rate is the structural reason first-touch loses it too. Both models are downstream of the same upstream problem; both fail on opposite ends of the journey.

Why pre-AI attribution models break for AI search journeys

The classic attribution models were designed for a world where every meaningful touch could be observed. The observation mechanism was usually a third-party cookie set by an ad platform on the user's browser, or a referer header passed cleanly from one site to another. Both of those mechanisms have been quietly disassembled over the past five years: Safari ITP started restricting cross-site cookies in 2017, Firefox ETP followed in 2019, Chrome announced third-party cookie deprecation (which has shifted dates several times but is structurally moving forward), and the EU ePrivacy directive pushed cookieless architectures into the mainstream for any site with European traffic.

The AI clients are the latest layer of that same trend. ChatGPT, Claude, and Gemini strip the Referer header on outbound clicks not as a policy choice against attribution but as a privacy default that prevents a user's conversation context from leaking to the destination site. The effect on attribution is incidental but devastating: a session that started with an AI discovery touch loses its provenance the moment the user clicks through. Whatever model you then run on the resulting session timeline is reasoning over an incomplete graph.

EraObservation mechanismAttribution model that worked
2005-2015Third-party cookies, referer headersFirst-touch, last-touch, linear
2015-2020First-party cookies, UTMs, ad-platform server-side conversionsU-shaped, time-decay, position-based
2020-2024First-party cookies + consent, server-side conversion APIsData-driven (Google, Meta), MTA platforms
2024-2026First-party identifiers only, AI clients suppress referers, zero-click AI OverviewsHybrid: AI Discovery Share + last-non-direct

The model column in that table is not a list of which model is "best" in each era; it is a list of which model can be defensibly executed given the observation tools available. The honest read on 2026 is that no single classic model can be executed cleanly on AI traffic, and the hybrid is a workaround for that incompleteness, not a theoretical advance over what came before.

There are three specific ways AI search breaks the observation assumptions every classic model depends on. Each one needs to be understood on its own terms before the credit-allocation choice makes sense.

Break 1: the discovery touch is invisible

When a user reads a ChatGPT answer that cites your page and clicks through, the resulting session usually lands as Direct/(none) because the Referer header is stripped. The session is observed; the source is not. First-touch attribution then assigns the first observed channel as the originator, which is Direct, not ChatGPT. Linear attribution distributes equal credit across observed touches and gives the AI touch zero. Time-decay weights touches closer to the conversion but cannot weight an unobserved touch at all.

The plausible-numbers version of the problem, on a 6-touch journey where touch 1 is the ChatGPT discovery click:

Touch #Real channelChannel as observedFirst-touch creditLinear creditTime-decay credit
1ChatGPT (cited)Direct/(none)100% to Direct16.7% to Direct~3% to Direct
2Google branded searchGoogle organic0%16.7%~6%
3Direct visit (bookmark)Direct/(none)0%16.7%~10%
4LinkedIn ad clickPaid social0%16.7%~17%
5Email clickEmail0%16.7%~28%
6Google branded searchGoogle organic0%16.7%~36%
Sum100% Direct33.3% Direct, 33.3% organic, 33.3% other39% organic, 49% email/social, 13% Direct

In every model, ChatGPT receives 0% of the credit. The discovery touch is invisible to the observation layer, so no model that operates on the observation layer can recover it. The fix has to happen upstream of the model, at the session-labeling step.

Break 2: the AI Overviews zero-click outcome

Google AI Overviews and ChatGPT Search both synthesize an answer at the top of the results surface. The user reads the answer. In 13-15% of US English queries the AI Overview is present [10][16], and on the queries where it appears, click-through rate on the standard blue links drops by roughly 34.5% per Backlinko's measurement [14]. The remaining ~65% of would-be clicks become zero-click: the user got the answer, no session was created, no observation happened.

Zero-click outcomes are structurally invisible to any attribution model that requires a session as the unit of observation. The brand exposure happened (the AI Overview cited your page in its synthesis), but the unit the attribution model can act on did not. The classic MTA literature does not have a primitive for "the user saw a synthesized answer that quoted us and decided not to click."

Outcome shapeSession created?Attribution model can credit?Brand exposure happened?
Click on AI Overview citationYesYes (if referer captured)Yes
Read AI Overview, no clickNoNoYes
Click blue link below AI OverviewYes (as Google organic)YesYes
Read AI Overview, search again, click laterYes (later session)Yes (later session attributed normally)Yes (twice)

The two middle rows are the gap. Read-without-click is the dominant outcome and it does not enter the model. Read-then-search-again-later does enter the model but it enters at the later session, with no link to the earlier AI exposure. Both outcomes lose the AI signal from the perspective of any session-based attribution system.

Break 3: cross-device AI usage on mobile

The third break is operational rather than structural. AI assistants on mobile (ChatGPT iOS app, Claude iOS app, Gemini integrated into Android) often surface answers with a clickable link that opens in an in-app browser. The in-app browser is a different cookie jar from the user's Safari or Chrome; any first-party identifier you set during the AI-referred session does not exist in the user's main browser when they later return.

The user reads the answer on mobile in the ChatGPT app's in-app browser, leaves without converting, then opens Safari on the same phone two hours later, searches your brand, and converts. From your stack's perspective these are two different visitors with two different first-party identifiers and no way to stitch them.

Cross-device patternProbability of session stitchAttribution model can connect?
Same browser, same device, separate sessions90-100% (first-party cookie persistence)Yes
Same device, different browsers (e.g., in-app to Safari)~5-10% (only via identity stitch like email login)Mostly no
Mobile to desktop, same user~10-15% (only via identity stitch)Mostly no
Two devices, anonymous, both pre-purchase0%No

Cross-device stitching has been a privacy-vs-attribution tradeoff for a decade; the AI shift makes the in-app-browser fragmentation specifically worse because the AI clients now drive significant traffic and they all default to in-app browsing on mobile.

The per-engine referer pass-through rates I have measured directly across the Attrifast site sample, with caveats on sample size:

AI engineReferer pass-through rateBehavioral inference catchesCombined attribution coverage
ChatGPT (web)18-25%~70% of unreferred~85-90%
ChatGPT (desktop / mobile app)5-12%~70% of unreferred~75-80%
Perplexity (web)35-55%~70% of unreferred~88-95%
Perplexity (mobile app)12-22%~65% of unreferred~78-85%
Claude (web)8-15%~65% of unreferred~75-82%
Gemini (integrated SERP)3-9%~60% of unreferred~62-70%
Google AI Overviews citations25-40%~50% of unreferred~70-78%
Copilot (Bing AI)40-60%~70% of unreferred~88-92%

The 6 classic attribution models reviewed

Before getting into the AI-aware hybrid, the classic models deserve a clean review. Each encodes a theory of how influence flows through a journey, and each is right for some businesses and wrong for others. The Aberdeen Group's foundational attribution research [4] is still the cleanest primary source on the model taxonomy; Marketing Evolution's research notes [3] cover the operational tradeoffs.

First-touch

100% of credit to the first observed channel.

Theory: the channel that introduced the customer to the brand earned the conversion. Subsequent touches are downstream and would not have happened without the introduction.

Where it works: brand-building campaigns, top-of-funnel content investment, awareness measurement.

Where it breaks: any environment where the first touch is mis-observed. AI search is the canonical example. ChatGPT discovery touches show up as Direct, and first-touch then mis-credits Direct.

First-touch profileValue
Credit distribution100% to position 1
Best signal recoveredChannel that introduced the customer
Worst failure modeMis-observed first touch (AI in Direct)
Operational complexityLowest of all models
Storage requiredOne row per converted customer (first session ID)

Last-touch (last-click)

100% of credit to the last observed channel before the conversion.

Theory: the channel that closed the deal earned the conversion. Earlier touches were not sufficient on their own; the last touch was the necessary trigger.

Where it works: short-journey transactional businesses, branded search ad measurement, paid acquisition with same-day conversion.

Where it breaks: long-journey B2B SaaS where last-touch is almost always a branded search or Direct visit, and the entire AI-search and content-marketing investment goes uncredited.

Last-touch profileValue
Credit distribution100% to position N
Best signal recoveredChannel that closed the conversion
Worst failure modeLong-journey discovery channels uncredited
Operational complexityLowest
Storage requiredOne row per converted customer (last session ID)

Last-non-direct

Same as last-touch, but skips Direct/(none) sessions and gives credit to the last non-Direct touch.

Theory: Direct visits are usually return visits from a customer who already knows the brand; the channel that introduced them is the truer source of credit.

Where it works: any environment with meaningful Direct traffic where Direct is mostly returning visitors, which is most B2B SaaS.

Where it breaks: paradoxically, AI search. Because ChatGPT sessions get bucketed into Direct, last-non-direct skips them too. The fix is to fingerprint AI sessions out of Direct before the model runs.

Linear

Equal credit to every observed touch in the journey.

Theory: every touch contributed roughly equally to the conversion; allocating differential credit is a fiction.

Where it works: journeys with a small number of meaningful touches, exploratory analysis where you do not want to commit to a positional theory.

Where it breaks: journeys with many touches where some are obviously more important than others. Dilutes the signal of high-influence touches and overweights low-influence ones.

Time-decay

Exponentially more credit to touches closer to the conversion.

Theory: recent touches have more influence than older ones because the customer's purchase intent is highest right before the buy.

Where it works: short consideration windows, retargeting-heavy paid acquisition, ecommerce.

Where it breaks: AI search discovery touches happen disproportionately early in the journey. Time-decay systematically undercounts them even when they are correctly observed.

U-shaped (position-based)

40% to first touch, 40% to last touch, 20% distributed across middle touches.

Theory: the introducing touch and the closing touch are the two most important; middle touches are reinforcement.

Where it works: marketing teams that want explicit credit for both top-of-funnel and bottom-of-funnel investment.

Where it breaks: same as first-touch and last-touch combined. If both the first and last touches are mis-observed for AI traffic, U-shaped gives 80% of the credit to misattributed positions.

W-shaped

30% first touch, 30% lead-creation touch, 30% close, 10% middle. A B2B variant that adds the lead-creation point as a third heavy-weighted position.

Theory: in B2B journeys the lead-creation event (demo request, free trial signup) is a distinct influence inflection that deserves explicit credit alongside introduction and close.

Where it works: long-cycle B2B with explicit MQL/SQL stages, sales-assisted SaaS.

Where it breaks: bootstrapped SaaS without explicit lead stages, ecommerce, anything where the lead-creation step is not well-defined.

Data-driven

A model (typically a Shapley value approximation or a Markov chain) trained on your own conversion data assigns weights to touches based on their incremental contribution.

Theory: the right credit allocation can be learned from the data rather than assumed; weights should reflect the actual marginal lift each touch produces.

Where it works: high-volume environments with enough conversions to train a stable model (Google's DDA documentation recommends 600+ conversions per channel per month [2]). Used by Google Ads DDA, Adobe's Algorithmic Attribution [5], and most enterprise MTA platforms.

Where it breaks: low-volume bootstrapped SaaS (insufficient conversions to train), short-history sites, channels with mostly-invisible touches (AI), and any business where the model is opaque and the operator cannot explain to a board why the weights are what they are.

DDA implementationUnderlying mathMin conversions to convergeTransparency
Google Ads DDAShapley value approximation~600/channel/monthBlack box, no per-touch view
Adobe Algorithmic AttributionCustom proprietary algorithm~500/conversion typePartial, with weights visible
Markov chain MTA (custom)Removal-effect transition matrix~1,000+ for stabilityFully transparent if you wrote it
Shapley value (custom)Cooperative game theory~2,000+ touchesTransparent, computationally expensive
Logistic regression MTATouch features as regressors~5,000+ for stable coefficientsCoefficients interpretable
ModelCredit shapeBest forWorst forAI-traffic behavior
First-touch100% to firstBrand awareness measurementLong journeysCredits Direct, not AI
Last-touch100% to lastShort transactionalLong B2B journeysCredits branded search, not AI
Last-non-direct100% to last non-DirectMost SaaSSingle-session conversionsSkips Direct-bucketed AI
LinearEqual per touchExploratoryDiluted signalUnderweights single AI touch
Time-decayRecency-weightedShort windows, retargetingLong discovery cyclesUndercounts early AI
U-shaped (40/20/40)First + last heavyBrand + close emphasisMis-observed positionsDoubly mis-credited
W-shaped (30/30/30/10)First + MQL + closeSales-led B2BNo lead stageSame issue as U-shaped
Data-drivenLearned weightsHigh-volume environmentsLow-volume, opaque to boardModel still operates on Direct-labeled AI

A useful framing: every classic model is making a positional assumption about where credit belongs. Every classic model also depends on the observation layer correctly identifying the channel of each touch. AI search violates the observation assumption for most of its discovery touches. No matter which positional theory you pick, if the channel labels are wrong, the credit allocation is wrong.

AI search makes attribution harder in three specific ways

The three breaks described earlier deserve to be stated as a single framework, because the fix is different for each.

BreakSymptomRoot causeWhere the fix lives
Discovery-touch invisibilityAI session shows up as Direct/(none)Referer header stripped by AI clientUpstream session labeling (server-side fingerprinting)
Zero-click AI OverviewsBrand exposure with no sessionAI synthesizes answer at the top of the SERPSeparate reporting metric (impressions from GSC)
Cross-device in-app browsingUser researched on mobile, converted on desktopIn-app browser is a separate cookie jar from main browserIdentity stitch (email login, deterministic match)

The discovery-touch fix is the one most operators can ship in a week. Server-side referer fingerprinting against the known AI-engine domain list (chatgpt.com, chat.openai.com, perplexity.ai, claude.ai, gemini.google.com, copilot.microsoft.com) plus behavioral inference on unreferred deep-page entries recovers 85-95% of AI sessions into a labeled AI Engines channel. The implementation pattern is in the practical track-ChatGPT-traffic guide, the Perplexity, Claude, and Gemini guide, and the AI Overviews piece. Once the upstream labeling is correct, any attribution model that operates on the labeled sessions can at least see the AI touches.

The zero-click fix is reporting-side: pull the Google Search Console performance report filtered to queries where AI Overviews appear (you have to maintain your own list of those queries; GSC does not surface AIO presence directly), sum the impressions, and report them as an "AI brand exposure" metric in a separate row. Do not roll the impressions into the revenue attribution model. They are not sessions; they are not conversions; they are influence signal that belongs in a different column of the dashboard.

The cross-device fix is the hardest because there is no clean cookieless solution. The honest mitigation is identity stitching at the points the user does identify (email signup, account login, Stripe Checkout email match), accepting that anonymous-to-anonymous cross-device journeys are a known undercount. On the Attrifast customer base in Q1 2026 the median cross-device coverage rate via email-stitch is 62-78% of converting customers, leaving a 22-38% slice that goes uncredited at the cross-device join. There is no model fix for that slice; it is a measurement boundary.

The hidden-touch problem: ChatGPT as the silent discovery channel

The hidden-touch problem is what happens when an attribution model is run on a session timeline that is missing the first 1-3 touches because they were AI-originated and dropped into Direct. The model produces an answer; the answer is wrong; the operator makes a budget decision based on the wrong answer; the wrong budget decision compounds over quarters.

A concrete shape from a real audit. The customer was a vertical-SaaS company, ~$3.1M ARR, with a content-marketing investment of about $14,000/mo. Their GA4 first-touch report attributed 0% of conversions to ChatGPT, 0% to Perplexity, 0% to Claude. Their channel-investment review was about to defund content because "the data showed organic content wasn't driving conversions."

After one month of Attrifast running alongside GA4, the same conversions reattributed as:

Channel (re-attributed)First-touch share (real)First-touch share (GA4 reported)
ChatGPT (cited content pages)14.7%0%
Google organic31.2%31.4%
Perplexity3.9%0%
Direct (genuine bookmark/URL paste)7.8%28.1%
Branded paid search22.4%22.4%
Email11.6%11.7%
Paid social4.1%4.1%
LinkedIn organic3.7%1.9%
Other / Unassigned0.6%0.4%

The defund-content decision would have been the wrong call. ChatGPT alone was responsible for 14.7% of first-touch conversions, all of which traced back to the content pages the team was about to defund. The content investment was working; the attribution model was lying about it.

The pattern is consistent across the customer base. The median "hidden AI first-touch share" across the 38 Attrifast sites in Q1 2026 sits at 17.4% for B2B SaaS and 5.9% for DTC, with high variance by category:

Site categoryHidden AI first-touch share (median)Hidden AI first-touch share (90th percentile)
Bootstrapped B2B SaaS, $200k-$2M ARR19.2%31.4%
Mid-market B2B SaaS, $2M-$20M ARR16.1%27.3%
DTC ecommerce, $100-$500 AOV7.8%14.1%
DTC ecommerce, $20-$100 AOV3.2%8.7%
Developer tools, OSS-adjacent28.7%41.2%
Content publisher (B2B media)24.3%38.9%
Local services2.1%6.4%
Regulated (healthcare, legal)5.9%12.8%

The pattern: developer tools and B2B media sit at the high end because their buyers actively use AI assistants for vendor research. Local services and regulated verticals sit at the low end because the buyers' search patterns favor map results and brand-credential-driven Google SERPs. If your category is in the top rows of the table, the hidden-AI-first-touch correction is the single largest re-allocation a correct attribution model will produce on your dashboard.

Three real journey examples worked through 6 models each

The cleanest way to see how the model choice changes the answer is to run three realistic journeys through six different credit allocations and show the resulting per-channel credit table. I have built these journeys to match the median patterns I see in the Attrifast customer base; the numbers are illustrative but the shapes are real.

Journey 1: B2B SaaS, $99/mo subscription, 11-day consideration

A small marketing-ops team is researching a new tool. The buyer is the team lead.

Touch #DayReal channelChannel as observedNotes
1-11ChatGPT citation clickDirect/(none)Buyer asked ChatGPT for vendor comparison, clicked the cited result
2-9Google organic (long-tail blog)Google organicBuyer searched a specific feature query, landed on a blog post
3-7LinkedIn organicLinkedIn referralBuyer saw a founder post and clicked through to the site
4-4Email (newsletter signup)EmailBuyer joined the newsletter, clicked through on the next issue
5-2Direct (URL recall)Direct/(none)Buyer remembered the domain and typed it in
60Google branded searchGoogle organic (branded)Buyer searched the brand name, clicked the top result, converted

Six touches, 11-day window, conversion on touch 6. The credit allocation under each model:

ModelChatGPTGoogle organicLinkedInEmailDirect
First-touch (default observation)0%0%0%0%100%
First-touch (AI-aware labeling)100%0%0%0%0%
Last-touch0%100%0%0%0%
Last-non-direct (default labeling)0%100%0%0%0%
Linear (default labeling)0%33.3%16.7%16.7%33.3%
Linear (AI-aware labeling)16.7%33.3%16.7%16.7%16.7%
Time-decay (default labeling)0%~47%~12%~22%~19%
Time-decay (AI-aware labeling)~3%~47%~12%~22%~16%
U-shaped (default labeling)0%40%~7%~7%47%
U-shaped (AI-aware labeling)40%40%~7%~7%7%
Data-driven (default labeling)model decidesmodel decidesmodel decidesmodel decideslikely heavy on Direct + branded
Hybrid (AI Discovery + last-non-direct)Discovery: counted, Revenue: 0%Revenue: 100%Revenue: 0%Revenue: 0%Revenue: 0%

Two reads from this table. First, the "default observation" rows for first-touch, linear, and U-shaped all credit Direct heavily even though the real first touch was ChatGPT. Switching to AI-aware labeling moves the credit where it belongs. Second, the hybrid row at the bottom does something the other rows do not: it counts ChatGPT in the AI Discovery Share metric (which says "this converting customer had a ChatGPT touch") without claiming ChatGPT closed the deal. The revenue allocation goes to Google organic (the last non-Direct touch), which is honest about which channel was operationally closest to the close.

Journey 2: DTC ecommerce, $89 product, 3-day consideration

A consumer is shopping for a kitchen tool.

Touch #DayReal channelChannel as observedNotes
1-3Perplexity citation clickDirect/(none)User asked Perplexity for the best version of a product category
2-2Google AI Overviews (read, no click)not observedUser searched a follow-up query, read the AIO, did not click
3-1Meta retargeting ad clickPaid socialRetargeting fired based on the Day -3 visit's pixel
40Direct (URL recall)Direct/(none)User remembered the brand, typed the URL, converted

Four touches but only three of them produced a session. The credit allocation:

ModelPerplexityAIOMeta retargetingDirect
First-touch (default labeling)0%not observed0%100%
First-touch (AI-aware labeling)100%not observed0%0%
Last-touch0%not observed0%100%
Last-non-direct0%not observed100%0%
Linear (default labeling)0%not observed33.3%66.7%
Linear (AI-aware labeling)33.3%not observed33.3%33.3%
Time-decay (default labeling)0%not observed~30%~70%
Time-decay (AI-aware labeling)~8%not observed~30%~62%
U-shaped (default labeling)0%not observed20%80%
U-shaped (AI-aware labeling)40%not observed20%40%
Hybrid (AI Discovery + last-non-direct)Discovery: counted, Revenue: 0%Discovery: counted as impression, Revenue: 0%Revenue: 100%Revenue: 0%

The shape that matters here is the AI Overviews row. The AIO touch happened (the user read a synthesized answer that included the brand) but it produced no session. No session-based attribution model can credit it. The hybrid does something specific: it tracks the AIO impression separately in the AI Discovery Share metric using GSC impression data, so the dashboard can show "this customer's journey included an AIO impression on a brand-adjacent query" without crediting the conversion to AIO.

Journey 3: B2B SaaS with a sales-assisted close, $1,200/mo, 47-day consideration

An enterprise team evaluates a tool over six weeks. The buyer is a director with a small evaluation committee.

Touch #DayReal channelChannel as observedNotes
1-47ChatGPT citation click (comparison query)Direct/(none)Director asked ChatGPT for vendor shortlist
2-43Google organic (long-form pillar page)Google organicDirector searched a category term, read pillar content
3-38LinkedIn ad click (founder ad)Paid socialSaw a sponsored post in the LinkedIn feed
4-29Direct (return visit)Direct/(none)Came back to read pricing
5-28Email (gated whitepaper)EmailDownloaded whitepaper, joined the nurture sequence
6-19Webinar registration (LinkedIn ad)Paid socialSaw a webinar promo, registered
7-17Webinar attended (replay link from email)EmailWatched the webinar
8-10Demo request (organic, brand search)Google organic (branded)Booked a demo from the pricing page
9-7Demo attended (sales call)not observed (offline)30-min sales call with AE
10-3Pricing email (sales rep follow-up)EmailNegotiated terms
110Stripe Checkout click (sales-provided link)Direct/(none)Director paid the first invoice

Eleven touches, 47-day window, sales-assisted close. The credit allocation gets messy fast:

ModelChatGPTGoogle organicPaid socialEmailDirect
First-touch (default labeling)0%0%0%0%100%
First-touch (AI-aware labeling)100%0%0%0%0%
Last-touch0%0%0%0%100%
Last-non-direct0%0%0%100% (touch 10)0%
Linear (10 observed touches)0%20%20%30%30%
Linear (AI-aware, 11 observed)~9.1%18.2%18.2%27.3%27.3%
Time-decay (default labeling)0%~10%~18%~42%~30%
U-shaped (default labeling)0%~7%~7%~7%80%
W-shaped (default, lead = touch 8)0%30% (touch 8 lead)~3%~3%63% (first + close both Direct)
W-shaped (AI-aware, lead = touch 8)30% (first)30% (lead)~3%~3%33% (close)
Data-driven (likely Google)model decideslikely heavymediummediummedium
Hybrid (AI Discovery + last-non-direct)Discovery: counted, Revenue: 0%Revenue: 0%Revenue: 0%Revenue: 100%Revenue: 0%

The hybrid says: this customer's journey included a ChatGPT touch (so AI Discovery Share counts it), and the revenue went to email (the last non-Direct touch, which was the sales rep's follow-up). Both statements are true. Neither dominates the other. The dashboard shows both numbers, and the operator gets a non-distorted view of how the influence and the close decomposed.

The W-shaped row is interesting too. On a sales-assisted close where the demo request is a clear lead-creation event, the W-shaped model with AI-aware labeling produces a defensible "first-touch + lead + close" allocation that gives 30% credit to ChatGPT, 30% to the demo-request touch (Google organic), 30% to the close (the sales-provided Direct link), and 10% distributed across the middle. That is closer to the operator's intuition about how the journey actually worked than any of the other classic models produce.

The hybrid model: AI Discovery Share plus last-non-direct revenue allocation

The hybrid is the model I run by default at Attrifast and the model I recommend to most customers. It is not a theoretical advance over the classic models; it is a pragmatic workaround for the observation gaps AI search creates. The architecture has two layers and they answer different questions.

Layer 1: AI Discovery Share. A pre-funnel influence metric that asks, "for every customer who converted in the period, did they have at least one observed AI-engine touch during their consideration window?" The metric is the percentage of converting customers who had at least one AI touch in a configurable window (default 30 days for B2B SaaS, 7 days for DTC). It is not a credit allocation; it is a presence count. The number cannot exceed 100% and is interpretable without arguing about positional weights.

Layer 2: Last-non-direct revenue allocation. A classic last-non-direct attribution model for the revenue line itself. Direct/(none) sessions are skipped; the credit goes to the most recent non-Direct touch. With AI-aware upstream labeling (so ChatGPT sessions are not in Direct), this model honestly credits the channel that was operationally closest to the conversion without over-crediting brand-recall Direct visits.

The two layers run on the same session table and are reported side by side. The dashboard shape:

ChannelAI Discovery ShareLast-non-direct revenue shareLast-non-direct revenue $
ChatGPT22.4%6.1%$9,140
Perplexity8.7%3.4%$5,090
Claude4.1%1.2%$1,800
Gemini / Google AIO11.3%2.7%$4,050
Copilot1.8%0.4%$600
AI subtotal34.1% (deduped)13.8%$20,680
Google organicn/a (not an AI touch)42.1%$63,120
Branded paid searchn/a18.3%$27,420
Emailn/a14.7%$22,040
Paid socialn/a8.4%$12,590
Othern/a2.7%$4,070

The "AI subtotal" row is the headline. 34.1% of converting customers had at least one AI touch (deduped because a single customer could have ChatGPT and Perplexity touches both). 13.8% of revenue is allocated to AI under last-non-direct. The gap (34.1% - 13.8% = 20.3 percentage points) is the AI Discovery Influence Gap, and it is the slice of customers who had an AI touch during research but whose final converting touch was a non-AI channel (typically branded search, organic, or email). The gap is not double-counting; it is two different questions answered honestly.

QuestionMetric to readWhat it tells you
"How influential is AI in our customer journey?"AI Discovery SharePre-funnel influence, customer-coverage
"Which channel earned the last-mile conversion?"Last-non-direct revenue shareRevenue allocation by closing channel
"How much of our investment should AI receive?"Read both, weight by categoryDiscovery + close; do not pick one
"Did our recent GEO investment pay off?"AI Discovery Share over timeTrend on the pre-funnel metric
"Is our branded search budget too high?"Compare last-non-direct branded search to AI Discovery ShareIf branded close ≈ AI discovery, AI is doing the work

The last row is the most operationally useful. If your branded-search last-touch revenue is climbing and your AI Discovery Share is climbing in lockstep, the branded searches are likely the closing touch on AI-discovered customers. Cutting the branded-search budget would not save the spend; it would just decredit the closing channel for a journey that AI already initiated. The two metrics together let you make that call. Either one alone hides it.

How Attrifast handles AI touches in its attribution engine

A short architectural note, because the article would be dishonest without acknowledging the author's interest. Attrifast's attribution engine has four stages and they run on every incoming request.

The session-labeling step is the upstream fix that makes everything downstream possible. The Stripe webhook join is the layer that produces revenue numbers instead of session counts. The dashboard renders both the AI Discovery Share and the last-non-direct revenue allocation in two columns next to each other, so an operator answering "did GEO work?" can read both numbers in five seconds without re-running queries or switching tools.

The thing the diagram does not show is what is intentionally not in the engine. There is no proprietary data-driven weighting model running in the background. There is no machine-learned attribution that an operator cannot explain to their board. The math is transparent. The source data is the customer's own first-party session table. The two views (AI Discovery + last-non-direct) are computed deterministically and either can be exported to CSV for further modeling in a tool of the customer's choice.

The pricing is $29/mo for the base tier that includes the AI Discovery Share view and the per-engine revenue split. The waitlist for the higher tier with the GEO content engine bundled is at attrifast.com. The free trial path is attrifast.com/login.

Setting up an AI-aware attribution model in 4 steps

If you want to ship the hybrid on your own stack rather than buying a tool, the four steps are tractable in a sprint.

Step 1: Server-side AI session labeling

Detect AI engines at the edge by inspecting Referer, User-Agent, and UTM parameters in your server middleware. The minimal domain list to match:

chatgpt.com, chat.openai.com, perplexity.ai, www.perplexity.ai,
claude.ai, gemini.google.com, copilot.microsoft.com,
vertexaisearch.cloud.google.com

Each match writes the AI engine label to a first-party session row in your database. The Next.js middleware implementation is in the practical ChatGPT tracking guide; the cross-engine version is in the Perplexity, Claude, Gemini guide; the AIO-specific surface is in the AI Overviews piece.

Step 2: Behavioral inference for unreferred AI sessions

For the ~65-80% of AI sessions where the Referer is stripped, the recovery is behavioral. The classifier I run inputs four features: landing-page depth (deep > shallow), visitor newness (new > returning), referer presence (empty > present), and page-shape signal (FAQ block present > absent, question-shaped H2s > statement-shaped). A weighted score above a threshold tags the session as suspected-ai with a confidence percentile. On the Attrifast site sample the classifier hits 78-86% precision and 70-82% recall against UTM-tagged ground truth.

FeatureWeightDirection
Landing-page depth >= 3 path segments0.30+
New visitor (first session this 30-day window)0.20+
Empty Referer header0.25+
FAQ block present on landing page (FAQPage schema or .faq section)0.15+
Question-shaped H2 within first viewport0.10+

Threshold of ~0.65 produces the precision/recall numbers above. Tune for your own site by hand-labeling 200 sessions and computing the confusion matrix.

Step 3: Stripe webhook join

On checkout.session.completed, look up the customer's session history by your first-party identifier, and persist the customer-to-sessions join. The minimum Stripe webhook handler logic:

  1. Receive the webhook event.
  2. Extract the customer ID and the metadata field (which should contain your first-party visitor ID, set at Checkout creation time).
  3. Look up all sessions belonging to that visitor ID over the last 30-90 days.
  4. Write a customer_journey row with the ordered session timeline.
  5. Compute AI Discovery Share (did any session have an AI engine label?) and last-non-direct attribution (what was the most recent non-Direct touch?) in a single SQL query or analytics view.

Idempotency matters. Stripe webhook delivery is at-least-once [12]; duplicate checkout.session.completed events for the same checkout must not double-count revenue. Store the event ID and check before writing.

Step 4: Two-view dashboard

Render two side-by-side tables in your reporting tool: one for AI Discovery Share (per AI engine, with the deduped total) and one for last-non-direct revenue allocation (per channel, with AI engines as a subgroup). Use the same time window and the same denominator on both views.

StepEffortCoverage gainTool path
1. Server-side labeling4-8 hrs~20% of AI sessions (the referer-passing slice)Custom middleware or Attrifast
2. Behavioral inference8-16 hrs+65-75% of AI sessions (the unreferred slice)Custom classifier or Attrifast
3. Stripe webhook join4-8 hrsRevenue line for all attributed sessionsCustom handler or Attrifast
4. Two-view dashboard2-4 hrsOperator-readable model outputBI tool or Attrifast
Total18-36 hrs85-95% of AI sessions, revenue-joined

The total is a sprint of work for a competent engineer, or a 2-minute install for a vendor that ships the pattern. The build-vs-buy call comes down to whether you have an engineer who is going to maintain this in 18 months when the AI engine list changes (it will) and the Stripe webhook schema evolves (it will).

When you need MTA versus when last-touch is enough

Multi-touch attribution is operationally heavier than last-touch. The heaviness pays off when the underlying journey is multi-touch in shape. When it is not, MTA adds complexity without information. The decision criteria:

Business shapeUse MTA whenLast-touch is fine when
Median time-to-conversion> 7 days< 24 hours
Median number of touches per converter> 31-2
Channel mix4+ channels each contributing > 5%1-2 channels dominate
Sales motionSales-assisted, demo, trialPure self-serve impulse
AOV / LTVHigh enough to warrant the analytics investmentLow-margin volume
Reporting audienceBoard / VC / committeeFounder solo
AI search exposureSignificant Direct/(none) inflation observedDirect stable, no AI hidden touches

A practical rule: if your last-touch report shows that >70% of revenue is "branded search" or "Direct," MTA will almost certainly redistribute that into a more honest channel mix. If your last-touch report shows a long-tail of distinct channels each driving 5-15% of revenue, MTA will refine the picture but probably will not change the budget allocation enough to justify the operational cost.

For most bootstrapped SaaS in the $200k-$2M ARR band, the honest answer is: run the hybrid (AI Discovery Share + last-non-direct revenue) and stop. The full MTA (linear, time-decay, U-shaped, W-shaped, data-driven) becomes worth running once you have enough monthly conversions (~600+ per Google's DDA threshold [2]) and a stable enough channel mix that the model weights are not noise.

ARR bandRecommended attribution modelWhy
<$200kLast-non-direct onlySample size too small for MTA stability
$200k-$2MHybrid: AI Discovery + last-non-directCaptures AI signal without MTA overhead
$2M-$20MHybrid + U-shaped or W-shaped overlayMulti-touch journeys matter; sales motion explicit
$20M+Hybrid + data-driven MTAVolume justifies model training; opacity acceptable to ops team

Common AI attribution mistakes I see operators make

Eight patterns I have seen often enough to call them mistakes, with the fix.

Mistake 1: Switching GA4's attribution model and expecting AI to appear. GA4's attribution model setting operates on channel labels GA4 has already assigned. If your ChatGPT sessions are in Direct, no model switch will recover them. Fix: instrument upstream first-party AI labeling before touching the model setting.

Mistake 2: Running first-touch alone on a B2B SaaS journey. First-touch on a long-journey business gives 100% of credit to the introducing touch, which is often correctly observed as ChatGPT in an AI-aware stack but is also a single moment in a 30+ day window. Pair first-touch with at least one other view. The hybrid (Discovery + last-non-direct) is my default.

Mistake 3: Running last-touch alone on the same journey. Inverse of mistake 2. Last-touch gives 100% to the closing touch, which is almost always branded search or Direct. AI search, content marketing, and brand investment all disappear from the report. Fix: same as above.

Mistake 4: Treating AI Discovery Share as if it were revenue. AI Discovery Share is a presence count, not a credit allocation. It does not sum across customers to revenue. Reporting it as "AI drove $X" is misleading. Report it as "X% of converting customers had an AI touch," which is what it actually is.

Mistake 5: Treating last-non-direct AI revenue as if it captured all AI influence. Inverse of mistake 4. Last-non-direct AI revenue is the slice of conversions where AI was both the last non-Direct touch and arrived via a labeled AI session. It will systematically be lower than the true AI influence because many AI-discovered customers convert on a later non-AI touch. Report both.

Mistake 6: Trying to build a Markov-chain MTA on 50 monthly conversions. Data-driven attribution requires hundreds of conversions per channel for the weights to stabilize. Below that volume the model is overfitting to noise and producing weights that swing 30% month-over-month. Fix: stay on hybrid or U-shaped until volume justifies DDA.

Mistake 7: Counting AI Overviews impressions in the same column as click-attributed revenue. AIO impressions are influence; they are not sessions. Rolling them into the revenue column inflates the AI line by an order of magnitude. Fix: report AIO impressions in a separate row labeled "AI brand exposure" with no revenue attribution attached.

Mistake 8: Ignoring cross-device AI journeys entirely. Mobile-AI-to-desktop-conversion is a real and growing pattern. The undercount is structural and partly unfixable in a cookieless world. Fix: implement email-based identity stitching at every point the user identifies themselves (newsletter signup, Checkout, account creation) and report the known cross-device undercount as a footnote on every AI revenue chart.

What changes about your analytics process when you fix this

The shape of the monthly attribution review changes once the hybrid is running. Before/after framework:

Review sectionBefore AI-aware attributionAfter AI-aware attribution
Channel mix headline"Direct up, brand strong""Direct flat, AI Discovery Share up, GEO compounding"
Content investment decisionBased on Google organic trafficBased on AI Discovery Share contribution + Google organic
Paid search budget decisionBased on last-touch revenueBased on last-touch + AI Discovery Share overlap
Quarterly content briefSEO keyword + clusterSEO keyword + AI citation hook + AI Discovery target
Vendor evaluation"Do we need a new analytics tool?""Do we need a Stripe-native AI attribution layer?"
Attribution model choiceOne model, applied uniformlyHybrid: AI Discovery + last-non-direct, both shown
Cross-channel comparisonRPV by channelRPV by channel + AI Discovery weight
Cohort definitionFirst-touch channelFirst-touch channel + AI touch flag
Long-tail content ROIHard to measure, often defundedMeasurable via AI Discovery Share contribution
AIO and zero-click reportingIgnoredSeparate row with impression count from GSC
Board attribution narrative"X% from each channel""X% Discovery influence + Y% revenue close, with AI as both"

The board-narrative row is the one with the most downstream consequence. The narrative "AI is responsible for 22% of customer discovery and 6% of last-touch revenue" is true, defensible, and actionable. The narrative "AI drove 6% of revenue" is incomplete and will cause the team to underinvest in GEO. The narrative "AI drove 22% of revenue" is overstated and will cause overinvestment plus an awkward correction in two quarters. The hybrid lets you say the true thing.

Limitations and what this article does not cover

Six things this article deliberately does not handle, and you should not extrapolate past them.

  • Cross-domain MTA in a cookieless world. The hybrid covers single-domain attribution well. Multi-domain (e.g., parent brand + multiple product sites) requires identity stitching that is out of scope here. The honest path is email-based deterministic stitch at known identification points.
  • Voice-mode AI assistants. Voice queries to ChatGPT, Claude, Gemini, Alexa, Siri produce zero session and zero impression in your analytics tool. There is no measurement story for voice-mode AI brand exposure in 2026.
  • Offline conversions. Sales-assisted SaaS deals closed in a Zoom call do not produce a session at the conversion moment. Stripe webhook firing is the closest proxy but introduces lag and decoupling.
  • B2B account-level attribution. Everything in this article is contact-level. Account-level attribution (rolling up multiple contacts at one company into one journey) needs additional logic; the hybrid still applies but the AI Discovery Share denominator changes from converting contacts to converting accounts.
  • Multi-currency, multi-product Stripe. The Stripe webhook patterns described assume single-currency and a single product subscription. Multi-currency and product-mix decompositions are downstream and not covered here.
  • Channel attribution for non-revenue events. This article focuses on the join from sessions to paid Stripe events. Attribution for trial signups, demo bookings, and email captures uses the same architecture but with different conversion events.

FAQ

What is the best attribution model for AI search traffic in 2026?

There is no single best model. The pattern that holds up across the SaaS and ecommerce sites I have measured is a hybrid: a separate pre-funnel metric called AI Discovery Share that counts every AI touch a converting customer had during their consideration window, plus last-non-direct attribution for revenue allocation. The AI Discovery Share metric prevents the discovery-touch bias that ChatGPT's referer-stripping creates against first-touch. The last-non-direct revenue allocation prevents the over-crediting of brand-recall return visits that pure first-touch produces. Together they give you a defensible answer to both "where did this customer hear about us" and "which channel earned the conversion."

Why does first-touch attribution break for ChatGPT and Perplexity?

Because the ChatGPT and Perplexity clients strip the Referer header on most outbound clicks, so the first session lands as Direct/(none) in GA4 and most tools. First-touch attribution then assigns the conversion to Direct, not to the AI engine. Across the Attrifast customer base in Q1 2026, the median rate at which ChatGPT-originated sessions appear correctly attributed to ChatGPT in first-touch GA4 is under 18%. Without server-side AI-engine fingerprinting, first-touch systematically underweights AI discovery and overweights Direct. The fix is either to instrument referer fingerprinting and behavioral inference at the edge, or to switch the model to last-non-direct, which preserves the AI signal at the conversion end of the journey.

Why does last-touch attribution also break for AI search journeys?

Last-touch breaks because most AI-cited customers do not convert on the AI-referred session itself. They land via a ChatGPT citation, read the answer, leave, search the brand name two days later, click an ad or an organic result, and convert. Last-touch then gives 100% of the credit to the branded search ad or to Direct, and 0% to the ChatGPT touch that initiated the journey. On the 38-site Attrifast aggregate the median time from first AI touch to paid conversion is 9.3 days for B2B SaaS and 2.1 days for DTC. The longer the consideration window, the more last-touch undercounts AI. The fix is a multi-touch model with an AI-aware credit-allocation rule, or a separate AI Discovery Share metric that runs in parallel with last-touch.

How do I credit AI Overviews touches when there is no click?

You cannot, directly. An AI Overviews impression where the user reads the synthesized answer and does not click is a zero-click outcome with no server-side session to attribute. The honest measurement approach is a two-layer split: track AI Overviews clicks (the 10-15% that actually click through) via server-side referer fingerprinting against vertexaisearch.cloud.google.com and the related Google AIO destinations, and track AI Overviews impressions separately via the Google Search Console performance report filtered to queries with AIO presence. Sum the two as an upper-bound AI Overviews influence number. Do not roll the impressions into your revenue model, because most will not produce traffic; report them as a brand-exposure metric in a separate row.

What is a multi-touch attribution model and how does it differ from first-touch or last-touch?

Multi-touch attribution (MTA) distributes conversion credit across two or more touches in a customer journey rather than concentrating it on a single touch. Classic MTA models include linear (equal credit per touch), time-decay (more credit to touches closer to the conversion), U-shaped or position-based (40% first, 40% last, 20% middle), W-shaped (30% first, 30% lead, 30% close, 10% middle), and data-driven (a model trained on your conversion data assigns weights). Each model encodes a different theory about when in a journey influence matters most. First-touch and last-touch are degenerate cases of MTA that put 100% of the weight on one position. The reason MTA exists at all is that real B2B and considered-purchase journeys involve 4-12 touches on average per the Aberdeen Group's foundational attribution research, and assigning all credit to one of them is throwing away most of the signal.

How does Attrifast handle AI touches in its attribution engine?

Attrifast captures every session a visitor has on your domain into a first-party session table, tags each session with an AI-engine label (ChatGPT, Perplexity, Claude, Gemini, Copilot, or none) via referer fingerprinting plus behavioral inference on unreferred deep-page entries, joins the session timeline to Stripe customer payments via a webhook handler, and exposes the journey in two views: a last-non-direct revenue allocation for the primary channel report, and an AI Discovery Share view that surfaces every AI touch a converting customer had during a configurable consideration window (default 30 days). The two views answer different questions and the dashboard shows both side by side. There is no proprietary "data-driven" weighting model running in the background; the math is transparent, the source data is the customer's own first-party session table, and either view can be exported to CSV for further modeling.

When do I actually need multi-touch attribution versus last-touch?

You need MTA when your median time-to-conversion is more than seven days, your customer journey has more than three meaningful touches before purchase, and your channel mix includes multiple paid and earned sources that would each plausibly claim credit under last-touch. That description fits most B2B SaaS, considered-purchase DTC ($200+ AOV), and most service businesses with a sales cycle. Last-touch is honestly fine for impulse ecommerce ($30 AOV, same-day conversion), branded-search-heavy paid acquisition, and any business where the median customer's journey is a single session. The cost of MTA is operational complexity; the cost of last-touch on a long-journey business is that AI search, content marketing, and brand investment all look unprofitable. Pick the model that does not lie about the channel you most need to evaluate.

Do I need to switch attribution models in GA4 to track AI search correctly?

Switching the attribution model in GA4 does not help if the AI sessions never reach GA4 as AI-labeled in the first place. GA4 lets you choose between data-driven, last-click, first-click, linear, time-decay, and position-based models in the Advertising > Attribution settings. All of them operate on the channel labels GA4 has already assigned to sessions. If ChatGPT sessions are in Direct/(none) and Perplexity sessions are split between Referral and Direct, every GA4 attribution model will under-credit AI. The fix is upstream: server-side first-party tracking that labels AI sessions correctly before they ever enter the attribution model. After that, the choice between GA4's models matters about as much as on non-AI traffic, which is to say much less than vendors imply.

Can I build a multi-touch attribution model for AI traffic in spreadsheets?

Yes, for small data sets and short journeys. Export your session-level data with AI-engine labels and timestamps from a first-party tool, export your Stripe paid customers with timestamps and customer IDs, join on a session-to-customer key, then apply a credit-allocation formula in a pivot table. The constraint is data volume: above roughly 5,000 monthly conversions and 50,000 monthly sessions the join cost in Excel or Google Sheets gets painful, and any model retraining (data-driven weights) becomes infeasible. For most SMB SaaS and DTC the spreadsheet approach works fine for the first year. The reason to graduate to a tool is operational, not analytical: you want the model to run continuously, not to be a quarterly artifact.

Does multi-touch attribution work in a privacy-first cookieless world?

It does, with constraints. MTA requires stitching multiple sessions to one identifier so the credit-allocation algorithm sees a complete journey. In a third-party-cookie world that stitching was done by cross-domain advertising cookies. With third-party cookies deprecated (Safari ITP, Firefox ETP, Chrome's announced 2024 plan), the stitching has to use first-party identifiers scoped to your own domain. That works inside one site and breaks if the user crosses devices without logging in. The honest accommodation is to treat single-device MTA as the default and accept that cross-device cross-domain MTA in a privacy-first world is a partial-coverage problem. For most SMB SaaS and DTC sites the single-device coverage is 70-85% of conversions, which is enough signal to make channel decisions.

What is the relationship between AI Discovery Share and revenue attribution?

AI Discovery Share answers the question "what percentage of our converting customers had at least one AI-engine touch during their consideration window." It is a pre-funnel influence metric, not a revenue allocation. Revenue attribution answers the question "which channel gets the dollar credit for this conversion." The two diverge for AI because AI touches are disproportionately discovery-side, and the brand-search or Direct touch that actually converts is the one that wins the revenue-allocation contest under last-touch. Reporting both side by side prevents the systematic underestimation of AI investment that happens when only one number is shown. On the Attrifast customer base in Q1 2026, AI Discovery Share for B2B SaaS sits at 19-34% while last-touch AI revenue share sits at 4-11%. Both numbers are real; they describe different things.

How long should my consideration window be for AI Discovery Share?

The window should match the median time from first touch to conversion for your business plus a 50% safety margin. For B2B SaaS with median 9-14 day time-to-conversion, 30 days is a reasonable default. For DTC ecommerce with 2-3 day time-to-conversion, 7-14 days. For long-cycle enterprise SaaS with 30-90 day cycles, 90 days. The window should not be set arbitrarily long, because longer windows allow stale AI touches to claim influence credit that they did not earn. Tune by histogram analysis of your own session-to-conversion lag distribution. Recompute the window quarterly because AI engines are moving the distribution.

Should I use GA4's data-driven attribution or build my own MTA?

If you have under 600 monthly conversions per channel you cannot reliably use GA4 DDA; the model under-converges and Google falls back to last-click silently. If your AI sessions are mostly in Direct (because you have not instrumented AI labeling), GA4 DDA will also under-credit AI regardless of conversion volume. The decision tree: if (a) you have the conversion volume and (b) your sessions are correctly labeled at the channel level, GA4 DDA is fine for non-AI traffic and add an AI Discovery Share overlay for AI specifically. If either (a) or (b) is missing, build the hybrid first.

How do I sell my CFO on a separate AI attribution model?

Show them the Direct/(none) growth chart for the last 90 days and the AI Discovery Share number if you can produce it. If Direct has grown more than 15 percentage points with no obvious branding event, the parsimonious explanation is unattributed AI traffic. If AI Discovery Share is 20%+ and last-touch AI revenue is 5%, the gap is real influence that the current model is failing to capture. The CFO question is rarely "is this real?" and more often "is the new model gameable?" The answer is that the hybrid is not gameable because both views are deterministic computations on first-party data, not weighted models with adjustable knobs. The math is transparent and the CFO can verify it on the underlying data.

References

  1. OpenAI. "Overview of OpenAI's bots and how to control them." https://platform.openai.com/docs/bots
  2. Google Analytics. "Default channel group definitions for GA4, and attribution model documentation." https://support.google.com/analytics/answer/9756891
  3. Marketing Evolution. "Multi-touch attribution: a complete guide." https://www.marketingevolution.com/marketing-essentials/multi-touch-attribution
  4. Aberdeen Group / Aberdeen Strategy & Research. "Marketing attribution research." https://www.aberdeen.com/research/
  5. Adobe. "Algorithmic Attribution and Marketing Mix Modeling whitepapers." https://business.adobe.com/products/analytics/attribution.html
  6. McKinsey & Company. "The state of AI in marketing." 2024-2025. https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai
  7. Forrester Research. "Cross-channel attribution and B2B journey research." https://www.forrester.com/research/
  8. Profound. "AI search citation and attribution research." https://www.tryprofound.com/
  9. Aggarwal et al. "GEO: Generative Engine Optimization." arXiv preprint, 2023-2024. https://arxiv.org/abs/2311.09735
  10. Search Engine Land. "Google AI Overviews coverage and trigger-rate tracking, 2024-2026." https://searchengineland.com/library/google/google-ai-overviews
  11. The Verge / OpenAI. "ChatGPT hits 1 billion daily messages." December 2024. https://www.theverge.com/2024/12/04/24313097/chatgpt-1-billion-messages-daily-openai
  12. Stripe Docs. "Checkout Session object, webhooks, and at-least-once delivery." https://docs.stripe.com/api/checkout/sessions/object
  13. Stripe. "Revenue recognition documentation." https://docs.stripe.com/revenue-recognition
  14. Backlinko. "How AI Overviews are affecting organic CTR." 2024. https://backlinko.com/ai-overviews-study
  15. Anthropic. "Claude usage and capability documentation." https://docs.anthropic.com/
  16. Semrush. "AI Overviews research: trigger patterns and citation density." Q4 2025. https://www.semrush.com/blog/ai-overviews-research/
  17. Plausible Analytics. "How to track ChatGPT and AI search traffic." April 2024. https://plausible.io/blog/chatgpt-traffic
  18. Cloudflare Radar. "AI Insights and bot traffic dashboard." https://radar.cloudflare.com/ai-insights
  19. Pew Research Center. "Americans' use of generative AI, 2024-2025." https://www.pewresearch.org/internet/
  20. Google Developers. "Google-Extended user agent for Vertex AI and Gemini training." https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers
  21. MDN Web Docs. "Referer header reference." https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer
  22. Ahrefs. "Google search CTR by position, 2025 update." https://ahrefs.com/blog/google-search-ctr-2025/

For the practical implementation code that powers the AI session-labeling layer, see the practical track-ChatGPT-traffic guide, the Perplexity, Claude, and Gemini guide, and the AI Overviews piece. For the strategic question of how AEO and SEO split, the AEO vs SEO in 2026 piece is the companion. For the revenue-evidence framework that motivates running attribution at all, does GEO actually drive revenue walks the 4-layer evidence stack. For the ChatGPT-specific analytics shape that this article generalizes from, the ChatGPT referral analytics guide is the deeper source. For AI brand presence tracking across all major engines, see the multi-LLM AI visibility tracker piece and the 2026 GEO tactics playbook. If you want the same revenue-attribution architecture for your own stack rather than rolling it yourself, the revenue attribution feature page walks the product side end to end.

Related reading

Analytics13 min
Does Google Know Everything About Your Website?
Google sees almost every visit, click, and conversion on your site, but GA4 hands you a degraded slice. Here is what Google knows that you do not.
AI Search27 min
Why Bing SEO Now Matters for ChatGPT and Copilot Visibility in 2026
ChatGPT search and Microsoft Copilot both lean on the Bing index, so Bing SEO — long ignored — is now an AI-search lever. Here is what is documented, what is inferred, and the Bing quick wins most teams skip.
Strategy32 min
Is AEO Replacing SEO? The Honest 2026 Answer From Someone Running Both
AEO is not replacing SEO, but the people saying 'SEO is fine' are also wrong. The third option nobody is selling, with operator data from a year of running both stacks side by side.
Attribution26 min
Agentic Commerce in 2026: How to Track and Attribute Revenue When AI Agents Are the Buyers
A 2026 field guide to agentic commerce attribution — what breaks when an AI agent (ChatGPT Operator, Claude Computer Use, agentic checkout) buys on a human's behalf, why the referrer is the agent not the discovery source, and how to even see agent purchases with user-agent fingerprinting plus a Stripe join.
Attribution27 min
AI-Influenced Conversions: The Hidden 30-40% of Your Revenue (and How to Measure It)
An AI-influenced conversion is one where the buyer touched an AI engine before they paid. Across 200 Stripe-connected sites, 30-40% of paying conversions had at least one AI touch. Here is the precise definition, the 4 journey patterns, the detection methods, and why last-touch hides all of it.

Find revenue hiding in your traffic

Discover which marketing channels bring customers so you can grow your business, fast.

Start free trial →

5-day free trial · $29/mo · cancel anytime