50% off until Dec 31st
Blog

Cost Per Lead: Formula, SaaS Benchmarks and How to Lower It

Cost per lead is what you spend divided by the leads you get. The formula, why SaaS benchmarks disagree, and how to lower it without buying more traffic.

Sunny MorozFounder of DemoSix7 min read

If you resell GoHighLevel, or any software, you probably know what your ads cost per lead. It is on the screen in Ads Manager. What did the leads from your emails, your proposals and your website cost? There is no screen for that.

That gap is the point of this post. Below: what cost per lead is, the formula, what the published SaaS benchmarks say (they disagree), and one way to lower it that the guides I read say little about. I'm Sunny, the founder of DemoSix, so I have a stake in that last part. Every number from another site is linked so you can check it yourself.

What is cost per lead?

Cost per lead (CPL) is what you spend to get one new lead: a person who has given you their contact details.

It is not what you spend to win a customer. HubSpot's guide separates the two: CPL stops at the lead, while cost per acquisition is what it takes to convert a prospect into a customer. For that second number, see my post on customer acquisition cost.

Cost per lead formula

The formula is one line:

CPL = total cost of the campaign ÷ number of new leads it produced, over the same period

HubSpot writes it as the cost of lead generation divided by the total number of leads. The division is easy. What goes into the top is where people go wrong.

Klipfolio's guide says to count every dollar: ad spend, creative production, software subscriptions and agency fees. Leadfeeder makes the same point from the other side. It says most CPL calculators count only advertising, which underestimates your true CPL, because you also pay for things like building and tuning the landing page that captures the lead.

Here is an example. The numbers are made up, to show the arithmetic. In one month you spend $6,000 on Meta ads and $1,000 on creative and a landing page tool. That is $7,000. The ads bring in 35 leads.

CPL = $7,000 ÷ 35 = $200.

Work it out per channel, not for the whole company. A blended number hides which channel is doing the work. Keep the period the same for costs and leads, and keep your rule for what counts as a cost the same every month.

What is a good cost per lead for SaaS?

Nobody agrees, and I found out why. Three sources, three answers for SaaS:

  • First Page Sage's 2026 report (updated October 8, 2026) puts B2B SaaS at $318 per paid lead, $186 per organic lead and $249 blended. It says a paid lead in B2B SaaS costs 71% more than an organic one. First Page Sage is an agency that sells SEO and lead generation.
  • Sopro's 2025 update lists B2B SaaS at an average of $188, with a range from $65 to $310. Sopro sells lead generation too.
  • Klipfolio, which sells dashboards, says $20 to $50 per lead is often reasonable for SaaS.

That is a wide gap: Klipfolio's top figure is $50, and First Page Sage's blended figure is $249. Part of it is how each defines a lead. First Page Sage counts a direct connection with someone interested in buying, by email, phone or in person. Sopro says that every CPL study counts different things as a lead: a content download, a business card, a positive reply, a demo request. A form fill and a booked meeting are not the same lead, and they do not cost the same.

HubSpot's answer is the honest one: there is no definitive CPL that fits every business. It depends on your industry, your competition, your audience, your company size and what you sell. A CPL of $100 on a $50 product is a problem. On a $5,000 product it may be fine.

So use the benchmarks as a sanity check, and your own number from last quarter, by channel, as the real one.

Then take one more step. Divide your CPL by the share of leads that become customers. Again made up: at a $200 CPL, if 5% of leads become customers, each customer costs $4,000 in lead cost alone ($200 ÷ 0.05). A cheap lead that never converts is expensive. A pricey one that does can be a bargain.

The part of the CPL fraction the guides skip

CPL is a fraction, so there are two ways to shrink it: cut the top, or grow the bottom.

Klipfolio's fixes are a good example of the usual advice: tighter targeting, better ads, a better landing page, retargeting, budget shifts, testing, smarter bidding. All of it is worth doing. All of it is about spending less, or converting better, on traffic you buy.

The guides I read say little about the bottom: more leads from people you already reach, with no extra media cost. You send emails every day. You send proposals. Your site gets visits you did not pay for. Most of those people look, like what they see, are not ready to book a call, and leave. You never learn their names.

A Watch a Demo link changes that. They click, leave a name and email on a page with your branding, and the demo plays. No account needed. That person is now a lead, and no ad bought them. Put it in your email signature, on your site, in proposals, or as a plain link in a message.

It is not free, and you should count it. Your time setting it up goes in the top of the fraction. So does the plan, if you pay for one. Capture Leads is on every plan, and Basic is free: 1 link, just the owner, 50 new leads a month.

Here is the made-up month again, with those leads added. Still invented: the signature, website and proposals bring 25 more leads, and you put $500 on the cost side for setup time and your plan.

Blended CPL = ($7,000 + $500) ÷ (35 + 25) = $125.

That is 37.5% lower than $200, with no more ad spend. Two cautions. First, the ads still cost $200 a lead. Only the blend fell, so keep each place on its own line. Second, the 25 is an invented example, not a promise. How many leads your signature and site bring depends on your visitors, your demos and how many people see the link.

Reading cost per lead by place

A blended number is only useful if you can split it. The Leads list in DemoSix shows each lead's name, email, where they came in from and how far they watched. "Came in from" reads Email signature, Website button, Website embed, Ad or Link. How far each lead watched is on every plan, Basic included.

An ad lead reads "Ad" whichever platform sent it. If you want Meta and Google apart, give each ad its own link. A link is a Capture Leads link with its own name, form and demos, and it says where a lead came from. Basic has 1 link, Standard has 5 links and 10 reps, and Teams has 10 links and 50 reps. A rep is a person with their own copy of a link, so you can see who brought a lead in.

Then divide each place's cost by its leads. You can export the list to CSV. On Standard and Teams, each lead also lands in your CRM, GoHighLevel or HubSpot, so the count sits where your team already works. If you run a GoHighLevel agency, the GoHighLevel page shows exactly what arrives on the contact.

Look at how far each lead watched next. A lead who watched most of a demo and one who never pressed play are the same lead on a CPL sheet and very different calls on Monday. That is why I would not stop at CPL. I made the same case for other offers in the post on B2B lead magnets.

What a Watch a Demo link does not do

  • It does not create traffic. If nobody sees your signature, proposal or page, nobody clicks.
  • It asks for a name and email before the demo. A form costs some viewers. The trade is a name for the ones who stay.
  • It does not prove lead quality. A lead is a lead on the form. How far they watched and what they do next tell you more.
  • It does not replace your ads. For a paid channel, the ad versus lead form question is still the one to answer, and the landing page post covers the page.

The takeaway

Cost per lead is what you spend divided by the leads you get. Count every cost, work it out per channel, and judge it against the share of leads that become customers, not against someone else's average. Then look at the bottom of the fraction. List every place you already reach people, put a Watch a Demo link in each one, and give each its own line on the sheet. See which ones bring leads you did not have to buy.