How to calculate time decay attribution, step by step
GA4 and Google Ads no longer offer time decay, so you build it in a sheet. Export your paths from GA4 and give each touch a weight that halves for every half-life before the sale. Split each path's revenue by those weights, and test more than one half-life.
By Joris van Huët, Founder & CEOUpdated 8 min read
Run the numbers for your store: the free attribution window calculator.
If you want time decay attribution today, you usually build it yourself. Export your paths from GA4, then weight each touch in a spreadsheet so its credit halves for every half-life it sits before the sale. Start with 7 days, Google's old default, and test a shorter and a longer half-life before you trust it.
Step by step
You need GA4 with purchase marked as a key event, and a spreadsheet. A Google Ads account with conversion tracking helps with step 3. Pick one full month and use it in every tool.
- Confirm that no tool will do it for you. Google lists three models for GA4's attribution reports: data-driven, paid and organic last click, and Google paid channels last click. Time decay is no longer available there as of November 2023. Shopify's marketing reports offer last non-direct click, last click, first click, any click and linear, but not time decay. Menu path: Admin > Data display > Events > Attribution settings > Reporting attribution model.
- Check your lookback window. In the same settings, read the Key event lookback window. It sets how far back a touch can earn credit: 90 days by default for purchases, with 30 or 60 as the other options. Your sheet can only weigh touches inside it. Menu path: Admin > Data display > Events > Attribution settings > Key event lookback window.
- See how long your journeys run. In Google Ads, open Path metrics, set Measure from to the first ad interaction and Measure in to Days. It shows how many conversions came after each number of days. If nearly all arrive within a day or two, time decay will land close to last click and you can stop here. Menu path: Google Ads > Goals > Attribution > Path metrics > Measure from: first ad interaction.
- Export your GA4 paths. Open the paths report, select the purchase key event and your month. Its table gives each path Purchase revenue, Days to key event and Touchpoints to key event. Google's attribution help also names it Attribution paths, under Attribution. Menu path: Advertising > Key event attribution paths (under Key events) > Share this report > Download File > Download CSV.
- Place each touch on the calendar. The file gives each path one Days to key event figure, not a date for every touch. So you assume a spacing: spread the touches evenly from the path's first day to the purchase, with the last touch on purchase day. Write that assumption at the top of the sheet. Menu path: the downloaded file, no menu needed.
- Weight each touch. Give each touch a weight of 0.5 raised to the power of its days before purchase divided by the half-life. Start with a half-life of 7 days, the old Google Analytics default. Divide each weight by the path's total weight, then multiply by the path's Purchase revenue. Menu path: the downloaded file, one cell holding the half-life.
- Total by channel and check the sum. Add up each channel's revenue across all paths. The totals must match the file's purchase revenue, or a weight slipped. The report shows paths up to 20 touchpoints long, so the very longest journeys may be missing. Menu path: the downloaded file, a pivot table or a sum column.
- Set it beside GA4's own models. Open the Attribution models report and set one Attribution model (non-direct) column to Data-driven and the other to Paid and organic last click. Put your time decay column next to them. Where your column and data-driven agree, the timing story holds; where they split, trust neither until a holdout test settles it. Menu path: Advertising > Attribution > Attribution models.
- Turn the dial. Run step 6 again with a shorter and a longer half-life. If your top channels keep their order, the result is sturdy. If they swap places, the half-life is picking the winner, not your customers. Menu path: the downloaded file, change the half-life cell.
A worked example
For illustration, say your file holds just two paths for last month. The table shows them, made up for this example, with what each rule gives each channel. Split amounts follow the order of the touches in the path.
| Path (for illustration) | Revenue | Days to key event | Last click | Time decay, half-life 7 days | Time decay, half-life 3.5 days |
|---|---|---|---|---|---|
| Paid Social > Organic Search > Email | €2,100 | 14 | Email €2,100 | €300 / €600 / €1,200 | €100 / €400 / €1,600 |
| Organic Search > Paid Social | €1,200 | 7 | Paid Social €1,200 | €400 / €800 | €240 / €960 |
If you spread the touches evenly, the first path's touches sit 14, 7 and 0 days before the purchase. A 7-day half-life gives them weights of a quarter, a half and 1, which add up to 1.75. For illustration, divide each weight by 1.75 and the €2,100 splits into €300, €600 and €1,200.
In the same worked example, the second path's touches sit 7 and 0 days out, so the weights are a half and 1. Say you split it that way: the €1,200 becomes €400 for Organic Search and €800 for Paid Social.
| Channel (for illustration) | Last click | Time decay, 7 days | Time decay, 3.5 days |
|---|---|---|---|
| €2,100 | €1,200 | €1,600 | |
| Paid Social | €1,200 | €1,100 | €1,060 |
| Organic Search | €0 | €1,000 | €640 |
| Total | €3,300 | €3,300 | €3,300 |
Every column adds back to the same €3,300 in this worked example, so the sheet balances. What moves is who gets it.
Against last click, the 7-day version moves €1,000 to Organic Search in this worked example. Organic Search opened one journey and sat in the middle of the other, so last click never paid it.
Now turn the dial, for illustration, to a half-life of 3.5 days. Nothing about the customers changed, yet in this worked example Organic Search drops from €1,000 to €640 and Email climbs to €1,600. Same paths, same revenue, different setting.
One store's real export shows how much of a file that dial can reach. On its Journeys sheet, journeys with 1 touch hold 79.5% of revenue, with 0.5 days to buy. No half-life moves a cent on a path with one touch.
The multi-touch rows are slow. On the Journeys sheet, journeys of 2 to 3 touches took 12.5 days to buy, and journeys of 4 to 9 touches took 16.9 days. Journeys that long span roughly two half-lives at Google's old default.
In that one store, step 9 can only move the 20.6% of revenue on journeys of 2 or more touches (Journeys sheet). If your own file leans the same way, spend your checking time on the biggest multi-touch rows.
What should you check when the numbers look wrong?
- Your totals miss the file's revenue. A weight did not get divided by its path's total. Each path's shares must add up to 1 before you multiply by revenue.
- Path metrics looks shorter than GA4. Google Ads says that report only reflects the keywords and ads in your Google Ads account. GA4's paths hold other channels too, so its journeys can run longer.
- Direct takes a big slice. Decide how to treat direct visits before you start. GA4's own models give direct visits no credit unless the whole path was direct. Match that, or say plainly that you did not.
- A path shows 0 for Days to key event. All its touches fell on the purchase day, so every touch gets the same weight. Time decay then reads exactly like linear for that path.
- Your data-driven column shows decimals. That is normal. Google says data-driven credit is spread across the interactions on a path, so you may see fractional credit in key events and revenue.
What to do this week
- Run step 3 before you build anything. Pass: nearly all conversions in Path metrics arrive within a day or two of the first ad interaction, so you can skip the sheet. Fail: a large share arrives a week or more later, so build it.
- Build the sheet for your ten biggest paths. Pass: the channel totals match those paths' purchase revenue to the cent. Fail: they do not, so check that each path's weights add up to 1.
- Turn the dial before you show anyone. For illustration, try half-lives of 3.5, 7 and 14 days. Pass: the channel order holds in all three. Fail: it flips, so show the range, not one number.
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: Get started with attribution (Google); Select attribution settings (Google); Marketing reports (Shopify); About attribution reports (Google); Key events attribution paths report (Google); Share and export reports (Google); Key event attribution models report (Google); About the default MCF attribution models (legacy) (Google)
Related answers
Frequently asked questions
Does the GA4 paths export show when each touch happened?
No. Each row gives a path's Purchase revenue, Days to key event and Touchpoints to key event, not a date for every touch. A time decay sheet has to assume how the touches spread across those days, so write the assumption down and test a second one.Which half-life should I use for time decay?
Start with 7 days, Google's old default, then test a shorter and a longer one. If your journeys mostly close within a day or two, the choice barely matters. If they run for weeks, the half-life decides who wins, so show the range.Can Google Ads show how long my conversions take?
Yes. Go to Attribution within the Goals menu and open Path metrics. It shows how many conversions came after each number of days, measured from the first or the last ad interaction. It only covers your Google Ads keywords and ads, so other channels are left out.
Go deeper: Incrementality testing, explained.
Sixty-second versions of these ideas: Causality Engine on YouTube Shorts.
Keep reading
Terms in this article
- AttributionAttribution identifies user actions that contribute to a desired outcome and assigns value to each. It reveals which marketing touchpoints drive conversions.
- Attribution ModelAn Attribution Model defines how credit for conversions is assigned to marketing touchpoints. It dictates how marketing channels receive credit for sales.
- 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.
- Google AnalyticsGoogle Analytics is a web analytics service that tracks and reports website traffic.
- Holdout TestA holdout test is an experiment where a portion of the audience does not see a campaign. This measures the campaign's true incremental impact.
- Time Decay AttributionTime Decay Attribution is a multi-touch attribution model. It assigns increasing credit to marketing touchpoints closer to a conversion.