Dashcrab

Attribution

Seven attribution models to split one sale

First touch, last touch, last non-direct, linear, time decay, U-shaped and data-driven. What question each one answers, how each is calculated on a USD 120 purchase, and why you should look at them side by side.

An attribution model is the rule that decides how a sale is split among the touchpoints that came before it: the Reel the person watched, the Google ad they clicked, the email they opened. There are seven in common use and none of them is the truth. Each answers a different question, and you should know which one before you move budget on what it says. The one thing that never changes from model to model: a sale is worth 1. It gets split, not multiplied.

This article calculates all seven on the same purchase, with the exact rules Dashcrab Attribution uses. They are short formulas. The longest, data-driven, fits in four steps and one table.

What an attribution model is, and what it is not

An attribution model needs three things. A journey: the list of a person's touchpoints with your brand, in chronological order. A window: how many days back from the purchase those touchpoints are counted, 30 by default, more for a long cycle (a B2B deal can look back 180). And a rule: how 100% of the sale is split among the touchpoints that fell inside the window.

A touchpoint is a session. If someone arrives organically and clicks an ad ten minutes later, that is two touchpoints: the paid click is not lost. Coming back from a payment gateway or a Google login does not count as a touchpoint, because it brought nobody in. And a purchase with no recorded touchpoint is reported as "no path": it is not handed to Direct.

What an attribution model is not: what each ad platform does. Meta and Google Ads apply a last-touch rule to the slice of the journey each one can see, which is why both claim the same sale. An attribution model, done right, looks at the full journey from outside the platforms and splits it once.

The rule that never changes

Per conversion and per model, the credits add up to exactly 1. If your attribution report counts more sales than your store, that is not attribution. It is double counting.

The purchase we are going to split

Sofi buys a USD 120 jacket. Before buying, she went through four places. On Tuesday she saw a Reel on Instagram, tapped "Shop now", checked the size and closed the app. On Thursday she searched for the store on Google and came in through the ad. On Saturday the newsletter arrived with her size back in stock and 10% off, and she clicked. On Sunday night she typed the address by hand on her laptop and bought.

OrderTouchpointChannelDays before purchase
1Instagram Reel, clickMeta5
2Search ad, clickGoogle3
3Newsletter, clickEmail1
4Types the address and buysDirect0

Four touchpoints, one purchase, USD 120. All four fall inside a 30-day window. It is the same journey as the interactive story "One sale, three owners", in case you would rather see it on screen than in tables.

The six fixed-rule models

Six of the seven models are rules applied to a single journey in isolation. They need to know nothing about other customers: the list of touchpoints and their dates is enough. That is why you can work them out by hand.

1. First touch

100% to the first touchpoint in the window. Sofi: Meta USD 120, everyone else USD 0. It answers "which channel starts the conversation?". It misleads when the opening channel is cheap and massive: a video with huge reach takes all the credit even though nobody buys without the next three touchpoints.

2. Last touch

100% to the last touchpoint before the purchase. Sofi: Direct USD 120. It answers "what happened right before the purchase?". It is the most used model because it is the easiest to measure, and it is the one each platform applies to its own slice of the journey. It misleads in favor of closing channels: Direct, brand search and retargeting collect demand another channel created.

3. Last non-direct touch

Walk the path backwards and give the whole sale to the first touchpoint that is not Direct. If every touchpoint was direct, the last one keeps it. Sofi: Email USD 120, because Sunday's direct visit is skipped and Saturday's email is the one before it. It is the rule GA4 uses in its acquisition reports, and the logic is that someone who types your address by hand already knew you from somewhere else.

4. Linear

Equal shares: 1 divided by the number of touchpoints. Sofi has four, so each gets 25%: USD 30 each for Meta, Google, Email and Direct. It answers "who was there?". It rewards nobody and punishes nobody, which is both its virtue and its limit: a click from 29 days ago weighs the same as one from an hour ago.

5. Time decay

Recent counts for more. Each touchpoint gets a weight of 2 to the power of minus the number of days between it and the last touchpoint, divided by the half-life. With the default 7-day half-life, a touchpoint from 7 days ago weighs half as much as one from today, and one from 14 days ago a quarter. Then all weights are divided by their sum so they add up to 1.

ChannelDays to last touchpointWeight: 2^(-days/7)CreditUSD
Meta50.6118.7%23
Google30.7422.8%27
Email10.9127.8%33
Direct01.0030.7%37
Total3.26100%120

One implementation detail that matters: the distance is measured to the last touchpoint, not to the purchase. After normalizing it gives exactly the same result, and it avoids weights in a 180-day window getting so small the computer rounds them to zero. The half-life is a parameter: at 30 days the model flattens toward linear, at 2 days it looks like last touch.

6. U-shaped, or position-based

40% to the first touchpoint, 40% to the last, and the remaining 20% split evenly among the ones in the middle. Sofi: Meta USD 48, Google USD 12, Email USD 12, Direct USD 48. It answers "who opened and who closed?". With a single touchpoint it takes 100%; with two, 50 and 50. It is the model that most resembles how a marketing team describes its own funnel, which is why it feels comfortable. It is also the most arbitrary: the 40/40/20 comes from no data at all.

All six, side by side, on the same USD 120 purchase:

ModelMetaGoogleEmailDirect
First touch120000
Last touch000120
Last non-direct001200
Linear30303030
Time decay (7-day half-life)23273337
U-shaped (40/20/40)48121248

Meta gets USD 120, USD 0, USD 30, USD 23 or USD 48 depending on the rule. Every row adds up to 120. That is the whole difference between one model and another: who gets it, never how much there is.

Data-driven, step by step

The six models above share a blind spot: they only look at journeys that ended in a purchase. If Meta appears in 1,000 journeys and 10 of them buy, the fixed rules see 10 journeys. Data-driven sees all 1,000. Its question is "how much would be lost without each channel?", and to answer it, it also uses the people who did not buy.

A tiny store with three customers is enough to see it. Juan went through Meta, Google and Email, and bought. Ana went through Meta and did not buy. Leo went through Google and Email and did not buy. Last touch gives everything to the email. First touch, everything to Meta. Both rules only look at Juan.

Step 1. The map. From each place, what share of people went where. Two out of three started at Meta, one at Google. Of those who were at Meta, half went on to Google and half dropped off. And so on:

FromToProbability
StartMeta67% (2 of 3)
StartGoogle33% (1 of 3)
MetaGoogle50%
MetaDrop-off50%
GoogleEmail100%
EmailPurchase50%
EmailDrop-off50%

Step 2. The probability of buying. Add up the paths that reach the purchase. Through Meta: 67% × 50% × 100% × 50% = 17%. Straight through Google: 33% × 100% × 50% = 17%. Total: 33%. That is the baseline probability.

Step 3. The removal effect. Take one channel out of the map, as if it did not exist, and recompute. Whatever flowed into that channel is lost. Without Meta only the Google path remains: 17%. The probability falls 50%. Without Google there is no way to reach the email: it falls 100%. Without Email nobody reaches the purchase: it falls 100%.

Step 4. The split. 50 + 100 + 100 = 250, and each channel takes its proportional share: Meta 20%, Google 40%, Email 40%. Out of a USD 120 sale, Meta gets USD 24 and the other two USD 48 each.

33%
Baseline probability of buying with all three channels
−50%
Drop in that probability if Meta did not exist
20 / 40 / 40
Final split among Meta, Google and Email

That is a first-order Markov chain: the probability of moving to the next step depends only on the step you are on, not on how you got there. The method is described in Anderl, Becker, von Wangenheim and Schumann, "Mapping the customer journey", International Journal of Research in Marketing, 2016. With a real month of data there are three practical adjustments: if a person repeats the same channel twice in a row it counts as a single step, because repeating a state does not change the probability of reaching the purchase; beyond the 30 most frequent channels or campaigns, the rest is grouped as "other" so the map stays small; and the probability is computed by iteration until it stops changing, not by solving matrices.

What data-driven does not do

It does not know what would have happened without the ad. It removes a channel from a map of journeys, not from the world. And it needs volume: with 40 purchases in a month, the map is noise and a fixed rule is more honest.

Which one to use? Each answers a question

The question "which attribution model is the best?" has no answer because it is the wrong question. The right one is "what do I want to know?".

ModelWhat question it answersWhere it misleads
First touchWhich channel starts the conversation?Rewards cheap reach, ignores the close
Last touchWhat happened right before the purchase?Direct, brand and retargeting collect someone else's demand
Last non-directThe same, without handing it to DirectThe channel before Direct is not always the one that convinced
LinearWho was there?A click from 29 days ago is worth the same as today's
Time decayWho was there close to the purchase?The half-life is your decision, not a data point
U-shapedWho opened and who closed?The 40/40/20 comes from no data
Data-drivenHow much would be lost without each channel?Needs volume and does not measure causality

Why it matters, with an example. One month of a store, sample data computed with these same rules: 204 purchases and 2,380 journeys that did not buy. Meta takes 8 purchases under last touch and 80 under first touch. If you set the budget by last touch, you switch Meta off. If you set it by first touch, you double it. Both numbers come from the same month and the same sales. Data-driven gives it 47, because it also counts the 1,280 people who went through Meta and did not buy: it opens many conversations and closes few, and without it almost a quarter of the purchases would be lost.

ChannelFirstLastLast non-directLinearTime decayU-shapedData-driven
Meta8082439304247
Google54587862615851
Email12245823282027
Organic32181825232517
Direct26962655625962

Every column adds up to 204. That is the second reason to have your own model: the sum of what Meta, Google and the email platform report for that same month is well above 204, because each applies last touch to what it sees and none of them subtracts what the other claimed. A model that splits once is the only way for the attribution total to match the store total.

And the third reason is knowing what a model does not tell you. Attribution is not causality. Researchers at Kellogg compared 15 controlled experiments on Facebook against the attribution methods used without an experiment, and even with hundreds of control variables those methods often missed the real effect. A model splits sales that already happened. It does not say which would have happened anyway. There is only one way to find that out: turn something off for two or three weeks, away from a peak date, and watch the real total.

In practice, three habits:

1. Look at two opposite models, not one. First and last touch side by side tell you each channel's role: the one that wins under first and loses under last opens; the one that does the opposite closes. That reading is worth more than any single number.

2. Use data-driven when you have volume, and compare. With hundreds of purchases a month the map stabilizes. If data-driven and linear say similar things, the split is robust. If they differ a lot on one channel, that is where to look.

3. Fix the window and the half-life before comparing periods. Changing the window from 30 to 90 days recomputes every journey and moves the credit. That is not a bug, but a chart that mixes both settings compares nothing.

To avoid building this by hand, Dashcrab Attribution records each customer's journey with a first-party pixel, installed from Google Tag Manager, and calculates all seven models on the same sales, side by side, with the window and half-life you choose. A conversion is worth 1 in every one of them.


The splits in this article come from applying each model's rules to the journey described; the monthly table is a sample dataset computed with those same rules, not a client's results. The GA4 rule is as documented in October 2026.

Frequently asked questions

What is an attribution model?

It is the rule that decides how a sale is split among the touchpoints that preceded it within a time window: the ad the person saw, the search they ran, the email they opened. First touch gives everything to the first one, last touch to the last one, linear splits it evenly and data-driven measures how much would be lost without each channel. In every case the credits of one sale add up to exactly 1.

Which attribution model is the best?

There is no best one. Each model answers a different question: first touch tells you which channel starts the conversation, last touch what happened right before the purchase, data-driven how much you would lose without each channel. What does help is looking at two or three side by side on the same sales. If a channel takes almost everything under first touch and almost nothing under last touch, it opens conversations and does not close them, and that reading is worth more than any single number.

What is the difference between last click and last non-direct click?

Last click gives the whole sale to the last touchpoint, even if it is a direct visit where the person typed your address by hand. Last non-direct click walks the path backwards and gives it to the first touchpoint that is not Direct, because a direct visit almost always means someone who already knew you from another channel. Only if every touchpoint was direct does Direct keep the credit. It is the rule GA4 uses in its acquisition reports.

How is data-driven attribution calculated?

Using every journey in a period, the ones that bought and the ones that did not, you build a map with the probability of moving from each channel to the next and from there to a purchase or a drop-off. You compute the overall probability of buying. Then you remove one channel from the map and recompute: how much that probability falls is the removal effect of that channel. Each channel's credit is its removal effect divided by the sum of all of them. It is a first-order Markov chain, and it needs data volume so the map is not noise.

Does an attribution model tell me which channel caused the sale?

No. It splits the credit of sales that already happened among the touchpoints that preceded them, but it does not know which ones would have happened anyway without that ad. Not even data-driven knows: it removes a channel from a map of journeys, not from the world. Measuring cause takes an experiment, such as turning a channel or a region off for two or three weeks and watching the real sales total.

What is the half-life in the time decay model?

It is how many days it takes for a touchpoint's weight to halve as you look back from the purchase. With a 7-day half-life, a touchpoint from 7 days ago weighs half as much as one from today, and one from 14 days ago weighs a quarter. The weights are then normalized so they add up to 1. With a long half-life, 30 or 60 days, the model gets close to linear; with a short one, close to last touch.