Which attribution model should you use? Start with the setup, not the model
There is no single best attribution model. Choose the setup your motion needs, build it in the right order, and measure self-serve and sales-led on their own terms.

Someone has told you to pick an attribution model, and the question is backwards. There is no single best attribution model, for B2B or anything else. The right one falls out of three earlier questions: what you are optimizing, at what level of detail, and over what window. Answer those and the model mostly picks itself.
This guide gives you the setup for your motion and the order to build it in. And if you run two motions at once, self-serve signups alongside a sales pipeline, it shows why one company-wide model misreads both, and the reporting that keeps them honest.
#Start with the three questions, not the model list
There is no single best attribution model. Answer three questions first and the model falls out: what am I optimizing (ad spend, content, pipeline coverage), at what level of detail (a user moving through a short funnel, or an account moving through pipeline stages), and over what window (days, or the length of your real sales cycle). The model is the last thing you pick, not the first.
The models themselves sort into three families, and thirty seconds is enough to place them:
- Single-touch (first-touch, last-touch) hands one touch all the credit. Cheap, biased in a direction you understand.
- Positional multi-touch (linear, time-decay, U-shaped, W-shaped) splits credit across the path by rules you set.
- Algorithmic (data-driven) derives the split from your own historical paths instead of a fixed rule.
That is the whole taxonomy. What each one is good and bad for, with the exact split percentages, lives in the full guide to the seven models; this page is about choosing, so the rest of it is the choosing.
#Match the setup to your motion
Your setup is four decisions: who gets credited, where credit anchors, over what window, and the model that falls out of those three. The model is last, not first. And because the first three change by motion, so does the setup: three motions, three setups.
| Motion | Who gets credited | Anchor | Window | Model that falls out |
|---|---|---|---|---|
| Store / ecommerce | The customer and the order | The purchase | Days, platform-aware | U-shaped or data-driven |
| Self-serve / PLG | The user | The signup | Short (days to weeks) | Data-driven, or a tracked last-touch |
| Sales-led | The account | Pipeline created | Your real sales cycle | W-shaped or custom weights |
A store runs on short windows, so the ad platforms' own attribution windows decide much of what gets claimed before your model ever sees it. U-shaped or data-driven both fit; keep a last non-direct view so returning buyers typing your URL don't absorb the credit for the ad that found them.
Self-serve is where data-driven attribution earns its place, because a high-signup funnel usually has the volume the algorithm needs; where it doesn't, a properly tracked last-touch baseline beats a model fit to too little data. It is the one motion where the platform's default is often the right answer.
A sales-led motion credits the account, not a person, and anchors at pipeline created rather than closed-won. Anchoring at Won starves the top of the funnel (by the time a deal closes, the early touches have aged out of the window) and shrinks your sample to this quarter's handful of wins. Set the window to your real cycle and the model is W-shaped or custom weights, anchored at the pipeline milestones your CRM already tracks. The weighting matters less than who you credited and when, which is why those three columns come first.
#If you're starting from scratch, build in this order
You have the setup for your motion; now stand it up. The order matters more than the model, because most of what moves your numbers happens in the first two steps. Build it like this:
- Start with last-touch, on purpose. Every tool computes it, it costs nothing, and its bias is the one everyone already understands: it flatters whatever sits closest to the sale. A baseline whose lie you know is the right floor to build from.
- Fix the level of detail before you touch weights. Get journeys credited to the account and anchored at pipeline created. This is unglamorous plumbing, identity resolution and CRM stage mapping, and it changes your numbers more than any model swap will. Skip it and every model on top inherits the same blind spot.
- Add a positional view once your stage data is real. U-shaped for simpler motions, W-shaped once lead and opportunity milestones actually exist in the CRM. Read its gap against your last-touch baseline; that gap is a map of what the baseline was hiding.
- Add data-driven attribution only where a segment's volume earns it. A self-serve funnel with real conversion volume, fine. A pipeline closing forty deals a year is not a training set, and an algorithm fit to it is fitting noise, whatever the platform's requirements page says.
- Run one holdout before any model moves serious budget. Pause the channel a model loves, or hold out a region, and watch what actually changes. One honest holdout calibrates your trust better than a year of dashboard arguments, because a model can steer budget wrong even when it reports cleanly.
And the step that only an independent page will tell you: do not buy a multi-touch tool on day one. The first two steps need plumbing, not a purchase.
#Two motions, measured on their own terms
That build order assumes one motion. Run two at once and self-serve and sales-led pull apart, because they are not measuring the same thing: one tracks a person to a purchase, the other an account through a committee. So give each motion its own setup instead of one average that fits neither.
In practice that means self-serve gets user-level credit, a short window, and data-driven or a tracked last-touch, while sales-led gets account-level credit, a cycle-length window, and W-shaped weights anchored at pipeline. Then reconcile them where they actually meet, at revenue.
That reconciliation is more concrete than it sounds, and it answers the obvious objection: if the two models are different, how do they end up in one table? You do not add their credit together, because a percentage of account pipeline and a whole user conversion are not the same unit. You join on money instead.
Each model allocates its own motion's revenue across your channels, and you set those dollar figures side by side, one column per motion, on the same channel and month rows. A campaign that feeds both motions shows a number in both columns, which is exactly what a single averaged model hides.
Here is a month of it for a hybrid company (illustrative numbers):
| Channel | Spend | Self-serve revenue | Pipeline created |
|---|---|---|---|
| Brand search | $4k | $38k | $61k |
| Google non-brand | $22k | $19k | $84k |
| Meta / paid social | $12k | $22k | $19k |
| LinkedIn ads | $30k | $6k | $178k |
| Webinars | $8k | $2k | $71k |
Read the Meta row: judged on pipeline alone it is your weakest paid channel, but it more than pays for itself on self-serve revenue. LinkedIn is the mirror image, near-dead on self-serve and your pipeline engine. Neither story survives being averaged into one number.
The one real step is deduping the overlap: an account that starts self-serve and later becomes a deal is counted once, in the motion that owns the revenue now. This is two views of one reporting layer, not two tools to run.
One company-wide model averaged across both motions is not a compromise, it is wrong for each of them in opposite directions. It over-credits the high-volume self-serve motion, because that is where the conversion count is, and it starves the high-value sales motion, because a long committee-driven deal barely registers against a flood of signups. Averaging hides both errors under one number that looks stable and is quietly false.
#The leak between motions, and the report that catches it
That averaged number hides one more thing, and it is the part no attribution platform will write for you, because we learned it running a hybrid motion ourselves. Paid volume in a two-motion company splits three ways, and only one of the three shows up in a pipeline report:
- Self-serve conversions that never touch pipeline but pay back part of the spend as revenue right away.
- Self-serve users who raise a hand for sales later, the bridge between the motions, where a signup becomes an opportunity months after the click.
- Direct sales-led pipeline, the only slice a pipeline-only report actually sees.
Judge your campaigns on pipeline alone and you undervalue every campaign feeding the first two slices, then reallocate budget away from your best-performing spend because the report told you it did nothing. The campaigns where this bites hardest are the ones you cannot split by motion in the first place: brand search captures everyone regardless of intent, and broad Performance Max mixes intent by design. You cannot separate the motions in the campaign structure, so the reporting layer has to carry both.
The fix is a reporting choice, not a model choice. Either report two lines per campaign against the same spend, an immediate-payback line and a pipeline line, or collapse them into one expected-value line: margin plus the probability the signup becomes pipeline times the pipeline value, starting with rough proxies and refining later.
Either way, the one thing that makes it possible is an attribution requirement: account-level identity, and a window long enough that the signup's original ad touch is still credited when that account becomes an opportunity months later. Lose the identity or clip the window and the bridge slice vanishes from your numbers, exactly the slice that proves the top of your funnel is working.
This is the reporting job Buron is built for. Its datasets (the modeled tables people and agents query) credit the account, anchor at whichever CRM stage you pick, and keep per-team model visibility, so a self-serve view and a sales-led view run side by side and reconcile at revenue instead of fighting inside one averaged number. Account identity is what keeps that bridge slice alive. (Feeding those expected values back to the ad platforms as a bidding signal is a separate job, and a separate guide.)
#The model is the last decision, not the first
You are not really choosing an attribution model. You are choosing who gets credited, where credit anchors, and over what window, and the model falls out of those three. Run that choice once per motion, because a company with two motions has two right answers, and reconcile them at revenue. The reason to keep two legible setups instead of one clever averaged one is the same reason to keep any model legible: a team, or the agent reading the report on Monday, can only act on credit it can explain.
The theory here is easy. The hard part is keeping two setups consistent and reconciled while the same campaigns feed both, and keeping the account identity that holds the bridge between them together. That is the job worth handing to something built for it, and the seven-model table is one click away when you want the splits.
#Frequently asked questions
#What is the best attribution model for B2B?
There is no single best model. Match it to your motion: a sales-led team gets the most from W-shaped or custom weights, credited at the account level and anchored at pipeline created; a self-serve funnel with real volume can trust data-driven attribution or a tracked last-touch baseline. A company running both motions should run both setups and reconcile at revenue, rather than average them into one model that is wrong for each.
#Should self-serve and sales-led use the same attribution model?
No. Self-serve and sales-led measure different things: a user's path to a purchase versus an account's path through pipeline. Run one setup per motion, at two levels of detail (the user for self-serve, the account for sales-led), with two window lengths, and reconcile them at the revenue layer. One averaged model over-credits the high-volume self-serve motion and starves the high-value sales motion.