Why cost per lead varies so much by trade
Cost per lead isn't set by an algorithm handing out random prices. It's set by an auction, and every trade walks into that auction with a different job value attached to the click. An HVAC company bidding on "AC replacement" knows a won job is worth $6,000-$12,000. A locksmith bidding on "lockout service" knows a won job is worth $75-$150. Both contractors are bidding against competitors who do the same math, so the trades with the biggest average tickets end up paying the most per click and per lead. That's simple auction economics, not a flaw in the system.
Sales cycle length compounds it. A plumbing emergency call converts to a booked job in minutes: the homeowner has a burst pipe, they call three numbers, and whoever answers first and sounds competent gets the work. A roofing job from an insurance claim can take weeks of inspections, adjuster meetings, and follow-up before a contract gets signed. A remodeling lead can take a month of design consults before it turns into a signed contract. Longer cycles mean more of the lead's cost gets absorbed before revenue shows up, and more leads fall out of the funnel along the way, which raises the effective cost of the leads that do close.
Then there's how many contractors are chasing the same keyword in the same metro. Roofing after a hailstorm turns into a bidding war overnight, sometimes for a few weeks straight, because every roofer within driving distance is running ads on the same handful of storm-related terms. Plumbing and electrical demand is steadier year-round, which usually means less spiking but a more consistent baseline cost. HVAC sits in between: relatively calm most of the year, then a hard spike the week temperatures cross into the first real heat wave or first hard freeze, when every unit that was going to fail, fails at once.
The trade angle also changes what "a lead" even means. A plumbing lead is usually an emergency call with 24/7 intent and a clear repair need. An electrical lead might be a panel upgrade, an EV charger install, or a safety inspection, three very different buyer intents bundled under one trade. A roofing lead might be storm response, insurance-driven, or a straightforward reroof, and those three carry wildly different close rates and price tags. A garage door lead splits between same-day repair urgency and a considered repair-vs-replace decision that takes longer to close. When you compare your cost per lead to a number you saw online, make sure it's the same flavor of lead, not just the same trade name.
Typical cost-per-lead ranges by trade in 2026
These are directional ranges pulled from how the trades typically bid and convert, not a guarantee for any specific market. Your metro, your ad spend history, your reviews, and your website all move the number up or down from here. Treat this as a sanity check, not a quote.
| Trade | Typical CPL range (paid channels) | What drives the spread |
|---|---|---|
| Plumbing | $20-$85 | Emergency intent is high-volume and competitive, but job value is moderate, keeping bids in check |
| HVAC | $40-$150 | Seasonal spikes (first heat wave, first cold snap) push bids hard for a few weeks each season |
| Electrical | $35-$120 | Panel upgrades and EV charger installs carry higher ticket value than a basic service call, and bid accordingly |
| Roofing | $60-$250+ | Storm and insurance-driven leads spike hardest of any trade; non-storm reroof leads sit lower |
| Remodeling | $75-$300+ | Highest average ticket of the core trades, longest sales cycle, most out-of-market lead-gen competition |
| Garage Door | $25-$90 | Same-day urgency keeps volume steady; repair vs. replace splits the lead value |
| Pest Control | $20-$70 | Recurring-contract model means a single lead can be worth several service visits over a year |
Two things to notice. First, the ranges overlap a lot: a bad electrical lead can cost more than a good roofing lead depending on the keyword and the market. Second, every one of these ranges assumes a paid channel (Google Ads or Local Services Ads) where you're paying per click or per lead directly. Local SEO and Google Maps rankings don't have a clean per-lead price tag the same way, because the traffic is already there once you rank; the cost gets absorbed upfront in the build and ongoing content work instead of per click.
Paid leads vs. organic leads: the real cost-per-lead math
Paid channels give you a lead cost you can point to on an invoice. Google Ads and Local Services Ads charge per click or per lead, and that number is real and immediate. The tradeoff: the moment you stop paying, the leads stop. There's no equity built. You're renting the top of the page every single day, at whatever the auction charges that day.
Local SEO and Google Maps work differently. There's real cost getting there: content, site structure, citations, review generation, the work it takes to earn a map-pack position. But once a page ranks or a listing holds a top 3 spot, it keeps producing leads without an additional per-click charge. Run the math over 12 months and the effective cost per lead on organic traffic usually keeps dropping the longer a page or listing holds its position, because the fixed cost of getting there gets spread over more and more leads.
This is why comparing a paid CPL number to an organic CPL number head-to-head is a little bit apples-to-oranges. The honest way to think about it: paid buys you leads now, at a price that doesn't improve much over time and can spike hard in-season. Organic buys you leads later, at a price that keeps improving the longer you invest, because the asset (rankings, map position, review volume) compounds instead of resetting to zero every month.
One representative HVAC engagement we can point to (details under NDA, numbers are real) took a Central Florida shop from map-pack position #8 to the top 3, and the cost per lead on that account dropped roughly 62% over a 9-month build as organic and map traffic replaced a growing share of what used to be pure paid volume. That's not a universal number, and every trade and market moves at its own pace, but it's the shape of the curve: paid stays flat or climbs, organic bends the total cost down.
Most established contractors we work with run both. Paid channels cover the immediate need, the seasonal spike, the new-service-area push. Organic (local SEO, Maps, and increasingly AI search visibility) builds the base that keeps the phone ringing even in months when the ad budget gets tight. Typical timeline for competitive organic terms to build real traction: 4-9 months, depending on the trade and how crowded the local map pack already is.
What actually moves your cost per lead
Before assuming your trade is just an expensive one, check whether these are dragging your number up.
- Landing page relevance. Sending paid traffic to a generic homepage instead of a page built for that exact service and city tanks conversion rate, which raises effective cost per lead even if the click price itself is reasonable.
- Review volume and rating. Google Ads and Local Services Ads both weight review signals into ranking and trust. Thin review counts mean you pay more per click to compete with a contractor who has 150 reviews and a 4.8 average.
- Map pack position. Sitting outside the top 3 on Google Maps for your core service terms means the paid channel is doing all the work, and doing it at full price, with no organic assist underneath it.
- Site speed. A slow-loading site bleeds paid clicks before they ever convert. Contractor sites should load in under 2 seconds; every extra second past that measurably drops form and call conversion.
- Call tracking gaps. If you can't attribute which channel actually produced a booked job, you're optimizing blind and probably overpaying on whichever channel looks busiest instead of whichever one closes.
- Service-area page depth. One thin page trying to rank for an entire metro competes worse than a proper cluster of pages built per service and per city, which is part of why local SEO campaigns for competitive trades typically run 94+ cluster pages to cover a territory properly.
Fixing any one of these can move cost per lead meaningfully without touching your ad budget at all. Fixing several at once is usually where the real drop happens.
Cost per lead vs. cost per booked job (the number that actually matters)
Cost per lead is the number everyone quotes. Cost per booked job is the number that pays the bills. A trade with a cheap cost per lead but a low close rate can end up more expensive per job than a trade with a pricier lead and a tight, well-run intake process.
Here's why the distinction matters in practice. Plumbing emergency leads are cheap and plentiful, but a chunk of them go to whoever answers the phone first, meaning slow follow-up destroys the economics no matter how cheap the lead was. Roofing leads are expensive, but a well-run sales process with a fast inspection turnaround and a clear proposal can close a much higher percentage of them, making the true cost per job more reasonable than the sticker-shock cost per lead suggests.
The trades that manage this best track both numbers side by side: what did the lead cost, and what did the job that came from it actually cost once you factor in close rate. A $150 roofing lead with a 25% close rate costs $600 per booked job. A $40 HVAC lead with a 40% close rate costs $100 per booked job. Compare the job costs, not the lead costs, when you're deciding where to put next month's budget.
This also explains why some contractors chase organic and local SEO harder than paid, even when the per-lead cost comparison looks close on paper. Leads that come from a top map-pack position or a strong local search presence tend to arrive with more trust already built in (the searcher saw reviews, saw the business show up as the obvious local answer), which nudges close rate up and brings the true cost per job down further than the raw cost-per-lead number implies.
Seasonality and region: the multiplier most contractors underestimate
The same trade, in the same month, can pay two or three times as much per lead depending on region and season. HVAC in Florida sees demand almost year-round with a hard summer peak; HVAC in the Midwest sees two distinct spikes, one for cooling and one for heating, with a slower shoulder season between them where cost per lead often drops noticeably. Roofing follows storm tracks, not the calendar: a hail event in one metro can send local roofing CPL up for weeks while a neighboring, storm-free metro sees no movement at all.
Landscaping and pest control ride the calendar hardest of the trades on this list. Spring cleanup and first-mow season for landscaping, and spring/summer pest pressure for pest control, both compress a huge share of annual demand into a few months, and cost per lead climbs accordingly during that window. Budgeting the same monthly ad spend across a full year for one of these trades usually means overpaying in the slow months and underbidding right when demand (and competition for it) peaks.
Metro size and competitor density matter almost as much as season. A remodeling contractor in a metro with a dozen well-funded competitors running ads on the same high-value keywords will pay noticeably more per lead than the same trade in a smaller market with two or three real competitors. This is also where local SEO tends to pay off fastest: in a less crowded market, a properly built local presence can lock down a top 3 map position without having to out-bid a dozen rivals in the ad auction first.
None of this means the trade-level ranges earlier in this guide are wrong. It means treat them as a starting point, then adjust for your specific region's season and your specific metro's competitive density before you set a budget or judge whether a number you're seeing is normal.
How to actually lower your cost per lead
None of this is a secret formula. It's the same handful of levers, applied consistently, trade after trade.
- Fix the landing page before touching the bid. A page built for "emergency water heater repair in [city]" converts better than a homepage, for the same click.
- Build map-pack strength. Reviews, citations, and a properly optimized Google Business Profile push you toward the top 3 positions, where clicks are effectively free compared to the ad auction above them.
- Layer local SEO under paid. Every organic lead that lands is one less lead you had to buy. Over a 12-month build, that shift is usually where the real cost-per-lead improvement shows up.
- Get to the answer AI search gives. A growing slice of searches now get answered directly by AI Overviews, ChatGPT, and similar tools before the searcher ever clicks an ad. If your business isn't structured to be a cited source there, you're invisible in that slice regardless of ad budget.
- Tighten intake, not just acquisition. The cheapest lead in the world is worthless if it doesn't get a callback in ten minutes. Fast, consistent follow-up moves cost per booked job more than almost any acquisition tweak.
Most contractors treat cost per lead as a channel problem. It's usually a combination problem: the channel, the page it lands on, the map position backing it up, and the speed of the follow-up. Move all four and the number drops further than tweaking any one of them alone.