Attribution Modeling
Build an attribution model that credits the channels and touchpoints that actually drive signups, so budget goes to what works.
Why
Last-touch attribution (credit the final click) over-funds bottom-of-funnel channels (branded search, direct) and under-funds the top-of-funnel channels (content, social) that started the journey — the result is you defund the channels that create demand and overfund the channels that harvest it. Multi-touch attribution (credit every touchpoint) fixes this but requires tracking the full journey, which most tools do poorly. The practical approach is a blended model: data-driven attribution (Google's algorithmic model) for the top 80% of spend, and incrementality testing (geo-holdouts) for the 20% you're unsure about. Without honest attribution, the team optimizes the model's blind spots (buying branded search that would have converted anyway) and defunds the channels that actually create new customers. The discipline is to measure incrementality quarterly — a channel that looks great on attribution but shows zero lift in a holdout is harvesting, not creating.
When
When paid spend is >$10k/mo across 2+ channels. Build attribution before scaling; bad attribution at 10x spend wastes 10x money.
How
1. Instrument every touchpoint: ad click → landing page → signup → activation → payment, with a user_id and channel at each step 2. Start with Google's data-driven attribution (DDA) for Google channels — it uses your actual conversion data to weight touchpoints algorithmically 3. For non-Google channels, use a position-based model (40% first-touch, 40% last-touch, 20% middle) as a reasonable default 4. Build a unified view: combine Google, Meta, and direct analytics into one dashboard with consistent channel definitions 5. Quarterly, run incrementality tests: hold out one geo (e.g. stop ads in Canada for 4 weeks) and measure the signup drop — that's the channel's true lift 6. Compare attributed signups to incremental signups: if attribution says 100 but incrementality shows 20, the channel is 80% harvesting (would have happened anyway) 7. Reallocate budget from harvesting channels to creating channels: branded search (harvesting) → content/SEO (creating) 8. Re-measure quarterly; attribution drifts as channels and audience behavior change, and a model that was right in Q1 is wrong in Q3
Example
# Attribution setup (multi-channel, $40k/mo spend) Touchpoints tracked: ad_click → landing → signup → activation → payment # Data-driven attribution (Google) + position-based (Meta, Reddit) Channel | Attributed | Position-based | Incremental (geo holdout) Google Search| 180 | 160 | 170 (95% real → creating) Branded SRCH | 120 | 100 | 20 (17% real → harvesting!) Meta | 90 | 110 | 85 (94% real → creating) Reddit | 60 | 80 | 65 (108% → creating, under-attributed) # Incrementality test (branded search, 4-week geo holdout) Stopped branded search ads in Canada for 4 weeks Result: signups dropped 20 (not 120) → branded search is 83% harvesting → Reallocate $8k/mo from branded search to Reddit (creating channel) # After reallocation (Q2) Reddit spend: $8k → $16k | Signups: 65 → 130 (incremental lift confirmed) Branded search: $12k → $4k | Signups: 120 → 105 (only 15 lost — was harvesting)
Common Problems
- ⚠Using last-touch attribution that credits branded search and direct, defunding the top-of-funnel channels that create the demand.
- ⚠Trusting attribution without incrementality testing; a channel can show 100 attributed signups and 0 incremental lift.
- ⚠Different channel definitions across Google, Meta, and analytics, so the numbers never reconcile and the team argues instead of acting.
- ⚠Never re-measuring attribution; the model that was right when paid was $5k/mo is wrong at $50k/mo because audience saturation changes the dynamics.
Best Practices
- ✓Use data-driven attribution (not last-touch) to credit top-of-funnel channels that start the journey; last-touch defunds demand creation.
- ✓Run quarterly incrementality tests (geo-holdouts) to measure true lift; attribution without incrementality is a model, not a measurement.
- ✓Reallocate from harvesting channels (branded search, direct) to creating channels (content, social) based on incrementality, not attribution.
- ✓Use consistent channel definitions across all tools so the numbers reconcile and debate ends.