Attribution modeling for SaaS: how each model splits credit for one sale

Attribution modeling decides which channel gets credit for a sale. See five rule-based models split one $600 SaaS sale, and which type fits your funnel.

Muzahid Maruf — Founder of TrackRev.io

Muzahid MarufUpdated

Revenue attribution · 13 min read
On this page
  1. 01How attribution modeling works
  2. 02Five rule-based models split one $600 sale
  3. 03Types of attribution models
  4. 04Where each model lives in the tools you already use
  5. 05How the models disagree across a month of sales
  6. 06Which attribution model to use
  7. 07What subscription revenue changes
  8. 08What to store so you can switch models
  9. 09How TrackRev handles attribution modeling

Explore with AI

Opens this article inside the chosen assistant with a ready-made prompt.

Attribution modeling is the practice of choosing a rule that divides credit for a sale among the marketing touchpoints that came before it.

Take a $600 annual plan bought after 5 touches: last touch gives paid search all $600, first touch gives YouTube all $600, and linear gives each of the 5 channels $120.

For a SaaS team with a few dozen paid conversions a month, read last touch and first touch side by side, then add linear once journeys regularly run past 3 touches.

Google Analytics 4 dropped first click, linear, position-based and time-decay attribution in November 2023, so guides written before then describe options its reports no longer have.

Key takeaways

  • Attribution modeling is the rule that splits a sale's revenue across the touchpoints before it. A $600 sale adds back up to $600 under every rule, and only the channel rows change.
  • On a $600 annual plan with 5 touches, last touch gives paid search $600, first touch gives YouTube $600, linear gives every channel $120, and 7-day half-life time decay gives paid search $311 and YouTube $18.
  • Google removed first click, linear, time decay and position-based attribution from Google Analytics 4 in November 2023. HubSpot, Adobe Analytics, Mixpanel and TrackRev still offer rule-based models.
  • Under about 30 paid conversions a month, read last touch and first touch side by side. Data-driven attribution needs more conversion paths than most SaaS teams have.

How attribution modeling works

Every model starts from two inputs: an ordered list of touchpoints for each buyer (a click on a link tagged utm_source=newsletter, a Google Ads click, a referrer, each timestamped) and a conversion with a dollar value.

For SaaS, make the conversion the first paid charge, such as a $600 payment in Stripe, because a trial signup is a lead with no revenue. The credits the model assigns add up to the conversion value.

Google Analytics Help defines a model as a rule, a set of rules or a data-driven algorithm. Single-touch models, first touch and last touch, hand one touchpoint the whole sale.

Rule-based multi-touch models (linear, position-based, time decay) split it with a formula you can work out by hand. Algorithmic models, such as Google's data-driven attribution and the Adobe Analytics algorithmic model, estimate the split from your own conversion paths.

No model changes the total. The $600 sale still sums to $600 and only the channel rows move, so the report ties back to what your payment processor collected.

Five rule-based models split one $600 sale

The buyer watches a YouTube review on day 1, reads a blog post found through organic search on day 6, opens a newsletter on day 15, clicks an affiliate's review link on day 24, and pays on day 30 after clicking a branded paid-search ad.

TouchpointDayFirst touchLast touchLinearU-shapedTime decay
YouTube review1$600$0$120$240$18
Organic search blog post6$0$0$120$40$29
Newsletter15$0$0$120$40$70
Affiliate review link24$0$0$120$40$172
Branded paid search30$0$600$120$240$311
Total$600$600$600$600$600

Illustrative journey. U-shaped gives 40% to each end and shares 20% across the middle 3. Time decay uses a 7-day half-life. Amounts are rounded to whole dollars.

First touch and last touch put the whole $600 on opposite ends of the journey, and linear spreads it flat. U-shaped spends $480 on the two ends and shares $120 across the middle 3.

Time decay behaves like last touch with a softer edge: the final 2 touches take $483 of the $600, and the YouTube review that started the journey gets $18.

Time-decay arithmetic for this journey

Adobe documents the weight as 2^(-t/h), where t is the days between a touch and the purchase and h is the half-life. With h = 7, the weights are 0.06 for day 1, 0.09 for day 6, 0.23 for day 15, 0.55 for day 24 and 1.00 for day 30. They sum to 1.93, so the closing click takes 1 / 1.93, or 52%, of the sale. Stretch the half-life to 30 days and the same click takes 27%, with no change in what the buyer did.

Types of attribution models

Last touch attribution

Last touch gives the final touchpoint before the conversion the whole sale. Mixpanel assigns it with a 30-day lookback unless you change that, and the rule-based models in Google Analytics 4 are two last-click variants.

The main one, paid and organic last click, credits the last non-direct click.

In Google's own examples, a path of Display, Social, Paid Search and Direct gives 100% to Paid Search, because GA4 excludes direct visits unless the whole path was direct.

A tool that counts Direct as a channel gives that sale to Direct, which is one reason two tools disagree on the same model.

Last touch is accurate when the closing click is the decision: a self-serve plan on a 7-day trial or a retargeting budget you are tuning.

It misleads when creators and closers share a journey, and in the monthly example below the podcast earns $0 under it.

Last touch attribution for B2B SaaS

A longer sales cycle and a buying committee stretch every weakness of last touch. In a 3-person committee, one finds you through a podcast, another books a demo after searching your brand name, and the third pays by card.

A model that follows a single visitor sees only that visitor's touches, so last touch credits the payer's final action, often a branded search or a pricing page visit.

On a 60 to 90 day cycle the closing click tends to land after the buyer has decided, so it tells you where they signed up. What made them want the demo sits earlier in the path.

Pair last touch with first touch and read the gap.

First touch attribution

First touch gives the whole sale to the earliest touchpoint inside the lookback window. It answers where buyers first met you, which is what podcast, video, SEO and community budgets depend on.

Its blind spot mirrors last touch: the newsletter that kept the buyer warm and the ad that closed them both score $0.

It is also the model most exposed to lost cookies, because it has to remember a visitor for weeks.

WebKit caps JavaScript-written cookies at 7 days and deletes other script-writable storage after 7 days of Safari use without interaction on the site.

A first visit a script recorded on day 6 can vanish before the same person returns on day 24, and the return then counts as a new first touch.

Setting the first-click cookie from your own server avoids the script cap, and the Safari ITP guide covers what survives.

Linear attribution

Linear divides the sale equally across every touchpoint, so 5 touches get $120 each on the $600 sale and 3 get $200 each.

It is the simplest answer to which channels took part at all, and it puts a newsletter or a podcast into a budget meeting. It overpays trivial touches: a retargeting click carries the same weight as a 40-minute product demo.

Slices also thin as journeys lengthen. At 10 touches each channel gets $60, and a ranking built on that mostly counts how often you contacted people.

Position-based attribution

Position-based, or U-shaped, attribution gives the first and last touches 40% each and shares the remaining 20% across the middle: $240, $40, $40, $40 and $240 on the example.

Adobe Analytics and Mixpanel put the 40% shares on the first and last touch. HubSpot puts them on the first interaction and the interaction that turned the visitor into a contact, which may not be the click before the sale.

Mixpanel's own example gives a 6-touch path 40%, 5%, 5%, 5%, 5% and 40%, and with 2 touches it normalizes to 50% each.

U-shaped therefore only does distinct work from the third touch onward, and its middle slices thin as the path grows.

Touches in the journeyLinear, each touchU-shaped, each endU-shaped, each middle touch
250%50%none
333.3%40%20%
520%40%6.7%
616.7%40%5%
1010%40%2.5%

Share of one sale per touch. The 2-touch row uses Mixpanel's normalization.

Time-decay attribution

Time decay bets that recent touches matter more. HubSpot, Adobe Analytics and Mixpanel all document a 7-day half-life as the default, and the half-life is the dial that decides the answer.

The model suits cycles that are short next to the half-life.

On a 90-day cycle, a discovery touch carries almost no weight at 7 days and an eighth of the closer's at 30, so the half-life decides whether early touches count at all.

Days before purchaseWeight, 7-day half-lifeWeight, 30-day half-life
01.0001.000
70.5000.851
140.2500.724
300.0510.500
600.0030.250
900.00010.125

Weight of a touch relative to the closing click, from 2^(-days/half-life).

Data-driven attribution

Data-driven attribution estimates credit from the paths in your own data, comparing buyers who converted with paths that did not. Google Ads Help calls it the default for most conversion actions.

In Google Analytics 4 it weighs how adding each interaction changes the estimated probability of a conversion, using features such as the time between the interaction and the event.

Google removed first click, linear, time decay and position-based from GA4 in November 2023 and no longer supports them in Google Ads.

Data-driven attribution trades a rule you can compute by hand for an estimate you cannot reproduce for a single sale.

With 40 conversions a month, a path-based model has 40 converting paths to learn from, spread across every channel and touch order. Teams with thousands of conversions and an analyst to check the output get value from it.

Most SaaS teams are better served by a rule they can audit.

Where each model lives in the tools you already use

ToolModels offeredNotes
Google Analytics 4Data-driven, paid and organic last click, Google paid channels last clickFirst click, linear, time decay and position-based were removed in November 2023
Google AdsLast click, data-drivenData-driven is the default for most conversion actions; the 4 other rule-based models are no longer supported
HubSpot revenue attributionLinear, first interaction, last interaction, U-shaped, W-shaped, full path, time decay, J-shaped, inverse J-shaped9 models; full path gives 22.5% to each of 4 milestones and 10% to the rest
Adobe AnalyticsFirst touch, last touch, linear, participation, same touch, U-shaped, J curve, inverse J, time decay, custom, algorithmic11 models; J curve gives 60% to the last touch and 20% to the first
MixpanelFirst touch, last touch, linear, participation, time decay, U-shaped, J-shaped, inverse J-shaped, customDefaults to last touch with a 30-day lookback
TrackRevFirst touch, last touch, linearLast touch is the default; no position-based, time-decay or data-driven model

Marketing attribution models listed in each vendor's documentation, checked October 2026.

How the models disagree across a month of sales

Take six customers who each pay $600, $3,600 in all:

CustomerTouchpoints in order
1Podcast, branded search
2Podcast, newsletter, branded search
3Newsletter, affiliate
4Affiliate
5Branded search
6Podcast, affiliate, branded search
ChannelFirst touchLast touchLinearFirst minus last
Podcast$1,800$0$700+$1,800
Newsletter$600$0$500+$600
Affiliate$600$1,200$1,100-$600
Branded search$600$2,400$1,300-$1,800
Total$3,600$3,600$3,600$0

Illustrative month. Every column adds up to the $3,600 collected.

Read across a row and the channel's role shows. The podcast earns $1,800 under first touch and $0 under last touch, so a team that looked only at last touch would cancel it.

Branded search runs the other way: $2,400 under last touch and $600 under first, because it closed 4 of the 6 sales and was the only touch in 1 of them.

The first-minus-last column sorts creators (positive) from closers (negative) and sums to $0 because the models only move credit.

Six sales is too few to act on. At 20 paid conversions a month, one customer is 5% of the month's revenue, and under first or last touch a single journey moves a channel's share by 5 points.

Which attribution model to use

DecisionModel to readWhy
Raising or cutting paid search and retargeting spendLast touchThe closing click is the one a bid or budget change acts on directly
Funding podcasts, video, SEO content or communityFirst touchIn the month above the podcast earns $1,800 under first touch and $0 under last touch
Defending several channels in one budget reviewLinearEvery channel with a touch gets a share, $120 each on the 5-touch sale
Journeys with a clear opener, a clear closer and nurture betweenPosition-based40% to each end and 20% to the middle, where the tool offers it
Fewer than about 30 paid conversions a monthLast touch and first touch side by sideOne customer is 3.3% of the month, so keep rules you can trace sale by sale
Thousands of conversions a month and an analyst to check the outputData-drivenEnough paths to learn from, though the split cannot be reproduced by hand

The 30-conversion line is a rule of thumb.

Sales cycle and lookback window

A model decides who gets credit inside the lookback window, and the window decides which touches are eligible at all.

GA4 defaults to 30 days for acquisition events and 90 days for other conversions, and its attribution settings page lists the options.

To size yours, take customers who paid in the last 90 days and find the median days between first tracked click and first payment.

TrackRev's attribution benchmarks put that median at 6.3 days, the 75th percentile at 21.0 days and the 90th at 48.2 days, so a 30-day window would cut off more than the slowest tenth of buyers in a typical workspace.

Check a model against customers you know

Pull 5 to 10 recent customers whose real path you know, such as one who replied to a newsletter or one who found you through a podcast, and check what each model says about them.

If last touch files them under Direct, the gap is in the data, and a different model will not close it. The comparison of self-reported and tracked attribution covers asking buyers directly.

What subscription revenue changes

Credit is assigned once, at the first payment, and renewals ride along with it. A $49 monthly plan kept for 12 months is $588, so moving the customer from the closing channel to the opening one shifts $588 of credit.

Channels also differ in the customers they bring.

In the same benchmarks the 12-month lifetime value multiplier is 2.1x for organic search and 0.8x for paid social, so two channels that bring the same $49 first invoice can be worth very different amounts a year later.

Three rules keep the model honest on subscriptions:

  • Make the first paid charge the conversion. A model fed trial signups credits channels that bring free accounts that never pay.
  • Net refunds and chargebacks out of the credited revenue, or channels that attract refunds look better than they are.
  • Decide how renewals inherit credit before the first dispute. The subscription LTV attribution guide compares three ways to do it.

What to store so you can switch models

A model is a calculation over stored touchpoints, so keep every touch with its timestamp, visitor ID, utm_source, utm_medium and utm_campaign, and apply the model at report time.

A tool that keeps only the attributed result cannot re-run last quarter under another rule. Tag every link you control, because a session without a source is reported as Direct in Google Analytics 4. The UTM parameters guide covers naming.

Carry a click ID into the payment too. Stripe metadata accepts 50 key-value pairs, with keys up to 40 characters and values up to 500, and copies a subscription's metadata onto each invoice it creates as a one-time snapshot.

The Stripe metadata attribution setup shows the wiring.

How TrackRev handles attribution modeling

TrackRev is SaaS affiliate software for indie hackers and small teams with attribution built in. It stores every click and computes first-touch, last-touch and linear from the same log, with last touch as the default.

Revenue from Stripe, Paddle Billing, Polar, Lemon Squeezy, Creem or Dodo Payments is joined to each click, so a model switch changes the channel credit while the total still ties to the processor.

Refunds are netted out and no re-tagging is needed.

It has no position-based, time-decay or data-driven model. If a preset like that is a hard requirement, the tools in the table above offer them.

Revenue by channel needs a paid plan, which starts at $29 a month with no limit on tracked revenue.

A team that wants only a standalone attribution product, or any of the missing models, should look at the tools in that table. The free plan covers link tracking for up to 50 links and 1,000 events a month.

The revenue attribution page shows the channel report.

To build the six-sale table from your own data, the multi-touch attribution setup guide walks through the five parts of the build.

Found this useful? Share it.

PostLinkedIn

Frequently asked questions

Muzahid Maruf — Founder of TrackRev.io

Written by

Muzahid Maruf

Founder, TrackRev.io & Contant.io

Muzahid Maruf founded TrackRev.io, SaaS affiliate software with no limit on tracked revenue, and Contant.io. He writes about affiliate programs.

Writes about Marketing attribution · Link tracking · Revenue analytics · SaaS growth

Run your affiliate program without a revenue cap.

Affiliate software for indie hackers and small SaaS teams: $29 a month flat, 0% fees, link tracking and revenue attribution built in. Free to start, no card.