Cost per lead & ROI

Spend, divided by the leads it actually produced

Every agency reports cost per lead. Most of them report spend divided by the leads their tracking happened to catch — which is a different number, always flattering in the same direction, and impossible to defend the first time a client counts their own enquiries.

Spend synced nightly · Calls and forms both counted · Per channel, campaign and keyword

Spend comes from the ad platforms directly. Nobody is typing numbers into a sheet.

NightlySpend pulled from each connected ad account, with currency preserved
Every leadCalls, forms and taps in the denominator, not just the easy ones
To keywordDown to the search term where the platform will tell you

Two numbers, one division, and a great deal of room for error

Cost per lead is arithmetic. Take what was spent, divide by the leads it produced. There is no modelling, no attribution theory, no judgement call. Which is exactly why it is worth being careful about: when a metric is this simple, every error in it comes from the inputs, and both inputs are usually wrong.

The numerator is wrong when spend is copied by hand. Somebody exports Google Ads on the third of the month, before the platform has finished restating the last few days. Somebody forgets Microsoft entirely, because it is small. Somebody records a figure in dollars into a column that is otherwise pounds. Somebody uses the invoice total, which includes a management fee, in a report the client believes is media spend. None of these is exotic; all of them are the ordinary consequence of a human being copying numbers between systems once a month while busy.

The denominator is wrong more often and more severely. If your tracking sees forms but not calls, and the client is a plumber, you might be dividing by a third of the leads. Cost per lead comes out at three times the real figure, and every decision made on it — pause this campaign, cut that channel, raise the retainer — is made on a number with a 200% error in it. The direction is consistent, which is worse than noise, because consistent error feels like signal.

And the two errors interact in a way that hides both. An agency reporting inflated CPL against under-counted leads will find their client says "that seems expensive" and the agency, looking at their own report, agrees. Nobody investigates a number both parties believe. The account gets optimised towards whatever the broken measurement rewards, which is usually the channel that produces forms rather than the channel that produces business.

Getting cost per lead right is therefore not a reporting nicety. It is the arithmetic underneath every budget decision on the account, and it deserves to have both of its inputs pulled automatically from the systems that own them.

Where each half of the number comes from

Both sides are collected by machines, on a schedule, and stamped with where they came from. That provenance is the part that matters when somebody queries a figure eight months later.

  1. Ad accounts are connected once

    Google Ads, Microsoft Advertising, Meta, LinkedIn, TikTok, Pinterest, Reddit, X, Amazon Ads and Snapchat authorise through OAuth. No API keys pasted into a settings box, no spreadsheet export, no monthly ritual.

  2. Spend syncs nightly, and re-syncs history

    Platforms restate recent days as invalid clicks are removed. A sync that only ever fetched yesterday would lock in figures the platform later corrected, so a trailing window is refetched every night and the stored numbers move with the source of truth.

  3. Manual spend has a place too

    Not everything has an API — a directory listing, a sponsored newsletter, a radio spot, a print ad. Enter those against a channel and they sit in the same divisions as everything else, clearly marked as manually entered.

  4. Leads arrive already attributed

    Calls carry the source their tracked number was assigned. Forms carry the session they were submitted in. Neither has to be matched to spend by hand because both already know where they came from.

  5. The division happens per channel, campaign and keyword

    At whatever depth the platform reports spend and the tracking reports source. Google Ads goes to keyword. A radio spot goes to channel. The report shows each at the depth it honestly supports rather than inventing detail.

The four numbers, and which decision each one is for

These get used interchangeably in agency decks and they are not interchangeable. Being precise about which one is on the slide prevents a lot of arguments.

The progression down this table is the progression from a number you can produce alone to a number that requires the client's cooperation — and value rises the whole way.
MetricThe arithmeticAnswersWatch out for
Blended CPLAll spend ÷ all leads"What does a lead cost this client, overall?"It hides everything. A great channel and a dreadful one average into an unremarkable middle, and the middle tells you nothing about what to do next.
True CPL by channelChannel spend ÷ leads attributed to that channel"Which channels are worth more budget?"Organic and referral have leads and near-zero spend, so their CPL approaches zero. That is real, but it is not an argument for moving paid budget into it.
Cost per qualified leadSpend ÷ leads marked as genuine opportunities"Which channel produces work we actually want?"Needs somebody to mark quality. Where the client will do it, this is the most useful number on the page by a distance.
Cost per acquisitionSpend ÷ jobs won"What does a customer cost?"Requires close data from the client. Worth chasing: a channel with a high CPL and a high close rate routinely beats a cheap channel that never closes.

The cheap-lead trap, and how to get out of it

Optimise hard towards cost per lead and you will eventually damage an account. The mechanism is simple and it catches experienced people: broad, cheap traffic produces plenty of enquiries at a low unit cost, so it wins on the metric being watched. Narrow, expensive, high-intent traffic produces fewer enquiries at a higher unit cost, so it loses. Budget migrates from the second to the first. Lead volume rises, cost per lead falls, the report looks like a triumph, and the client's revenue does not move.

Three months later the client says the leads are rubbish. They are right, and the report that says otherwise is the agency's own doing. This is the single most common way a well-run account goes wrong, and it is caused entirely by optimising a proxy without ever checking the thing the proxy stands for.

The way out has two parts. First, get quality into the data. The lead pipeline lets a lead be marked — new, contacted, qualified, won, lost — and once even a fraction of leads carry a status, cost per qualified lead becomes computable and immediately starts disagreeing with cost per lead. That disagreement is the whole point. Second, get value in where the client will provide it. A job value on won leads turns the same division into return on ad spend, and the ranking of channels frequently inverts.

The practical objection is that clients do not update their CRM. Some do not, and for those you report volume honestly and say what it does and does not tell you. But many will mark leads if the friction is low enough — which is why leads are pushed into Slack, into SMS, into the CRM they already use, with a status they can set from where they already are. Asking a client to log into your dashboard to categorise leads fails reliably; asking them to hit a button in the tool they use all day sometimes works.

Even partial data is transformative. If a client marks half their leads, the close rate per channel over that half is a far better guide than volume over all of it. Report the coverage alongside the number — "based on the 54% of leads with an outcome recorded" — and you have something defensible rather than something impressive.

What shows up once both halves are real

These are the findings that recur across accounts once spend and leads are joined properly. They are common enough to be worth checking for deliberately.

The keyword that eats the budget

One broad term consuming a quarter of the spend and producing leads at four times the account average. Visible in minutes at keyword-level CPL; invisible in a campaign-level report.

The channel that looked dead

A channel with almost no form fills and a healthy volume of calls. Before call tracking it looked like a waste of money; afterwards it is often the best CPL on the account.

The day-of-week pattern

Spend distributed evenly across seven days while leads cluster into four. Ad scheduling then does more for CPL than any amount of copy testing.

The mobile gap

Mobile producing taps and calls at a good rate while desktop produces forms at a poor one, with bids set as if the two were equivalent.

The expensive channel that closes

Highest cost per lead, highest close rate, best cost per acquisition. Only visible once outcomes are marked — and routinely the first channel a CPL-driven agency cuts.

The spend nobody counted

A directory listing or a sponsorship paid by the client directly, never in the agency's figures, quietly producing leads the agency was taking credit for.

The things that make this number trustworthy

Most of these are unglamorous. All of them are the difference between a figure that survives a client's scrutiny and one that does not.

  • Spend restatement is handled. Platforms revise recent days downward as invalid clicks are removed. A trailing window is refetched nightly so your stored spend follows the platform rather than freezing at whatever it said first.
  • Currency is preserved, not assumed. An account billing in euros stays in euros with its rate recorded, so a multi-currency client does not silently acquire a 15% error.
  • The day is the client's day. Spend and leads are bucketed in the client's timezone. Otherwise the last few hours of every month land in the wrong month on one side of the division and not the other.
  • Duplicate leads do not inflate the denominator. A visitor who submits twice, or fills a form and then rings, is one lead. Deduplication happens against the session before anything is divided.
  • Spam is excluded and still visible. Junk submissions are set aside rather than deleted, so the denominator is real enquiries while the excluded pile stays auditable.
  • Unattributed leads are shown, not distributed. Leads with no source sit in their own bucket. Spreading them proportionally across paid channels is a common trick and it flatters exactly the channels you are trying to evaluate.

Turning cost per lead into a retention argument

Agencies lose clients in a fairly narrow set of ways, and by far the most common is that the client cannot see what they are buying. Not that the work was bad — that the value was invisible. A monthly report full of impressions, sessions and average position is a report about activity, and a client under cost pressure cuts activity without much hesitation.

Cost per lead is the smallest number that speaks the client's language. It is measured in money, it is per unit of the thing they actually want, and it is comparable to alternatives they understand — what a lead costs from a directory, from a lead-buying service, from their own van livery. When an agency can say "your leads cost £41 through us and the lead vendor you were using charges £95", that is not a marketing claim, it is a price comparison, and it survives a conversation with a finance director.

It also makes the retainer conversation concrete. A client paying £2,000 a month who receives 60 leads at £41 media cost can see the arithmetic themselves. Some will conclude it is good value. Some will not, and will say so, which is uncomfortable and considerably better than silent attrition. In both cases the conversation is about a shared number rather than about whether the agency is doing anything.

The strongest version of this is trend rather than level. A CPL that has fallen from £78 to £41 over nine months while volume held is a plain demonstration that the work compounded. That chart, shown at renewal, does more for retention than any amount of narrative — and it only exists if the number was being measured consistently from the start, with the same definition, which is an argument for getting the measurement right in month one rather than in month nine when you need it.

The cost side of your own business, not just the client's

There is a second cost per lead that agencies rarely calculate: yours. Running tracked numbers, recording calls, transcribing them and delivering leads all consume real money — telephony minutes, number rental, transcription seconds. On a small account those costs are trivial. On an account that suddenly starts receiving four hundred calls a month, they are not, and the agency discovers it at the end of the month when the bill arrives.

That is why usage is metered per client rather than pooled invisibly. You can see what a given account is costing you to run, set a ceiling on it, and be warned before the ceiling is reached rather than after. An agency reselling at a fixed monthly price needs to know which of its accounts has quietly stopped being profitable, and the only way to know is to attribute the underlying cost the same way you attribute the leads.

The same machinery supports charging for it. Where you resell, per-client usage becomes the basis of a line item you can defend, with a margin you set. Where you absorb it, it becomes an early warning. Either way the number exists, which is more than can be said for most agency cost structures, where telephony sits in a single supplier invoice that nobody has ever split by client.

How it connects to everything else

This page is downstream of almost everything. Cost per lead needs call tracking and form capture to have a denominator that includes all the leads. It needs attribution to decide which channel a lead belongs to when the journey had several. It needs the lead pipeline to distinguish a lead from a qualified one. And it needs connected ad accounts for the numerator.

That dependency chain explains why cost per lead is so often wrong in practice: it is the metric most exposed to gaps anywhere upstream of it. An agency with excellent Google Ads management and no call tracking will produce a confidently wrong CPL, and the confidence is doing the damage.

Downstream, it lands in the client-facing report and in the scheduled monthly email, with the definition stated. Where the client has connected a CRM, won-value flows back and the same division becomes return on ad spend without anybody re-entering anything.

The practical consequence of that chain is that cost per lead is the best single check on whether the rest of the setup is sound. If the figure looks implausible — startlingly cheap, startlingly expensive, wildly different between two similar clients — the fault is almost never in the arithmetic. It is a missing tracked number, an ad account that stopped syncing, or a form the snippet never saw. Treat an implausible CPL as a diagnostic rather than a result and it will find your gaps for you.

Common questions

Where does the ad spend figure come from?

Directly from each connected ad platform over its API, synced nightly. Google Ads, Microsoft Advertising, Meta, LinkedIn, TikTok, Pinterest, Reddit, X, Amazon Ads and Snapchat are supported. Anything without an API — a directory, a sponsorship, print — can be entered manually against a channel and is flagged as manual in the reporting.

What is the difference between blended and true cost per lead?

Blended divides all spend by all leads, including the free ones from organic and referral, which produces a comfortable number that hides everything. True CPL divides each channel's spend by the leads attributed to that channel. Blended is fine for a headline; every actual budget decision needs the per-channel figure.

Are phone calls counted in the lead total?

Yes, and it is the main reason the number differs from what agencies usually report. Tracked calls arrive with their source attached, so they sit in the denominator alongside forms. On a typical trades account calls are most of the leads, which means CPL calculated without them is roughly triple the real figure.

Can I see cost per lead by keyword?

Where the platform reports at that depth, yes — Google Ads and Microsoft both do. The report shows each channel at the depth it honestly supports rather than inventing keyword detail for a channel that never provided any. Keyword-level CPL is usually where the largest single saving on an account is hiding.

How do you handle spend the platform later revises?

A trailing window of recent days is refetched every night, so stored spend follows the platform as it removes invalid clicks and restates. A sync that only ever fetched yesterday would permanently lock in figures the platform itself no longer stands behind, which is a small error that compounds across a year.

Can I report return on ad spend rather than cost per lead?

Yes, once value is present. Mark leads won and attach a job value — manually, or through a connected CRM — and the same division becomes revenue over spend. Channels frequently reorder when you do this, because the expensive channel that closes usually beats the cheap one that does not.

What about leads with no identifiable source?

They sit in their own unattributed bucket and are shown as such. Distributing them proportionally across paid channels is a common practice that quietly improves exactly the numbers you are trying to evaluate, so it is not done here. Reporting the size of the unattributed bucket is more useful than hiding it.

Does the client see these numbers?

Whatever you choose to show them. The shared report can include cost per lead by channel, or lead volume only, or a fully white-labelled view under your own domain and branding. Agencies differ on how much of the media arithmetic they expose, and that is a per-client setting rather than a fixed rule.

How quickly does a new account produce a usable figure?

Spend history backfills on connection, so the numerator has depth immediately. The denominator starts the day tracking goes live and needs a few weeks before the per-channel splits stop being noisy. Expect a headline figure in week one and defensible channel comparisons in month two.

Will this make my numbers look worse than the client's current report?

Usually the opposite, because counting calls raises the lead total and lowers cost per lead. Where it does look worse it is because spend that was previously omitted is now included. Either way, walk the client through the change once at the start — a number that moves without explanation costs more trust than it is worth.

Recalculate one client's cost per lead with the calls included

Take the CPL you reported last month, add the phone leads, and see what the number actually is. On most local accounts it falls by more than half.