Marketing Attribution Models
Why attribution is a modeling choice, not a measurement
A customer rarely converts off a single touchpoint. They might see a display ad, click a Google search ad two weeks later, read a blog post from organic search, click an email link, and finally convert after typing the brand name directly. Every one of those five touchpoints contributed — but credit for the conversion has to be assigned somehow, and there is no objectively correct way to split it. Attribution models are different assumptions about how credit should flow across a multi-touch journey, and switching models can change which channel looks like your best performer without any change in actual customer behavior.
Single-touch models: first-touch and last-touch
The two simplest models each assign 100% of conversion credit to one touchpoint:
- First-touch attribution credits the very first interaction that brought the user into your ecosystem. It favors top-of-funnel channels (organic search, display, social) and answers "what discovers customers for us?"
- Last-touch (last-click) attribution credits the final interaction before conversion. It favors bottom-of-funnel channels (branded search, retargeting, direct) and answers "what closes customers for us?"
Both are easy to compute and remain the default in most ad platforms' self-reported conversion numbers, which is precisely why platform-reported numbers from Google Ads, Meta, and GA4 rarely agree with each other — each platform's last-click model only sees its own touchpoints, so every platform tends to over-credit itself.
Platform numbers will never sum to 100% of your revenue
Multi-touch models: linear, time-decay, and position-based
Multi-touch attribution (MTA) splits credit across every touchpoint in the journey using a defined weighting rule:
- Linear — equal credit to every touchpoint. Simple, avoids ignoring the middle of the funnel, but treats a brand's first blog visit as equally valuable as the final checkout click, which is rarely true.
- Time-decay — more credit to touchpoints closer to conversion, less to earlier ones, typically using an exponential decay curve. Useful for longer sales cycles where recency genuinely correlates with influence.
- Position-based (U-shaped) — a fixed split, commonly 40% to first touch, 40% to last touch, 20% distributed across the middle touchpoints. Explicitly values both discovery and closing while still acknowledging the middle of the journey happened.
Data-driven attribution (DDA) is different in kind, not just degree: rather than applying a fixed rule, it uses a statistical model (Google's implementation uses a Shapley-value-style algorithm) trained on your own converting and non-converting paths to assign credit based on each touchpoint's actual, empirically observed incremental contribution. It requires enough conversion volume to train reliably — Google's own guidance is a practical minimum around 300+ conversions per 30-day window per channel or campaign grouping for the model to be statistically meaningful.
Attribution model comparison
| Model | Credit distribution | Best for | Weakness |
|---|---|---|---|
| First-touch | 100% to first interaction | Measuring discovery / awareness channels | Ignores everything that closed the deal |
| Last-touch | 100% to final interaction | Simple, matches ad platform defaults | Over-credits bottom-funnel/branded channels |
| Linear | Equal split across all touches | Long consideration cycles, no bias | Treats trivial and pivotal touches the same |
| Time-decay | More weight to recent touches | Shorter urgency-driven sales cycles | Undervalues early discovery channels |
| Position-based (U-shaped) | 40/20/40 first–middle–last | Balancing discovery and closing | Arbitrary fixed weights, ignores actual behavior |
| Data-driven (DDA) | Statistically modeled per touchpoint | High-volume accounts with rich conversion data | Needs conversion volume; a black box, hard to audit |
Why GA4's default model differs from what platforms report
GA4 defaults to data-driven attribution at the property level for reporting, and it evaluates the full cross-channel journey as recorded in GA4's own data — not just the touchpoints a single ad platform can see. Google Ads, by contrast, reports conversions using its own last-click-within-Google-Ads model by default (or its own DDA scoped only to Google Ads touchpoints), meaning it literally cannot see or credit a Meta ad or organic search touch that happened earlier in the same journey.
This is the single most common source of "why don't my numbers match" confusion between GA4 and Google Ads: they aren't measuring the same thing. GA4 sees the whole recorded cross-channel journey (subject to its own tracking gaps — no cross-device stitching without login IDs, consent-mode data loss, etc.); Google Ads only sees its own slice and assumes it deserves the credit for closing.
-- Approximate multi-touch journey length from GA4 BigQuery export
-- (requires a stitched user_pseudo_id / user_id across sessions)
SELECT
user_pseudo_id,
COUNT(DISTINCT
(SELECT value.string_value FROM UNNEST(event_params)
WHERE key = 'session_traffic_source_last_click.manual_source')
) AS distinct_traffic_sources,
COUNTIF(event_name = 'session_start') AS total_sessions
FROM `project.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260101' AND '20260131'
GROUP BY user_pseudo_id
HAVING total_sessions > 1
ORDER BY distinct_traffic_sources DESC
LIMIT 100No model is 'correct' — pick one for a decision, not for truth
What's next
Attribution models explain how credit flows across channels once a journey happens at all, but they still measure only what tracking can see — cookie and pixel-based multi-touch data. When privacy restrictions erode that visibility, marketing mix modeling becomes the complementary (or alternative) measurement approach.
Next: Marketing Mix Modeling (MMM) →
I build these systems professionally.
Whether it's a RAG pipeline, analytics migration, or AI workflow — let's talk.