← Field Notes · August 4, 2026

Roofing lead sources, compared by cost per signed job instead of cost per lead

Four connected shapes narrowing on a green-to-yellow brand gradient representing leads converting to signed jobs
Updated August 20, 2026Originally published August 4, 2026
Key Takeaways
Cost per signed job is the number that decides the year. It is what you paid a source divided by the jobs you actually signed from it, and it is almost never close to the cost per lead on the invoice. Illustration only, no vendor implied: a $60 lead that…

Cost per signed job is the number that decides the year. It is what you paid a source divided by the jobs you actually signed from it, and it is almost never close to the cost per lead on the invoice. Illustration only, no vendor implied: a $60 lead that signs one time in twenty costs $1,200 per signed job. A $150 lead that signs one time in four costs $600. The cheaper lead cost twice as much. Close rate does that, and close rate is mostly set by how many other roofers got the same homeowner.

The formula, worked

Two ways to write it. Both give the same answer when your records are clean.

Use the second one. It does not depend on you estimating a close rate correctly, and it catches the leads that came in and quietly went nowhere.

Close rate is worth breaking into three pieces, because a lead source can fail you at any of them and the invoice looks identical either way.

  1. Contact rate. Out of the leads you paid for, how many did you actually get on the phone.
  2. Quote rate. Out of the ones you reached, how many let you look at the roof and give a number.
  3. Sign rate. Out of the quotes, how many signed.

Illustrative arithmetic, made-up figures, substitute your own. Say you buy 100 leads at $75, so $7,500 out the door. You reach 60. You quote 30. You sign 6. Close rate is 6%. Cost per signed job is $7,500 ÷ 6 = $1,250. Now put the job against it: if the average signed job is $11,000 at 30% gross margin, that job carries $3,300 of gross profit, so the source contributed $2,050 per job before overhead, before your truck, before your time. That last number is the one to rank sources by.

Run the same 100 leads with 12 signed instead of 6 and cost per signed job drops to $625. Nothing about the price of the lead changed. The homeowner just had fewer people to call back.

Shared lead marketplaces

The homeowner fills in one form and the same record is sold to several contractors, sometimes four or five, often within seconds of each other. There are 130,481 roofing and siding contractor businesses in the US as of 2024 (IBISWorld), so a marketplace never has trouble finding four more to sell the same homeowner to. The list price is low and the close rate carries the damage. Speed of response becomes the whole game; the roofer who dials in ninety seconds is bidding against the roofer who dials in twenty minutes, and the homeowner is now price-shopping whether or not she planned to. This suits a company with a dedicated person answering the phone on the first ring during business hours and a pricing model that survives being compared. It punishes an owner who returns calls from the truck at 6pm.

Exclusive lead vendors

Same intake, one buyer. Price per lead is higher and close rate is usually the reason people pay it. Two things to verify before you believe the word exclusive: exclusive for how long, and exclusive to what territory. Some vendors sell a lead once, then resell it as an aged record ninety days later. Others define exclusivity by ZIP code, which means the homeowner one street over went to a competitor. Ask for both definitions in writing. This suits companies with a decent sales process and enough job value to absorb a higher cost per lead; if your average ticket is small, the arithmetic gets tight fast.

Four abstract geometric shapes in a row on a green-to-yellow brand gradient representing four distinct fit-call shapes

Aged lead lists

Records that are weeks or months old, sold cheap because someone already worked them. Contact rate is the first thing to collapse; phone numbers go stale, the roof got fixed, the homeowner has fielded eleven calls already. Close rate on the ones you do reach can be respectable, because the people still answering are the people who never got the problem solved. This is a volume-and-patience play. It suits a company with idle phone capacity and a real follow-up system, and it is genuinely one of the more affordable roofing leads options if you measure it on cost per signed job over a full quarter instead of on any single week.

Live transfers

The vendor qualifies the homeowner and patches the call straight to you. Contact rate is effectively 100%, which removes the biggest leak in the funnel and is why the per-unit price is high. The risk moves to qualification quality. A transfer that arrives with a renter, a homeowner outside your service area, or someone shopping insurance rather than a roof still bills. Ask what the vendor’s disqualification criteria are and what the credit policy is on bad transfers, then track your own dispute rate for a quarter. This suits companies that can pick up on demand during set hours.

Pay per call

You pay for a phone call over a minimum duration, not a form fill. Economics sit close to live transfers with one difference: the caller usually chose to call, which lifts intent. Duration thresholds are where the model gets gamed, so read the billing trigger carefully. A 60-second minimum can bill you for a wrong number that took a while to end. This suits companies that trust their phone script more than their follow-up.

Storm list brokers

Address lists built from hail and wind swaths, sold for canvassing and direct mail. These are not leads; they are targets, and the arithmetic changes because you supply the labor. Cost per signed job has to include the canvasser’s day, the mail piece, and the drive time. Close rate can be high because the damage is real and the neighbors are talking. Volatility is the cost: no storm, no season. This suits crews that can mobilize into a market fast and an owner who is honest about counting labor as a real expense.

Stylized abstract chart shape on a green-to-yellow brand gradient representing original data and research

The categories side by side

SourceExclusivityClose-rate pressureSpeed to first jobCost behavior over timeWho owns the asset
Shared marketplaceNone; resold to severalHigh; you are one of four bidsDaysFlat to rising as more buyers enterVendor
Exclusive vendorContractual; verify termsModerateDaysFlat, priced per unitVendor
Aged listsUsually noneVery high at contact stageWeeksLow per unit, high laborVendor
Live transferSingle buyer per callLow at contact, moderate at quoteSame dayHighest per unit, stays thereVendor
Pay per callSingle buyer per callModerateSame dayPer unit, billing rules matterVendor
Storm listsRarely exclusiveDepends on canvassing laborWeeks, seasonalCheap data, expensive laborBroker
Owned searchTotal; the call comes to youLowest; homeowner picked youMonthsFalls per job as rankings holdYou

Run your own numbers

Pull these from records, not memory. Last full quarter, split by source.

Then compute in this order, one source at a time:

  1. Cost per lead: spend ÷ leads
  2. Contact rate, quote rate, close rate
  3. Cost per signed job: spend ÷ signed jobs
  4. Gross profit per signed job: average job value × gross margin
  5. Contribution: gross profit per signed job minus cost per signed job
  6. Rank sources by line 5

One caution on sample size. Under roughly 30 leads from a source, the close rate you calculate is noise; two lucky signs will make a bad source look excellent. Give it a quarter, or give it 30 leads, whichever comes second.

Owned search, downside first

It pays nothing in month one. Technical fixes, service and city pages, and review work take months to move, and the first invoice arrives long before the first call does. If payroll is 60 days out and thin, buy leads; that is what bought leads are good at. Owned search is the wrong tool for an emergency.

What it does after the ramp is different in kind. The homeowner who searches and calls you was not sold to anyone else, so the exclusivity is structural rather than contractual. Cost per signed job falls as rankings hold, because the same work produces more calls. And the pages, the reviews, and the rankings stay yours when you stop paying; a lead vendor’s pipeline stops the day the card declines.

The search surface itself is moving. Whitespark data reported by Search Engine Journal found AI Overviews appear in 68% of local searches, compared with 39% that show a local pack (Search Engine Journal). The generated answer is now more common than the map. Being the roofer those answers cite is a different job from ranking blue links, and it is early enough that most of your competitors are not doing it.

Before you change anything

Do the quarter’s arithmetic first. Some of the roofing lead generation companies you are already paying will turn out to be your best contributor per job, and the cheap ones will turn out to be the expensive ones. The math decides, not the pitch.

NetPageTwo runs the owned search side of that list. Visibility is $489 a month: technical and on-page SEO, AI search optimization, a monthly strategy meeting, email support. Visibility + Revenue is $1,297 and adds conversion work, unlimited landing pages, bi-weekly calls, and Slack. Month to month, 14 days notice, no contract. There are no roofing case studies to show you; the service has not run in this trade yet, and pretending otherwise would be the first thing you should distrust. Bring last quarter’s numbers to the call and we will run the arithmetic above on your actual sources before anyone talks about scope.

Book a call

Related: roofing SEO work.

Like this:

Discover more from Net Page Two

Subscribe now to keep reading and get access to the full archive.

Continue reading