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

Channel
Typical Range
Recommended Start

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%

Email

0-10%

0%

Print

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:

  1. Locate "Adstock Rate" column

  2. Enter value 0-100 (percentage)

  3. 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:

  1. Creates adstocked version of variable

  2. Names it: OriginalVariable_adstock_XX

  3. Adds to model automatically

Example:

  • Original: TV_Spend

  • With 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:

  1. Navigate to Variable Testing

  2. Select Adstock Optimization

  3. Choose variable to test

  4. System tests rates: 0%, 10%, 20%, ..., 90%

  5. Review results table:

    • Each rate shown with R² increase

    • Coefficient value

    • T-statistic

    • P-value

  6. 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:

  1. First: Apply adstock

  2. Second: Apply saturation curve

Example:

  • Original: TV_Spend

  • Step 1 (Adstock): TV_Spend_adstock_70

  • Step 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:

  1. Add variable with adstock rate

  2. System creates: TV_Spend_adstock_70

  3. Then use Curve Testing on the adstocked variable

  4. Create: TV_Spend_adstock_70|ICP_ATAN_a0.6_power1.8

  5. Add this final transformed variable to model

In Variable Testing:

  1. Test adstock rates first

  2. Select best rate

  3. Then test saturation curves on adstocked variable

  4. 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:

  1. Build model without adstock

  2. Note R² and coefficients

  3. Add adstock using typical rates

  4. Compare R² improvement

  5. If significant improvement, keep

  6. 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