Interactive attribution model · every figure editable
Your channels are worth whatever your attribution model says they are
The same sales can make paid search look like your best channel or your worst, depending only on which touch in the journey gets the credit. Put your channels, your spend and a few real customer journeys in below, then switch between the six common models and watch the numbers move. Nothing is sent anywhere: the model runs inside this browser tab, and the share link carries your figures in the URL.
Why the choice of model matters
Put your data in
Start from an example, then make it yours. Name the channels you buy, add what you spend on each, and write out a few of the journeys your customers actually take. Three journeys is enough to see the models disagree; add more as you go.
Your channels, and what you spend on them
Spend is only used for the ROAS and cost-per-sale columns further down. It never affects how credit is split.
| Channel | Spend |
|---|
Your customer journeys
One row is one route to a sale, in order, plus how many sales took that exact route. Group your customers into a handful of typical routes rather than listing every individual one.
Mark each touch as a click or a view. A view is an ad someone saw and did not click, like a display or social ad they scrolled past. Revenue is the total across all the sales on that row, not the value of one sale.
Choose who gets the credit
Six ways of dividing the same revenue between the touches in a journey. Pick one and everything below recalculates.
All six models, side by side
What this model is telling you
Revenue credited to each channel, Last touch
How the selected model splits your total revenue across channels. The bars always add up to your total revenue, minus anything with no touch left to credit.
The same channels under all six models
Each channel's share of revenue, model by model. Read across a row to see how much a channel's apparent worth depends on the rule rather than the data: a flat row is a safe bet, a row that swings wildly is a budget decision waiting to go wrong. The darker the cell, the better that channel does under that model. The model you picked is outlined.
Each channel across the models you pick, share of revenue
The same numbers as the table above, drawn as lines so the movement is the thing you see first. Tick the models you want on the axis and pick what to measure. A flat line is a channel that looks the same however you split the credit. A steep line is a channel whose budget rests on everyone agreeing which model is right, and where the lines cross is where two channels swap places in the ranking.
Two models is the minimum a line needs, so the last two ticked will not come off. Whichever model you picked in step 2 is marked with a green line.
The argument, settled with your own journeys
Where the money moves, first touch against last touch
Pick the two models you are actually being asked to choose between. This works out how much of the account changes hands, which channel hands it to which, and where those channels sit in your journeys, which is the reason the two rules disagree at all.
What changes hands
| Loses it | Takes it | Revenue | Of the movement |
|---|
Why it moves: where each channel sits in the journey
| Channel | Opens | Middle | Closes | Only touch |
|---|
Counted in sales, so a journey behind 650 sales counts 650 times, and a channel counts once per position per journey. A channel that opens a great deal and closes very little is precisely the channel these two models will never agree about.
Openers or closers, Last touch
Where in the journey this model puts its money: on the touch that started things, the ones in the middle, or the one that closed the sale. The grey bars are an even split across every touch, so you can see which way your model leans. Journeys with a single touch are counted separately, since that touch is both the opener and the closer.
What each channel returns, Last touch
The money columns move with the model. Touches and journeys are straight counts from your data, so they stay put whichever model is selected, and they keep counting views even when views are switched off. A channel with plenty of touches and very little credited revenue is usually the one worth arguing about.
| Channel | Touches | Journeys | Revenue credited | Share | Spend | ROAS | Cost per sale |
|---|
Method, and where to be careful
What the model assumes, and the traps in reading it
- Every model splits a journey's revenue into shares that add to 100%, so the total credited revenue is identical under all six. It only ever moves between channels, it is never created or destroyed. The one exception is unattributed revenue, from journeys with no touch left to credit, either because no channel has been picked on that row yet or because the row is all views and views are switched off.
- Position-based and custom scale the first and last touch shares back proportionally if you set them to add to more than 100%, so the middle share never goes negative.
- Time decay counts its half-life in touch positions rather than days or weeks, because journeys here are ordered sequences rather than dated events. A half-life of 1 concentrates credit heavily on the last touch or two; a half-life of 3 or more spreads it much further back.
- A journey with only one touch gives that touch 100% under every model, since there is nothing to split. It is counted on its own in the openers-and-closers chart rather than being folded into first or last, which would quietly inflate either one.
- The touch and journey counts in the channel table are straight counts from your data. They do not move with the model, and they keep counting view touches even when views are switched off, so a channel can show plenty of touches against very little credited revenue. That gap is usually the point worth looking at.
- The line chart joins six separate rules, not points on a scale, so the slope between two models is a reading aid rather than a trend. Nothing sits between last touch and linear. What the slope is good for is showing which channels change places when the rule changes, and by how far.
- Whatever loads by default is illustrative. Replace the channels, the spend and the journeys with your own exported path data before any of this is used to move budget.
- Journeys here are the ones that ended in a sale. Nothing on this page tells you what the same channels did for the people who never converted, and no attribution model can prove a channel caused anything. Treat the output as a better-argued split of the credit, not as a measurement of incrementality; a geo test or a holdout is what settles that.
- The share link encodes the whole model into the URL. It holds no personal data, but it does hold your assumptions, so treat it the way you would treat the spreadsheet.
Built by Joshua Pevy. The commercial modelling is the point; the page is just how it is delivered.