# Cost Per Lead Calculator (and Marketing ROI)

Cost per lead (CPL) is what you pay a marketing channel for each inquiry: spend divided by leads. It only means something next to your booking rate. $2,000 that brings 40 leads is a $50 CPL; if 45% book at a $520 ticket and 50% margin, you could pay up to $117 per lead and still break even.

## Key takeaways

- Cost per lead = channel spend ÷ leads from that channel. Calculate it per channel, never blended.
- Cost per booked job = spend ÷ jobs. It's the number that tells you which channel actually works.
- Break-even cost per lead = average ticket × gross margin × booking rate.
- Measure marketing ROI on gross profit, not revenue. Revenue ROI (ROAS) flatters every channel.
- Raising your booking rate lowers your cost per job on every channel at once.

## How do you calculate cost per lead?

Divide what you spent on one marketing channel by the number of leads it produced in the same period. A lead is any real inquiry: a phone call, a web form, a text or a marketplace request. Take out spam, wrong numbers, job seekers and duplicates before you divide, or your CPL will look better than it is.

**Formulas**

```
CPL = S ÷ L   ·   Cost per job = S ÷ (L × B)   ·   ROI = (L × B × T × M − S) ÷ S   ·   Break-even CPL = T × M × B
```

Where:
- S = spend on the channel for the period
- L = leads from that channel in the same period
- B = booking rate: share of those leads that became a paid job
- T = average ticket
- M = gross margin: (revenue − labor − materials) ÷ revenue

1. **Pick one channel and one month.** Local Services Ads, Google Ads, a lead marketplace, mailers. Pull the spend from the invoice or the ad account.
2. **Count real leads.** Use call tracking numbers or your CRM's lead source field. Ask every caller how they found you if you don't have tracking yet.
3. **Count the jobs those leads turned into.** Paid jobs only, not estimates. For project trades with long sales cycles, use a full quarter.
4. **Enter your ticket and margin.** Use the average ticket for jobs from that channel if you have it; emergency and replacement leads often run higher.

> **Worked example**
>
> An HVAC company spends $2,000 on Local Services Ads in a month and gets 40 leads: a cost per lead of **$50**.
>
> It books 45% of them, 18 jobs, so each booked job cost $111 in ad spend.
>
> At a $520 average ticket, those jobs bring $9,360 in revenue (a 4.68x return on ad spend) and $4,680 in gross profit at 50% margin.
>
> After paying for the ads, the channel returned $2,680 of gross profit: a **134% marketing ROI**. The break-even cost per lead is $520 × 50% × 45% = $117, so the shop has room to bid higher for more leads.

## Which lead source is actually cheapest?

The channel with the cheapest leads is often not the cheapest source of jobs. Shared leads are sold to several contractors, so fewer of them book. The table runs the same calculator on four example channels for the shop above.

**Same shop, four channels (example numbers)**

| Channel | Cost per lead | Booking rate | Cost per booked job | Gross profit after spend | ROI |
| --- | --- | --- | --- | --- | --- |
| Local Services Ads | $50 | 45% | $111 | $2,680 | 134% |
| Google search ads | $100 | 35% | $286 | -$270 | -9% |
| Shared lead marketplace | $30 | 15% | $200 | $360 | 30% |
| Direct mail postcards | $125 | 50% | $250 | $60 | 4% |

_Illustrative assumptions for one HVAC shop with a $520 ticket and 50% gross margin, not industry benchmarks. Enter your own channel numbers above._

The marketplace has the cheapest leads at $30 each, but at a 15% booking rate every job costs $200. The postcards cost $125 a lead and still produce jobs for $250, because people who call from a mailer already chose you. Judge channels on cost per booked job and ROI, not CPL.

## What is a good cost per lead for home services?

A good cost per lead is any CPL below your break-even: average ticket × gross margin × booking rate. For outside reference, LocaliQ's 2026 search advertising benchmarks put the average Google Ads cost per lead for the Home & Home Improvement category at $90.92, against $66.69 across all industries, with an average cost per click of $8.33. That category mixes many trades, so your own break-even is a better yardstick than any average.

Local Services Ads work differently from search ads. Google charges for each valid lead rather than each click, and says lead prices vary with your location, the job type, the type of lead and your bidding mode. Leads Google judges invalid or low quality are credited back. Under Google's own rules, a call you miss during your business hours counts as a valid lead if the caller stays on the line for more than 20 seconds, so an unanswered phone can still cost you the lead fee.

## Marketing ROI vs. ROAS: which should you use?

Return on ad spend (ROAS) is revenue ÷ spend. Marketing ROI is (gross profit − spend) ÷ spend. ROAS of 4.68x sounds better than an ROI of 134%, but only ROI tells you whether the channel made money after labor and materials. A 2x ROAS at a 40% margin is a loss. Use ROAS to compare campaigns inside one ad account; use ROI to decide where the marketing budget goes.

## How to lower your cost per job without cutting ads

1. **Answer every lead you pay for.** Missed calls from paid channels are pure waste. See the [missed call calculator](https://www.brix.so/tools/missed-call-calculator).
2. **Respond in minutes.** Shared and web leads go to whoever reaches them first. Model it with the [speed to lead calculator](https://www.brix.so/tools/speed-to-lead-calculator).
3. **Track booking rate by channel** and coach the calls that don't book. See the [booking rate calculator](https://www.brix.so/tools/booking-rate-calculator).
4. **Follow up the leads who didn't book.** A text the same day and again in a few days wins jobs you already paid for.
5. **Check the lifetime value of each channel's customers.** A channel with a higher cost per job can still win if its customers come back. See the [customer lifetime value calculator](https://www.brix.so/tools/customer-lifetime-value-calculator).

BRIX answers every call around the clock, texts back anyone it misses and follows up every lead automatically, so more of the leads you pay for turn into booked jobs.

- [AI receptionist](https://www.brix.so/features/ai-receptionist): Answers every call 24/7, qualifies the caller, books the job and texts back anyone it misses.
- [Missed-call text back](https://www.brix.so/features/missed-call-text-back): Texts a caller back within seconds when a call is missed, so the lead stays with you.
- [Sales automation](https://www.brix.so/features/sales-automation): Follows up every lead and open estimate automatically by text and email, and asks every customer for a review after the job.

## Frequently asked questions

### How do I calculate cost per lead?

Divide what you spent on a channel by the number of real leads it produced in the same period. $2,000 of spend and 40 leads is a $50 cost per lead. Remove spam, duplicates and job seekers first.

### What is the difference between cost per lead and cost per acquisition?

Cost per lead counts every inquiry. Cost per acquisition, or cost per booked job, counts only the leads that became paying jobs. If you book one in three leads, your cost per job is three times your cost per lead.

### How much should I pay per lead as a contractor?

Up to your break-even: average ticket × gross margin × booking rate. A $520 ticket at 50% margin and a 45% booking rate breaks even at $117 a lead. Pay less than that and the channel makes money on the first job; customer lifetime value gives you more room.

### How do I calculate marketing ROI?

Subtract what you spent from the gross profit the channel produced, then divide by what you spent. Gross profit, not revenue, because labor and materials have to be paid before marketing can earn anything back.

### Do Google Local Services Ads charge for missed calls?

They can. Google's help page says a call you miss during your business hours is a valid, chargeable lead if the caller stays on the line for more than 20 seconds. You pay for it whether or not you win the job, so answering every call matters.

### Why is my cost per lead going up?

Common reasons are more competition bidding in your area, seasonal demand, a smaller service area or poorer ad relevance. Also check that leads are counted correctly. If tracking breaks, CPL appears to rise even when nothing else changed.

## Related

- [What Is Cost Per Lead?](https://www.brix.so/learn/cost-per-lead)
- [What Is Lead Source Tracking?](https://www.brix.so/learn/lead-source-tracking)
- [What Are Google Local Services Ads?](https://www.brix.so/learn/google-local-services-ads)
- [What Is Call Tracking?](https://www.brix.so/learn/call-tracking)
- [Customer Acquisition Cost Calculator](https://www.brix.so/tools/customer-acquisition-cost-calculator)
- [Booking Rate and Close Rate Calculator](https://www.brix.so/tools/booking-rate-calculator)
- [Speed to Lead Calculator](https://www.brix.so/tools/speed-to-lead-calculator)
- [Lead Follow-Up Automation That Chases Every Lead and Estimate for You](https://www.brix.so/features/sales-automation)
- [Review Request Automation: More Google Reviews Without Remembering to Ask](https://www.brix.so/features/reviews-reputation)
- [Google Review Calculator: How Many Reviews You Need and What They're Worth](https://www.brix.so/tools/review-revenue-calculator)

## Sources

- [LocaliQ, Search Advertising Benchmarks (2026), Home & Home Improvement](https://localiq.com/blog/search-advertising-benchmarks/) (checked 2026-10-12)
- [Google Ads Help, How Local Services Ads charges work](https://support.google.com/adwords/answer/7195435) (checked 2026-10-12)

---
Written by BRIX Editorial Team. Last updated 2026-10-12.
Canonical: https://www.brix.so/tools/cost-per-lead-calculator
