How to set adstock decay for each channel, step by step
Start from your buyers' lag, not a guess. Read days to purchase in GA4 and Google Ads. Turn each lag into a starting decay: lag divided by lag plus 7. Give the model a range around it, then check whether the fitted decay sits on an edge.
By Joris van Huët, Founder & CEOUpdated 8 min read
Run the numbers for your store: the free manual attribution time calculator.
To set adstock decay, you usually start from your buyers' lag, not a guess. Read how many days purchases take in GA4 and Google Ads, and turn that into a starting decay per channel. Give your mix model a range around it. Then check where the fitted decay lands, and test the slowest channel.
Step by step
- Get weekly spend per channel. In Google Ads, open Campaigns, click the segment icon and choose Time, then Week. Download the table from the download icon above it. In Meta Ads Manager, select your campaigns, click the Breakdown icon and choose By time. Meta's Ads Reporting help lists week among its time breakdowns. Path: Campaigns > segment icon > Time > Week > download icon; Ads Manager > Breakdown > By time.
- Get weekly sales from Shopify. Go to Analytics > Reports and open Total sales over time. Pick week in the Group by drop-down, then export the report. Path: Analytics > Reports > Total sales over time > Group by > Export.
- Read the lag GA4 can see. Click Advertising, then Key event attribution paths under the Key events dropdown, and select purchase. Note Days to key event in the table's top row. Then filter Path length to greater than 1 touchpoint and note it again. Path: Advertising > Key events > Key event attribution paths > Path length.
- Read the lag Google Ads can see. On the Campaigns page, click the segment icon, choose Conversions, then Days to conversion. Google measures it from the ad impression to the conversion. For a summary, open Path metrics under Attribution and set Measure from to the first ad interaction. Path: Goals > Attribution > Path metrics.
- Turn each lag into a starting decay. Geometric decay delays the average effect by the decay divided by 1 minus the decay, in weeks. Turn that around, and a lag of D days suggests a starting decay of D divided by D plus 7. In a spreadsheet, with the lag in A2: =A2/(A2+7). Path: any spreadsheet.
- Check it against the rules of thumb. Robyn's guide gives weekly ranges per media type. TV runs 0.3 to 0.8, outdoor, print and radio 0.1 to 0.4, digital 0 to 0.3. If your lag points above the digital range, don't force either number. Widen the range and let the data choose. Path: Robyn docs, An Analyst's Guide to MMM, Adstock.
- Chart three decays against sales. For one channel, build adstock at a low, a middle and a high decay. Each week is that week's spend plus the decay times last week's adstock. Plot all three next to weekly sales. The one whose peaks and tails line up best is your first guess. Path: your weekly sheet, line chart.
- Find a week the channel went quiet. Look in your spend columns for a week near zero after steady spend. Read sales over the next three weeks. A slow slide points to real carryover; a same-week drop points to a low decay, unless something else changed. Path: your weekly sheet from steps 1 and 2.
- Give the model a range, not a point. In Robyn, set each channel's theta bounds around your starting decay. In Meridian, geometric decay pairs with a max_lag of 2 to 10 periods, which are weeks in a weekly model. Use binomial decay if much of the effect lands in the second half of the window. Path: Meridian docs, Set the max_lag parameter.
- Shape the prior on purpose. Meridian starts every decay from a uniform prior. A Beta(1, 3) prior leans toward fast decay, a Beta(3, 1) toward slow decay. Plot it with MediaEffects.plot_adstock_decay before you fit, or use Robyn's adstock helper plot. Path: Meridian docs, Set the adstock_decay_spec parameter.
- Read the fitted decay and its edges. Robyn's model outputs include a chart of each channel's adstock decay rate. A decay that lands on the edge of its range was set by the range, not the data. Path: Robyn outputs, Adstock decay rate chart.
If you want the whole model in a spreadsheet, the Excel walkthrough covers the regression around these columns.
A worked example
For illustration, take a shop that runs Meta and Google Ads. Say your GA4 paths read 3.5 days to key event across all purchases, and 14 days on paths longer than 1 touchpoint.
One store's Journeys sheet shows why two readings can sit that far apart. On that Journeys sheet, journeys with 2 to 3 touches took 12.5 days to buy, while journeys with 1 touch took 0.5 days. A store-wide average mixes both kinds of buyer.
For illustration, step 5 turns 3.5 days into 3.5 divided by 10.5, about 0.33. On the same illustrative numbers, 14 days become 14 divided by 21, about 0.67. Say Google Ads' Days to conversion puts most Google conversions inside the first day, so Google starts near 0.1.
Now step 6. Robyn's digital range tops out at 0.3. Google's 0.1 sits inside it. Meta's lag points to somewhere between 0.33 and 0.67, above it.
So you set Google's range at 0 to 0.3 and widen Meta's to 0 to 0.7. Say the fit lands Meta at 0.45 and Google at 0.1, both well inside their ranges.
Read what that means. If the fit holds, the week Meta spends holds 1 minus 0.45, or 55%, of its effect. On the same illustrative fit, Google's week holds 1 minus 0.1, or 90%. So a one-week read of a Meta burst shows a bit over half of what it did, while Google's shows nearly all.
Then the last step's warning. If Meta had landed at 0.7, the top of the widened range, that number would be the range talking. Run a pause test on Meta before you move budget on it.
What should I check when the decay looks wrong?
- Every channel lands on the same decay. Spend that rises and falls together gives the model nothing to tell channels apart. Look for weeks where one channel moved alone.
- A digital channel gets a TV-sized decay. Check for a missing season or promotion flag. Carryover can soak up a rise in sales that a sale or a holiday caused.
- The decay hugs the edge of its range. Widen the range once. If the decay follows the new edge, the data cannot pin it down, so test the channel instead.
- GA4 and Google Ads give different lags. They use different clocks. Google Ads counts from its own ad's impression; GA4 counts across all channels on a path.
- The lag looks short but sales trail for weeks. Days to key event can only start at a touch GA4 recorded. Views without clicks start earlier, so treat the lag as a floor.
What to do this week
- Write down two GA4 lags. In Key event attribution paths, note Days to key event for all purchase paths. Then note it for paths longer than 1 touchpoint. Pass: you have both numbers and the gap between them. Fail: the longer paths barely exist, so most revenue closes on one touch and a low decay is the honest start.
- Read Days to conversion for your top Google campaign. Use the segment icon, then Conversions, then Days to conversion. Turn its typical lag into a starting decay with step 5. Pass: the decay sits inside the 0 to 0.3 digital range. Fail: it sits well above, so flag the channel as the first one to test.
- Find one pause in your spend history. Scan your weekly Google Ads and Meta spend for a quiet week after steady spend. Pass: you found one and can read the sales trail after it. Fail: spend never paused, so plan a short one in a quiet season, as in how to pause a channel to test it.
Check the homework. Your GA4 Attribution paths export already holds the evidence. Causality Engine reads that one file and shows what each channel caused next to what last-click gave it, in 1 to 2 minutes, for €99 once (excluding VAT), refundable within 30 days. Check the homework
Sources, 1 October 2026: Use segments in your tables (Google); Create, save, and schedule reports from your statistics tables (Google); Navigate to breakdowns in Meta Ads Manager (Meta); About breakdowns, metrics and filtering in Meta Ads Reporting (Meta); Sales reports (Shopify); Exporting reports (Shopify); Key events attribution paths report (Google); About attribution reports (Google); An Analyst's Guide to MMM (Meta (Robyn)); Key Features (Meta (Robyn)); Set the max_lag parameter (Google (Meridian)); Set the adstock_decay_spec parameter (Google (Meridian))
Related answers
Frequently asked questions
Should every channel get its own adstock decay?
Usually, yes. Robyn transforms each media input on its own, and Meridian lets you pick geometric or binomial decay channel by channel. Channels whose buyers act at once can sit near zero, while slower channels get room for a longer fade.Can I estimate adstock without a mix model?
Roughly. Chart weekly spend against weekly sales and look at how sales trail off after a pause. Also compare short and long click windows in your ad platforms. That gives you a starting range, and only a model or a test turns it into a number.Does a higher adstock decay mean a better channel?
No. A higher decay only means the effect lasts longer, not that it is bigger. A channel can carry over for weeks and still return less than it costs. Read the decay next to the channel's effect size and your break-even.
Go deeper: Causal attribution, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- Ad ImpressionAd Impression is a single instance of an advertisement displaying on a webpage. Impressions are a key input for models measuring the causal impact of ad exposure on user behavior.
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- Attribution ReportAttribution Report shows which touchpoints or channels receive credit for a conversion. It identifies which campaigns drive desired actions.
- ConversionConversion is a specific, desired action a user takes in response to a marketing message, such as a purchase or a sign-up.
- Google AdsGoogle Ads is an online advertising platform where advertisers bid to display ads, service offerings, and product listings.
- ImpressionAn Impression counts each time an ad or content displays on a user's screen. It measures exposure, not engagement.
- Marketing MixThe marketing mix is the set of actions a company uses to promote its brand or product. It traditionally includes product, price, place, and promotion.
- Marketing Mix ModelingMarketing Mix Modeling (MMM) is a statistical analysis that estimates the impact of marketing and advertising campaigns on sales. It quantifies each channel's contribution to sales.