Attribution Modeling
Understanding and implementing attribution models to accurately measure marketing effectiveness.
What Is Attribution?
Attribution assigns credit for conversions to the marketing touchpoints that influenced them.
The Attribution Challenge
Customer Journey:
─────────────────────────────────────────────────────────────────────────
Day 1 Day 5 Day 12 Day 15 Day 20
─────────────────────────────────────────────────────────────────────────
Google Ad → Blog Post → Email → Retargeting → Direct
(Paid) (Organic) (Owned) (Paid) (Direct)
│
▼
Purchase
Question: Which channel gets credit for the $100 purchase?
Attribution Models
Last Click
All credit to the final touchpoint.
| Channel | Credit | |---------|--------| | Google Ad | 0% | | Blog Post | 0% | | Email | 0% | | Retargeting | 0% | | Direct | 100% |
Best for: Short sales cycles, direct response
First Click
All credit to the initial touchpoint.
| Channel | Credit | |---------|--------| | Google Ad | 100% | | Blog Post | 0% | | Email | 0% | | Retargeting | 0% | | Direct | 0% |
Best for: Brand awareness analysis
Linear
Equal credit to all touchpoints.
| Channel | Credit | |---------|--------| | Google Ad | 20% | | Blog Post | 20% | | Email | 20% | | Retargeting | 20% | | Direct | 20% |
Best for: Long, complex journeys
Time Decay
More credit to touchpoints closer to conversion.
| Channel | Credit | |---------|--------| | Google Ad | 5% | | Blog Post | 10% | | Email | 20% | | Retargeting | 30% | | Direct | 35% |
Best for: Sales-focused campaigns
Position-Based (U-Shaped)
40% to first, 40% to last, 20% distributed to middle.
| Channel | Credit | |---------|--------| | Google Ad | 40% | | Blog Post | 6.7% | | Email | 6.7% | | Retargeting | 6.7% | | Direct | 40% |
Best for: Balanced view of acquisition and conversion
Data-Driven (GA4 Default)
Machine learning assigns credit based on actual impact.
Requirements:
- 3,000+ interactions
- 300+ conversions in 30 days
- Google Ads linked account
GA4 Attribution
Attribution Settings
Navigate to Admin → Attribution Settings:
| Setting | Options | |---------|---------| | Reporting attribution model | Data-driven, Last click, etc. | | Conversion window | 30, 60, or 90 days | | Acquisition conversion events | Select which events to include |
Lookback Windows
| Touchpoint Type | Options | |-----------------|---------| | Engaged-view | 3 days | | All other | 30, 60, or 90 days |
Changing Models
When you change attribution models:
- Takes 24-48 hours to recalculate
- Historical data updates retroactively
- Doesn't affect raw event data
Google Ads Attribution
Conversion Settings
For each conversion action:
- Tools → Conversions
- Select conversion action
- Edit settings → Attribution model
Available Models
| Model | Availability | |-------|--------------| | Data-driven | Requires sufficient data | | Last click | Always available | | First click | Always available | | Linear | Always available | | Time decay | Always available | | Position-based | Always available |
Cross-Account Attribution
For multiple Google Ads accounts:
- Use a Manager Account (MCC)
- Set attribution at the manager level
- Ensures consistency across accounts
Implementation Guide
Step 1: Audit Current Setup
-- BigQuery: Check current conversion paths
SELECT
source,
medium,
COUNT(*) as conversions,
SUM(value) as revenue
FROM `project.analytics.events`
WHERE event_name = 'purchase'
GROUP BY source, medium
ORDER BY revenue DESC
Step 2: Configure GA4
- Admin → Attribution Settings
- Select Data-driven (if eligible) or appropriate model
- Set lookback window based on sales cycle:
| Business Type | Recommended Window | |---------------|-------------------| | E-commerce | 30 days | | B2B SaaS | 90 days | | Lead gen | 60 days | | Travel | 45 days |
Step 3: Align Google Ads
Match Google Ads conversion settings to GA4:
- Same attribution model
- Same conversion window
- Import GA4 conversions vs. native tracking decision
Step 4: Document and Communicate
Create attribution documentation:
## Attribution Policy
### Models in Use
- GA4: Data-driven (90-day window)
- Google Ads: Data-driven (90-day window)
- Meta: 7-day click, 1-day view
### Reporting Implications
- Use GA4 for cross-channel comparison
- Platform-specific for in-platform optimization
- Expect ~20% variance between platforms
Multi-Touch Attribution (MTA)
Building Custom MTA
For advanced analysis, use BigQuery:
-- First-touch attribution
WITH first_touch AS (
SELECT
user_pseudo_id,
source,
medium,
campaign,
event_timestamp,
ROW_NUMBER() OVER (
PARTITION BY user_pseudo_id
ORDER BY event_timestamp ASC
) as touch_order
FROM `project.analytics.events`
WHERE source IS NOT NULL
)
SELECT
source,
medium,
COUNT(DISTINCT user_pseudo_id) as users,
COUNT(*) as first_touch_conversions
FROM first_touch
WHERE touch_order = 1
GROUP BY source, medium
Path Analysis
-- Conversion path analysis
SELECT
STRING_AGG(source || ' / ' || medium, ' > ') as path,
COUNT(*) as conversions
FROM (
SELECT
user_pseudo_id,
source,
medium,
event_timestamp
FROM `project.analytics.events`
WHERE event_name IN ('session_start', 'purchase')
)
GROUP BY user_pseudo_id
HAVING COUNT(*) > 1
ORDER BY conversions DESC
LIMIT 20
Platform Comparison
Attribution Differences
| Platform | Default Model | Lookback | |----------|---------------|----------| | GA4 | Data-driven | 30-90 days | | Google Ads | Data-driven | 30-90 days | | Meta Ads | Click 7d / View 1d | 7/1 days | | LinkedIn | Last touch | 90 days | | Microsoft Ads | Last click | 30 days |
Why Numbers Don't Match
Scenario: Customer clicks Google Ad, then Facebook Ad, then purchases
GA4 (Data-driven):
├── Google: 60% ($60)
└── Facebook: 40% ($40)
Google Ads (Data-driven):
└── Google: 100% ($100) ← Only sees Google clicks
Meta Ads (7d/1d):
└── Facebook: 100% ($100) ← Only sees Meta clicks
Total claimed: $260 vs. $100 actual
Reconciliation Strategy
- Accept discrepancy - Each platform optimizes to its own view
- Use GA4 as source of truth - For cross-channel comparison
- Track incrementality - Measure true lift with holdout tests
- Compare trends - Not absolute values
Incrementality Testing
What Is Incrementality?
Measuring the true additional impact of marketing, not just attribution.
Simple Holdout Test
┌─────────────────────────────────────────────────────────┐
│ Incrementality Test │
├─────────────────────────────────────────────────────────┤
│ │
│ Control Group (10%) │ Test Group (90%) │
│ ───────────────────────────────────────────────────── │
│ No retargeting ads │ Normal retargeting │
│ ▼ │ ▼ │
│ Conversion rate: 2% │ Conversion rate: 5% │
│ │
│ Incrementality = (5% - 2%) / 5% = 60% │
│ True incremental conversions = 60% of attributed │
│ │
└─────────────────────────────────────────────────────────┘
Implementing Holdout Tests
- Create audience segment in ad platform
- Exclude control group from targeting
- Run for 2-4 weeks minimum
- Compare conversion rates
- Calculate incremental lift
Reporting Best Practices
Attribution Dashboard Elements
| Metric | Model | Purpose | |--------|-------|---------| | Conversions by source | Last click | Quick wins | | Assisted conversions | First click | Awareness impact | | Path length | All | Journey complexity | | Time to convert | All | Sales cycle | | Model comparison | Multiple | Sanity check |
Stakeholder Communication
| Audience | Focus On | |----------|----------| | Executives | Total conversions, ROAS by channel | | Marketing | Channel performance, optimization | | Sales | Lead quality, source breakdown | | Finance | Blended ROAS, incrementality |
Previous: Enhanced Conversions Next: Debug & Validation