Work backwards from revenue, not forwards from leads. A roofer targeting $150,000 a month at a $14,500 average job needs 11 jobs, which at a 22% close rate means 50 estimates presented, which at a 40% qualified-lead-to-estimate rate means about 125 qualified leads a month.
That is the arithmetic every lead calculator on the internet will give you. It is also the easy part, and on its own it will get you a number that is wrong in both directions at once.
| Step | Calculation | Result |
|---|---|---|
| Revenue goal | Target | $150,000 |
| Jobs needed | $150,000 ÷ $14,500 | 11 jobs |
| Estimates presented | 11 ÷ 22% close rate | 50 estimates |
| Qualified leads | 50 ÷ 40% lead-to-estimate | 125 leads |
| Raw leads, Google Ads | 125 ÷ 95% qualified | 132 |
| Raw leads, Meta | 125 ÷ 50% qualified | 250 |
Look at the last two rows. Same goal, same close rate, same crew, and the raw lead target nearly doubles depending on which platform the leads come from. That is the first of four gates that turn "125 leads" into a number you can actually run a business on.
The baseline math, done properly
Start with the number you actually control: how much revenue you need to sign this month. Divide by your average job sold to get jobs. Divide jobs by your close rate on presented estimates to get estimates. Divide estimates by your qualified-lead-to-estimate rate to get leads.
The inputs above are not invented. A marketer who published 18 months of a roofing company's full P&L on r/Roofing reported a $14,000 to $15,000 average job ticket and a close rate of about 22% across 404 estimates in nine months of 2025. That company sold $1.38 million over those nine months, roughly $153,000 a month, on about 45 estimates a month. The worked example above lands within a rounding error of a real operation.
The 40% lead-to-estimate rate comes from SubcontractorHub's contractor lead calculator, which uses a $12,000 job, a 40% lead-to-appointment rate and a 35% close rate to arrive at 60 leads for eight jobs and about $100,000 in revenue.
Tip
Run the chain twice: once with last quarter's actual numbers and once with the numbers you wish you had. The gap between the two answers is your improvement budget. It is almost always cheaper to close the gap than to buy the difference in leads.
Now the four gates that break this arithmetic.
Gate 1: your "lead" and my "lead" are different objects
A lead target without a channel attached is not a target. The qualification rate between channels differs by roughly 2x, which means the raw volume you have to buy differs by roughly 2x for identical revenue.
The same r/Roofing operator was specific about it: Google Ads search traffic ran about 95% qualified, and when they expanded to Meta ads for volume, qualification fell to about 50%. Their words on why: the company still had no in-house customer service rep, "the time to call back new leads is way longer than it should be, so this artificially brings down the % of qualified meta leads."
That is worth reading twice. Half the gap between channels was not the channel. It was callback speed on a colder audience that punishes delay harder.
| Channel | Typical qualification | Raw leads for 125 qualified | What moves it |
|---|---|---|---|
| Google Ads search | ~95% | 132 | Keyword and geography match |
| Meta ads | ~50% | 250 | Callback speed, offer, creative targeting |
| Shared marketplace | Highly variable | Often 200+ | Number of contractors sharing the same enquiry |
| Referral and repeat | Near 100% | ~130 | Nothing, this is the cheapest lead you own |
Shared marketplace leads deserve their own warning. Independently published 2026 benchmarks put shared roofing leads, meaning the same homeowner resold to three to eight contractors, at an 8% to 20% close rate against 25% to 35% for exclusive leads (VA Horizon, citing GhostRep). Feed a 12% close rate into the chain instead of 22% and the 125-lead target becomes 229. The lead is not cheaper. It is a different unit.
Before you set a number, write the definition down: a lead is an inbound contact in our service area, for work we actually perform, with a decision maker reachable by phone. Everything else is traffic.
Gate 2: your close rate is two different numbers and only one of them pays
This is the gate almost nobody publishes, and it is the one most likely to make your lead target too small.
There are two ways to compute a close rate. By count: jobs sold divided by estimates presented. By value: revenue signed divided by the dollar value of estimates presented. Every calculator on the internet uses the first. Your revenue goal is denominated in the second.
For the r/Roofing operator, 2025 looked like this: 404 estimates worth $14,857,432 presented, 91 jobs sold worth $1.38 million.
By the numbers
22.5% by job count. 9.3% by dollar value. Same company, same year, same estimates. The operator's own summary: "only 9.3% of estimate value converts," with the count-based close rate "highly propped up by small residential repair jobs" while the high-ticket work lost.
The 2.4x gap between those two numbers is a mix problem, not a sales problem. Small repairs are easy to win and contribute almost nothing to a revenue target. Large replacements and commercial work are hard to win and are the entire target. Blend them and your close rate flatters you exactly where it costs the most.
The fix is to stop running one funnel. Split the math by job type and run the chain separately for each:
| Segment | Avg job | Close rate | Jobs for $150k | Estimates needed |
|---|---|---|---|---|
| Repairs | $1,200 | 45% | Track separately | Not counted toward the goal |
| Retail replacement | $14,500 | 22% | 11 | 50 |
| Commercial or steep-slope | $45,000 | 10% | 3 to 4 | 30 to 40 |
If your revenue goal depends on replacements, your lead target has to be built from replacement leads only. Counting repair enquiries toward it is how roofers end up hitting their lead number and missing their revenue number by 40%.
Most roofers cannot split close rate by job type because the data lives in three places: a spreadsheet, the estimating tool and someone's phone. A CRM built around your actual pipeline stages makes the dollar close rate a report instead of an evening of arithmetic.
Gate 3: capacity, or the number nobody wants to hear
Asked on r/Roofing how many extra quality leads a month a roofing owner would be happy with, the highest-signal reply was not a number. It was a question: "I don't understand the question? Enough to fill my schedule?" The top-voted comment on the same thread was blunter, calling out "the amount of scammy lead generation bullshit people try to sell me."
Both reactions are correct. Lead volume above production capacity is not growth, it is a longer backlog and a worse reputation. On the thread documenting that $2.2 million ramp, a commenter went straight at it: "how tf did they have the resources and connections to handle that amount of work?"
Published roofing crew productivity benchmarks put elite operations at 4 to 5 completed jobs per crew per week and average companies at 2 to 3. The same source recommends planning at 70% to 80% of theoretical maximum to absorb rain delays, equipment failures and complex valley work.
| Crew tier | Jobs per week | Theoretical per month | Planned at 80% |
|---|---|---|---|
| Average | 2 to 3 | 9 to 13 | 7 to 10 |
| Elite | 4 to 5 | 17 to 22 | 14 to 17 |
Our worked example needs 11 jobs a month. One average crew sustainably delivers 7 to 10. The demand math and the production math disagree, and the production math wins every time.
So the real formula is not a division. It is a minimum:
Jobs you can sell = MIN(what your lead flow produces, what your crews can complete)
Set your lead target off whichever is smaller, then fix the binding constraint. If capacity is the constraint, the highest-return spend this month is a second crew or a scheduling system, not more leads. Same logic applies to your calendar: see roofing scheduling and dispatch software for the operational side of that ceiling.
Gate 4: one number for twelve months is wrong twelve times
Roofing demand is not flat, so a flat lead target is guaranteed to be wrong in both directions. It overspends when leads are cheap and underspends when they are expensive.
SearchLight's Q1 2026 roofing data, covered in our breakdown of what roofing leads actually cost, showed non-branded lead volume rising 52% from January to March while cost per lead fell 23%, from $145 to $111. Demand and price moved in opposite directions inside a single quarter.
The practical version: build a seasonal index off your own last two years of signed jobs by month, then distribute the annual lead requirement against it rather than dividing by twelve.
- Total last year's signed revenue by month.
- Divide each month by the monthly average to get an index. A month at 1.4 carries 40% more than average.
- Multiply your baseline lead target by each month's index.
- Shift spend forward by your sales cycle. Retail replacement typically runs 5 to 14 days from lead to signature, so leads bought in the last week of a month largely land in the next one.
A roofer needing 125 leads a month on average is really looking at something closer to 175 in peak months and 70 in deep winter, with the winter budget spent on the cheap leads that will close in spring.
The leads you already own, subtracted first
Every lead target should be net of reactivation, and almost none are.
The question gets asked on r/Roofing in almost exactly these words: "We've got years of old roofing leads in our CRM, inspections, estimates, insurance lookups that never turned into jobs. Feels like half our CRM is people who said 'later,' 'next year,' or disappeared after an inspection."
A lead generation practitioner who works with roofing companies describes the same stock and what it produces when worked: most companies sit on 200 to 500 unclosed leads from the last three to six months, and a monthly reactivation text recovers 3 to 5 deals a month from leads already paid for.
Run that through the chain. If reactivation covers 3 of the 11 jobs, you need 8 net new jobs, which is 36 estimates, which is 91 qualified leads instead of 125. A 27% cut in the lead requirement at essentially zero media cost.
Watch out
Reactivation only works if the records exist. If your "old leads" are a shoebox of estimate PDFs and a call log, there is nothing to reactivate. The stock of contactable dormant leads is an asset your CRM either preserves or destroys, and most roofers do not find out which until they try this.
Close rate is a lever, not an input
The calculators treat close rate as something you type in. Treat it as something you move and the lead requirement collapses.
| Close rate on estimates | Estimates needed for 11 jobs | Qualified leads needed | Change vs baseline |
|---|---|---|---|
| 12% (shared leads, slow callback) | 92 | 229 | +83% |
| 22% (baseline) | 50 | 125 | baseline |
| 30% | 37 | 92 | -26% |
| 40% (exclusive, fast callback, financing) | 28 | 69 | -45% |
Going from 22% to 30% removes 33 leads a month from your requirement. At published roofing lead costs of roughly $105 to $228 each, that is $3,500 to $7,500 a month you stop spending while signing the same revenue.
The cheapest lever is response time. The r/Roofing practitioner reports the average roofing company calls a new lead back in three to six hours, and describes one company that committed to calling every lead within 60 seconds: close rate went from 12% to 23% in 30 days, same leads, same team, same market. Broader data supports the direction, with a five-minute response roughly 100 times more likely to convert than a thirty-minute one, though only 54.9% of firms with a formal response-time standard actually hit a 15-minute target (Kixie, GreetNow).
The second cheapest is follow-up count. It takes five to seven contacts to book an appointment, and most roofing companies stop after one or two. Companies running an automated seven to fourteen day sequence book 30% to 40% more appointments from the same pool.
Both of those levers are systems, not training. A 60-second callback happens because something fires the moment a form lands, and a seven-touch sequence happens because it runs without anyone remembering. That is a build, and it is usually cheaper than the leads it replaces.
The five-line worksheet
Do this once a quarter with your own numbers. It takes fifteen minutes and replaces every generic calculator.
- Jobs. Monthly revenue goal ÷ average job sold, for replacement work only. Track repairs separately.
- Capacity check. Crews × jobs per crew per week × 4.3 × 0.8. If this is below line 1, stop. Your problem is production, not leads.
- Estimates. Jobs ÷ your close rate for that job type, measured in dollars as well as counts. Use the lower of the two.
- Qualified leads. Estimates ÷ your qualified-lead-to-estimate rate, per channel.
- Net new leads. Subtract the jobs you expect from reactivation and referral, then divide the remainder by each channel's qualification rate to get raw volume to buy.
Then apply the seasonal index and check the budget against cost per acquisition, not cost per lead. A common target is 8% to 15% of average job value, so on a $14,500 job anything under about $2,175 per signed job is defensible.
What the number actually was
For our worked example, the honest answer to "how many roofing leads do I need per month" is not 125. It is:
- 91 qualified leads after subtracting three reactivated jobs,
- which is 96 raw leads on Google Ads or 182 on Meta,
- distributed as roughly 130 in peak months and 55 in winter,
- and capped at whatever your crews can install, which for a single average crew means the 11-job target was never reachable without a second crew.
Four gates, and the answer moved by more than 2x. That is why the number in a blog post cannot be your number. What travels is the method: revenue, jobs, estimates, leads, minus what you already own, capped by what you can build, spread across the season you actually work in.
