Services
SEO Services
Industries
Attribution Guide · 2026
Why GA4 is lying to your CFO about SEO revenue
GA4’s default attribution model was built to report on paid advertising, not organic search. Last-click logic systematically strips 20 to 40 percent of organic’s actual contribution to pipeline and reassigns it to retargeting, paid brand, and direct channels. The fix is a measurement stack that matches your actual buyer journey.
The short answer
Last-click gives paid search the credit organic earned.
A typical B2B buyer journey starts with an organic article, follows with retargeting ads, an email, and a branded paid-search click before the demo booking. Under last-click, paid search takes 100% of the revenue credit. Organic, which started the relationship, gets zero. Repeat across every deal in the CRM and the pattern strips 20 to 40 percent of organic’s real pipeline contribution over a full year.
Attribution models
The three models worth comparing
GA4 makes all of them accessible. The accuracy and effort required differ for each. The comparison between them is where the conversation gets productive.
| Model | How it works | Best for | Watch out for |
|---|---|---|---|
| Last-touch (GA4 default) | 100% of the revenue credit goes to the final session channel before the conversion event fires. | E-commerce with short purchase windows, single-session categories, products where most buyers do not return before converting. | Breaks entirely for B2B, SaaS, and high-consideration purchases. Any buying window longer than 72 hours with multiple research touchpoints will show a severely distorted organic number. |
| First-touch | Credits the full conversion value to the channel that originated the first session. The structural opposite of last-click. | Comparing against last-touch to quantify the distortion. The gap between first-touch and last-touch organic revenue is the number the conversation starts with. | Not more accurate than last-click in isolation — it just distorts in the opposite direction. Use it for comparison, not as a standalone model. |
| Multi-touch Markov | Models buyer journeys as states and transition probabilities. Attribution uses the removal effect: how much does conversion probability drop if organic search is removed from all journeys? | B2B and considered-purchase brands. Organic’s pipeline share typically moves from 18–22% under last-touch to 35–45% under Markov for the same deal set. | Requires clean session data. If UTM tagging is inconsistent across paid channels, paid sessions misclassify as direct and inflate organic's removal effect. |
| GA4 Data-Driven (DDA) | Machine learning model trained on your account’s actual conversion path data. Applies removal-effect logic similar to Markov but stays inside the GA4 ecosystem. | Accounts that qualify (50+ conversions per week on the conversion event). A good first step requiring no additional engineering. | Cannot incorporate CRM deal values or account for dark traffic. A manually built Markov model with a CRM data join is more accurate for accounts where deal size varies. |
Multi-touch Markov is the recommended model for B2B and considered-purchase brands. See
for implementation details.GSC is not attribution data
Google Search Console shows clicks. Attribution shows revenue.
GSC shows what keywords drove impressions and clicks to your domain. It does not show anything that happened after the click. The join that makes GSC useful for attribution is a three-step connection:
- 1
GSC keyword to GA4 session
The organic keyword that drove the click becomes visible in GA4 when you connect the two properties via the GA4 + Search Console integration in GA4’s admin settings.
- 2
GA4 session to conversion path
GA4 records the session and shows the conversion path for users who converted. This is where attribution models apply.
- 3
GA4 conversion to CRM opportunity
The form submission or demo booking that registers as a conversion in GA4 needs to connect to an actual deal value in your CRM. This step separates proxy-conversion attribution from revenue attribution. Most companies doing $30K+ in paid search have never completed it.
The gap between “we have GSC connected to GA4” and “we know how much revenue organic generated” is step three. Most companies stop at step one. See the
for a quick definition, and the for what it takes to close the gap.Dark traffic
The organic credit GA4 will never assign automatically
Branded organic searches that return as direct traffic are a systematic gap that no attribution model captures correctly without adjustment.
What dark traffic is
A buyer reads an organic article, leaves, and returns three days later by typing the URL directly. GA4 logs that return visit as “direct.” The organic visit that created the awareness is not part of the conversion path — as far as GA4 is concerned.
How large the gap is
For brands with active content programs, 10 to 20 percent of what appears as “direct” in GA4 is actually a return visit driven by a prior organic session. This share is higher for longer sales cycles and higher non-branded organic impressions.
How to estimate it
Correlate branded search volume from GSC against direct session volume over time. Non-branded organic impression growth leads branded searches and direct sessions by 2 to 4 weeks. Most brands with strong organic programs see a 0.7 to 0.85 correlation.
Why it matters
Even a correctly implemented Markov model will understate organic’s contribution by 10 to 20 percent because dark traffic return sessions are classified as direct. The corrected model adds a dark traffic adjustment documented as an estimate with a confidence interval.
Paid-organic overlap
The calculation that gets SEO budget approved
Attribution models tell you what organic contributed to deals that already closed. The
calculation tells you what organic rankings could replace in your current paid spend. Not “organic generated 45,000 sessions” — the specific dollar amount of paid spend this campaign makes redundant.Pull top paid keywords by spend
Export your top 50 to 100 Google Ads keywords by spend over the trailing 3 months.
Cross-reference against GSC
Filter for keywords where organic ranking is in positions 5 to 20. These are terms where you are close to organic viability but currently buying every click.
Calculate annual paid spend on the overlap
For most brands spending $50K to $200K/yr on paid search, 15 to 30 percent of total spend concentrates in this band.
Estimate organic revenue at positions 1 to 5
Use your existing organic conversion rate on commercial-intent pages. If conversion rate is 2.5% and overlap terms get 800 combined searches per month, position-1 to position-5 rankings would generate 80 to 160 clicks per month.
Calculate payback period
Annual paid spend on overlap terms divided by annual cost of a focused organic sprint on those terms equals months to break even. For a brand with $100K/yr in paid search and 20% overlap spend, a 90-day sprint at $10K to $15K has a 6 to 9 month payback.
For brands spending $100K/yr on paid search with 20% overlap spend, the annual paid waste on organic-proximate terms is $20K. A focused 90-day sprint at $10K to $15K has a 6 to 9 month payback period.
Practical setup
A measurement setup for brands spending $30K+ on paid search
You do not need the full Markov model on day one. Start here.
Check your current attribution model in GA4
In GA4, go to Admin, then Attribution settings. If it shows “Last click,” you are seeing the default model and it is understating organic. Switch to Data-driven if your account qualifies (50+ conversions per week on the conversion event).
Audit UTM discipline across paid channels
Pull your Google Ads campaigns and verify every ad has a UTM medium, source, and campaign tag. Do the same for email sequences, LinkedIn ads, and paid social. For most accounts, 15 to 30 percent of paid traffic arrives without consistent UTM coverage.
Run the paid-organic keyword overlap query
Export top 50 Google Ads keywords by spend. Export GSC performance data for the same period. Join on keyword text. Filter for organic position 5 to 20. Rank by annual paid spend. This list is where the budget conversation starts.
Check CRM lead source capture
Look at the lead source field on the last 100 closed deals. What percentage are blank? A blank lead source means the attribution chain broke between the GA4 session and the CRM record.
Decide what you actually need
Proxy-conversion attribution using GA4 only is achievable in 2 to 3 weeks and gives you a usable model. Revenue attribution with BigQuery plus CRM join plus Markov takes 4 to 6 weeks from data access and produces the CFO-grade output.
Attribution in practice
Helpling SG: how attribution prevented a bad paid-search decision
Helpling’s Singapore operations showed a 25% drop in organic sessions over a 45-day window. The initial read was seasonality.
The attribution analysis told a different story. GSC data lake analysis isolated that 51% of the apparent decline traced to a single seasonal page whose traffic had correctly declined because the event it was built for had passed. A separate issue: an aircon cleaning guide was outranking the actual service page for commercial-intent queries.
Without attribution accuracy, the default response would have been to increase paid support on the affected terms. The attribution work showed the correct intervention was an intent mismatch fix on the service page. The fix took three weeks. The before/after conversion comparison over 45-day cohorts showed a clear recovery.
Attribution accuracy determines whether your SEO program’s decisions are based on what actually happened or what the default model reported. The two are often different enough to produce opposite strategic conclusions.
Related reading
Glossary terms and services on this topic
FAQ
SEO attribution questions answered
Stop defending SEO with bad data
See the paid-search spend your organic rankings could replace.
Our free paid-to-organic gap analysis maps the paid-search terms you keep buying, the organic coverage gaps behind them, and the revenue at stake if you cut paid. It comes back in days and tells you where the attribution conversation should actually start.