Adstock Configuration
Modeling Marketing Carryover Effects
Overview
Adstock (also called carryover or lagged effects) models how marketing impact persists beyond the initial exposure. When you see a TV ad today, it influences your behavior today AND tomorrow AND possibly next week. Adstock transformation captures this delayed and decaying effect.
Purpose: Transform marketing variables to account for lasting impact beyond immediate period
Where configured: Model Builder → Available Variables panel → Adstock Rate column
What is Adstock?
The Carryover Concept
Without adstock:
TV spend in Week 1 only affects sales in Week 1
Unrealistic - ads have lasting impact
Underestimates total marketing effect
With adstock:
TV spend in Week 1 affects sales in Weeks 1, 2, 3, etc.
Effect decays over time
More realistic model of marketing impact
Mathematical Formula
Adstock transformation:
Adstocked_Value_t = Current_Spend_t + (Adstock_Rate × Adstocked_Value_t-1)
Where:
t = current time period
Adstock_Rate = decay rate (0 to 1)
Values from previous periods carry forward with decay
Example with 70% adstock rate:
Week 1: Spend = $10,000
Adstocked = $10,000
Week 2: Spend = $5,000
Adstocked = $5,000 + (0.70 × $10,000) = $12,000
Week 3: Spend = $0
Adstocked = $0 + (0.70 × $12,000) = $8,400
Week 4: Spend = $0
Adstocked = $0 + (0.70 × $8,400) = $5,880
Key insight: Even with zero spend in weeks 3-4, adstocked value remains positive due to carryover from earlier spending.
Adstock Rate Explained
What the Rate Means
Adstock Rate = Percentage of effect that carries to next period
0% (No carryover):
Effect completely disappears next period
Immediate impact only
Use for: Search, email, price changes
50% (Moderate carryover):
Half of effect persists to next period
Moderate lasting impact
Use for: Digital display, some radio
70% (Strong carryover):
70% of effect persists to next period
Strong lasting impact
Use for: TV, brand campaigns
90% (Very strong carryover):
90% persists - very slow decay
Extremely persistent impact
Use cautiously - may indicate trend, not carryover
Typical Rates by Channel
TV Brand
60-80%
70%
TV Direct Response
40-60%
50%
Radio Brand
50-70%
60%
Radio Direct Response
30-50%
40%
Digital Display
30-50%
40%
Digital Video
40-60%
50%
Social Media Paid
20-40%
30%
Paid Search
0-20%
10%
0-10%
0%
60-80%
70%
Outdoor/OOH
70-90%
80%
Sponsorships
60-80%
70%
Note: These are starting points. Test empirically for your specific context.
How to Configure Adstock
In Model Builder Interface
Step 1: Select Variables to Add
Check boxes for variables you want to add to model
Step 2: Set Adstock Rate
For each selected variable:
Locate "Adstock Rate" column
Enter value 0-100 (percentage)
Leave at 0 for no carryover
Input format:
Enter as whole number (0-100)
Example: Enter "70" for 70% carryover
System converts to decimal (0.70) internally
Step 3: Add Variables
Click "Add Variables" button. System:
Creates adstocked version of variable
Names it:
OriginalVariable_adstock_XXAdds to model automatically
Example:
Original:
TV_SpendWith 70% adstock:
TV_Spend_adstock_70
Variable Naming Convention
Format: BaseVariable_adstock_XX
Where XX is the rate as whole number (00-99)
Examples:
TV_Spend_adstock_70(70% rate)Radio_Spend_adstock_60(60% rate)Display_Impress_adstock_40(40% rate)
Both variables exist:
Original variable still in dataset
Adstocked version created as separate variable
You choose which to include in model
Don't include both - perfect multicollinearity
Selecting Optimal Adstock Rates
Method 1: Use Typical Rates
Quickest approach:
Use industry standard rates from table above
Works well for initial models
Refine later if needed
Method 2: Test Multiple Rates
In Variable Testing interface:
Navigate to Variable Testing
Select Adstock Optimization
Choose variable to test
System tests rates: 0%, 10%, 20%, ..., 90%
Review results table:
Each rate shown with R² increase
Coefficient value
T-statistic
P-value
Select rate with highest R² and significance
Interpretation:
Best rate: Highest R² increase
Significant: P-value < 0.05
Reasonable coefficient: Positive for marketing spend
Method 3: Theory-Based Selection
Consider channel characteristics:
Short carryover (0-30%):
Direct response mechanism
Immediate call to action
Performance marketing
Instant gratification products
Medium carryover (30-60%):
Mix of brand and performance
Moderate consideration period
Some delayed response
Digital with retargeting
Long carryover (60-90%):
Brand building focus
Long consideration period
Awareness-driven
High-involvement categories
When to Apply Adstock
Apply Adstock For:
✅ Media advertising:
TV (brand or DR)
Radio
Digital display
Video ads
Print
Outdoor/OOH
✅ Brand campaigns:
Awareness building
Consideration driving
Long-term impact focus
✅ Channels with lagged response:
Word-of-mouth effects
Awareness accumulation
Delayed purchase decisions
Don't Apply Adstock For:
❌ Immediate-effect channels:
Paid search (high intent, instant click)
Email (open and act immediately)
Price promotions (buy today)
Flash sales
❌ External factors:
Weather
Holidays (use dummies instead)
Competitor actions
Economic indicators
❌ Control variables:
Price (contemporaneous effect)
Distribution
Product features
Combining Adstock with Other Transformations
Transformation Order Matters
Correct order:
First: Apply adstock
Second: Apply saturation curve
Example:
Original:
TV_SpendStep 1 (Adstock):
TV_Spend_adstock_70Step 2 (Curve):
TV_Spend_adstock_70|ICP_ATAN_a0.6_power1.8
Why this order:
Adstock accumulates effect over time
Saturation applies to accumulated effect
Matches real-world behavior
Wrong order:
Curve then adstock
Doesn't match marketing reality
Can produce nonsensical results
Creating Combined Variables
In Model Builder:
Add variable with adstock rate
System creates:
TV_Spend_adstock_70Then use Curve Testing on the adstocked variable
Create:
TV_Spend_adstock_70|ICP_ATAN_a0.6_power1.8Add this final transformed variable to model
In Variable Testing:
Test adstock rates first
Select best rate
Then test saturation curves on adstocked variable
Combine both transformations
Interpreting Adstock Results
Model Coefficients
For adstocked variables:
Sales = β₀ + β₁ × TV_Spend_adstock_70 + ...
Coefficient interpretation:
β₁ = Effect of one unit increase in ADSTOCKED TV spend
Not the same as effect of one dollar of TV spend
Represents cumulative effect including carryover
To get immediate effect:
Multiply coefficient by (1 - adstock_rate)
Example: β₁ = 1000, rate = 70%
Immediate effect = 1000 × (1 - 0.70) = 300
Long-term cumulative effect = 1000
ROI Calculation
Without adstock (underestimates):
Simple: Coefficient × Spend / Sales
Ignores carryover
ROI appears lower than reality
With adstock (accurate):
Use decomposition analysis
Sums up total contribution over time
Captures full carryover effect
True ROI calculation
Example:
TV coefficient without adstock: 0.5
TV coefficient with adstock 70%: 1.2
Adstocked version shows true long-term impact
Common Adstock Patterns
High Adstock (70-90%)
Characteristics:
Slow decay
Effect lasts many periods
Persistent impact
Typical for:
Brand TV
Print advertising
Outdoor/OOH
Long-term brand building
Business implication:
Can reduce frequency without immediate sales drop
Investment today pays off for weeks
Build sustained pressure over time
Medium Adstock (30-60%)
Characteristics:
Moderate decay
Effect lasts several periods
Balanced immediate and delayed
Typical for:
Digital display
Radio
Video advertising
Mixed brand/performance
Business implication:
Balance burst and sustained campaigns
Some flexibility in scheduling
Monitor both short and medium-term effects
Low/No Adstock (0-20%)
Characteristics:
Rapid decay
Mostly immediate effect
Little carryover
Typical for:
Paid search
Email
Price promotions
Direct response
Business implication:
Must maintain continuous pressure
Can't "bank" effects
Immediate on/off relationship with sales
Best Practices
Start Conservative
Initial models:
Use typical rates from industry standards
Don't over-optimize initially
Refine in later iterations
Avoid:
Testing every rate 0-100%
Over-fitting to noise
Rates > 90% (likely capturing trend)
Test Systematically
Structured approach:
Build model without adstock
Note R² and coefficients
Add adstock using typical rates
Compare R² improvement
If significant improvement, keep
Fine-tune rates if needed
Validate Business Logic
Check if rates make sense:
TV at 70% reasonable? Yes
Search at 80% reasonable? No
Email at 60% reasonable? No
Red flags:
Rates that don't match channel behavior
All channels same rate (unlikely)
Rates changing dramatically in similar models
Document Choices
Record in model documentation:
Which variables have adstock
Rates chosen
Rationale (testing results, theory, expert input)
Date of decision
Why document:
Justify choices to stakeholders
Remember decisions in future models
Consistency across projects
Troubleshooting
Adstock makes coefficient non-significant
Cause: Adstock rate too high or wrong rate
Solution:
Test lower rates
Try without adstock
May not need carryover for this variable
Model R² decreases with adstock
Cause: Wrong rate or channel doesn't have carryover
Solution:
Remove adstock
Test different rates
Channel may have immediate-only effect
Adstock variable name too long
Cause: Base variable name + adstock suffix exceeds limits
Solution:
Shorten base variable name before adding adstock
Use abbreviations
Rename in Variable Workshop
Can't add both original and adstocked version
Cause: Perfect multicollinearity
Solution:
Choose one or the other
Usually choose adstocked version
Remove original from model
Key Takeaways
Adstock models marketing carryover effects beyond immediate period
Rate = percentage of effect that persists to next period
Typical rates: TV 70%, Digital 40%, Search 10%, Email 0%
Configure in Model Builder when adding variables
Always apply adstock BEFORE saturation curves
Test rates systematically using Adstock Optimization
Document rate choices and rationale
Validate that rates match channel behavior and business logic
Last updated