Attribution

Working out what it costs to get a customer

How the same customer could have a CAC (customer acquisition cost) of £3,250 or £16,208 depending on the math you use

There's no true number

In complex B2B—many touches over a long sales cycle before anyone buys—calculating CAC is harder than it looks. There's no single true number to find: what a customer costs depends on which deals you count, which costs you load in, and over what period. It's all choice.

And those choices move it further than you'd think. Across the same 70 deals, the honest cost of a LinkedIn customer runs anywhere from £3,250 to £16,208—every method correct.

So the goal isn't the right number; it's a defensible one. Pick a method your team and your founder can stand behind, then stick with it—so you're measuring change, not redrawing the baseline every quarter. It'll stay a little imperfect, and that's the problem, not you.

Let's look at an example

It's easier to show than to describe. I'll take LinkedIn Ads as the worked example throughout—it's the channel this business spends most on, and the one a CFO would ask about first—but nothing here is specific to LinkedIn; the same choices move the CAC for any channel. Below, each of those choices is a control over the same 70 deals; adjust them and the LinkedIn CAC moves with them.

I've also made a skill with which you can create your own CAC explorer—from your own deals, across every channel you run. Take a look.

This tool needs JavaScript; every figure is computed live from the dataset.

This one follows LinkedIn to make the point; the skill builds you one for every channel, from your own deals—try it out.

Nothing in the data changed—only the choices. Across the same 70 deals, the LinkedIn CAC ranges from £3,250 to £16,208, and each figure is arrived at correctly. The rest of this page works backwards through why it moves that far, and how to report a number you can defend.

If a result here surprises you, treat it as a hypothesis to test rather than a reason to rewrite your reporting. Everything runs on 70 deals; the full dataset is at the bottom of the page.

Where the spread comes from

Three choices sit behind every figure in the explorer, and each moves the number on its own. Here they are, one at a time.

The rule that splits the credit

An attribution rule is just a way of splitting the credit for a deal across its touches. Six turn up here—the first four split credit, the last two only count deals.

RuleWhat it does
First-touch100% of the credit to the first touch.
Last-touch100% to the last touch.
LinearSplit evenly across every touch.
Position-based40% first, 40% last, 20% across the middle.
Any-touchEvery channel on the deal gets full credit; totals exceed the deal count.
Sole-touchCounts only when it was the deal's only touch.

Change the rule and the channels re-rank. That settles the denominator—how many deals count as LinkedIn—which is half of the CAC.

Two of the six aren't really credit splits, though—they're counting rules. Any-touch gives every channel a deal touched full credit, so one customer is counted several times over and the credited total comes to 98, not 70; sole-touch counts only the deals a channel closed alone. They mark the honest outer edges of the range, but you wouldn't publish a CAC built on either—a number you'd actually stand behind comes from the four rules that split each deal's credit to a single total.

Drawing the cost boundary

The cost is the other half, the numerator, and it has choices of its own. The first is how wide you draw the boundary around what a LinkedIn customer actually cost.

Cost boundaryWhat's in it
Media onlyJust the LinkedIn ad spend. Clean, and almost certainly an undercount.
Agency & toolingAd spend plus the retainer and tools behind it, allocated to LinkedIn.
Fully loadedThe above plus people—40% of a demand-gen manager. Most complete, least certain.

Timing: which months count

The last choice is timing—which months of spend you hold this year's closes accountable for.

TimingWhat it assumes
Same-periodThis year's spend over this year's closes. Simple, and it bills recent spend for customers it hasn't produced yet.
Lag-adjustedDrops the last ~3 months of spend, since the median deal takes 84 days to close. Rougher, and biased the other way—it drops immature spend but still ignores last year's, which drove some of this year's early closes.

Neither timing is strictly right. The clean fix is to match each month's spend to the customers it actually acquired—cohort accounting—but that needs per-touch dates this dataset doesn't carry, so both options here are rough by necessity.

All three are controls in the explorer above—change any of them and watch the LinkedIn CAC move.

Self-reported sources: what they're worth

The obvious shortcut is to ask the customer directly—the "how did you hear about us?" box. It's cheap, it comes from the person who actually decided, and it's the one input that can name a channel you don't track at all. In principle it sidesteps the whole attribution problem.

In practice it's noisy. People misremember, credit the last thing they touched or the answer that sounds diligent, and often leave it blank—a third did here. A preset dropdown doesn't rescue it: forced to choose, people pick the first plausible option or whatever tops the list, so you trade blanks for confident noise, and you still can't list every source that matters—the podcast, the specific post, the colleague's DM never make the menu.

So it isn't a record. But it isn't useless either: it's the only place untracked demand—a podcast, someone's posts, word of mouth—shows up at all. The sensible use is as one noisy witness, read against the tracked path. Not the truth, but a second opinion—and sometimes the only one that saw the room.

The solution: pick a rule, stick with it

Pick one rule, fix the cost boundary, fix the timing, and report that single number—but don't pick it alone. Sit down with your founder and whoever owns the budget and agree an approach together: which rule, which costs, which window. Everyone who reports uses the same one; if your paid-ads person runs last-touch while you run position-based, your combined number means nothing.

If you want somewhere to start that conversation, here's what I'd put on the table: a linear split, fully-loaded cost, same-period timing. Linear because it's the hardest rule to argue with—no weights to haggle over; fully-loaded because that's the cost your finance team will recognise; same-period because a consistent window beats a cleverer one you'll second-guess. On this data that lands at about £10,500 a customer. It isn't the right answer—there isn't one—just a defensible default to adopt together or argue down.

How far it can still move

Worth knowing before you commit: most of the range collapses once you decide how you count. In the worked example the full span runs £3,250£16,208; fix fully-loaded cost and same-period timing and it tightens to £7,294–£16,208—still wide, but now only the attribution rule moves it. That's where your judgement goes.

What it's good for

Held steady, it earns its keep. Teams that have made peace with imperfect attribution land in the same place: a consistent, directional CAC used to spot change, rather than an accurate one they'll never have. Mostly it's a diagnostic—because the method is fixed, a jump means something in the world moved: a channel saturating, a competitor bidding you up, a weak quarter of creative. It won't say which, but it tells you where to look, sooner than you'd notice.

Taken seriously, it also sizes the spend: if a customer costs about £10,500, doubling customers is a budget you can put a number on. Where the next pound should go is a different question—that's modelling, the forward-looking econometrics and incrementality Les Binet keeps separate from day-to-day attribution. I set out to build it and found another beast entirely. CAC points you in a direction; the route is a separate job. And a cost only means something against a value: whether a customer at that price is worth having is the CAC-to-LTV question, which this piece leaves alone too.

First, build the right thing

None of this beats getting the product right. Especially early, the best thing you can do is understand your customer, find a real pain, and build something that genuinely helps—then do it again. The numbers are a directional guide; don't mistake the map for the territory.

If any of this is useful, or you want a hand working out your own numbers, message me on LinkedIn.

What's not in here: brand

Everything above is activation spend—money meant to buy a touch you can trace. Brand isn't in these numbers and can't be: it's real, often decisive, and needs judging on its own terms, not as a CAC. That's a separate piece.

The data this all runs on

Every figure on the page is computed from this—the 70 deals, the monthly spend, and the cost build-up. Have a look, or take it away and check my working.

This needs JavaScript to render the sheets.

Download the data (JSON)

Every figure here is computed from dataset.json by attribution.js.