← Back to Blog

Cost Per Lead: What's Normal for Roofing, HVAC, and Landscaping

One of the first questions contractors ask when they start running ads is: "Is this normal?" They're paying $60 per lead, or $120, or $200 - and they have no idea if that's good, bad, or getting ripped off.

The honest answer is: it depends on your trade, your market, and your average job value. Here's what the numbers actually look like.

Why Cost Per Lead Varies So Much

Cost per lead (CPL) is driven by a few key factors:

  • Competition. More contractors bidding on the same keywords or audience = higher costs.
  • Job value. Higher-ticket services attract more competition because the ROI justifies it.
  • Geography. Major metros cost more than rural markets. Simple supply and demand.
  • Ad quality. A well-built campaign with a strong offer costs less per lead than a generic boosted post.

Ballpark Numbers by Trade

These are realistic ranges for well-run paid ad campaigns (Meta and Google combined), not guarantees. Your market will vary.

Roofing: $40 - $120 per lead. Higher in storm-chasing markets where competition spikes after weather events. Average job value of $8,000 - $20,000+ makes even $100 leads extremely profitable if you close them.
HVAC: $30 - $90 per lead for service calls and installs. Replacement systems run higher. Seasonal demand swings costs up in summer and winter peaks.
Landscaping: $20 - $60 per lead for maintenance and installation. Lower average job value means tighter margins on CPL - you need volume and strong follow-up to make it work.
Remodeling / General Contracting: $60 - $150 per lead. Higher ticket jobs justify higher CPL. A $25,000 kitchen remodel makes a $100 lead look cheap.
Fencing / Deck / Concrete: $25 - $75 per lead. Mid-range job values, moderate competition. Good ROI when follow-up is fast.

The Number That Actually Matters

Cost per lead is not the number you should be optimizing for. Cost per closed job is.

Here's why: a $30 lead that closes 10% of the time costs you $300 per job. A $90 lead that closes 35% of the time costs you $257 per job - and you're talking to fewer, better-qualified people.

Chasing the cheapest leads almost always means chasing the worst leads. The goal isn't to minimize what you pay per lead. It's to maximize what you make per dollar spent on ads.

When You're Paying Too Much

You're overpaying when:

  • Your CPL is consistently above the high end of your trade's range and the leads aren't converting
  • You're getting leads outside your service area
  • The leads aren't actually requesting your specific service
  • You have no idea what your close rate is because nobody's tracking it

If any of those are true, the problem isn't the cost - it's targeting, offer, or follow-up. Fixing those will bring CPL down naturally.

The Bottom Line

A "high" cost per lead isn't automatically a problem. A low cost per lead isn't automatically a win. What matters is whether your ad spend is turning into revenue - and whether someone is actually tracking that for you.

If you don't know your cost per closed job right now, that's the first thing to figure out. Everything else follows from there.


Want Us to Set It Up For You?

Book a free call. We'll look at your market and tell you exactly what we'd do — no pitch deck, no pressure.

Book a Free Call
Keep Reading
Lead Generation
What Exclusive Leads Actually Mean - And Why It Matters
Lead Generation
Why Most Contractor Ads Fail (And What to Do Instead)