Roofing lead ROI calculator
Four inputs -- how many leads or appointments you buy in a month, what each one costs, how often you close them, and what a job is worth -- and the calculator returns jobs won, revenue, total spend, a return multiple, and the cost of each job you acquired. It works the same whether you buy leads, buy appointments, or want to compare the two head to head.
It is deliberately blunt about one thing that most lead-vendor spreadsheets are not, and that caveat is the first section below.
Roofing ROI
Roofing Lead and Appointment ROI Calculator
Estimate the monthly return on your roofing lead or appointment spend. Adjust the inputs to match your numbers -- the results update instantly.
Your monthly estimate
Based on the inputs on the left.
- Jobs won per month
- 18
- Revenue per month
- $171,000
- Total ad or lead spend
- $15,000
- ROI multiple
- 11.4x
- Cost per acquisition
- $833
Volume times close rate.
Jobs won times average job value.
Volume times cost per lead or appointment.
Revenue divided by total spend.
Total spend divided by jobs won.
Estimates only. Actual results vary by market, season, and crew capacity. Default values are neutral US-market roofing figures, not a guarantee of performance.
The return multiple is revenue, not profit
The multiple divides revenue won by lead spend. It does not subtract materials, labour, dumpsters, warranty, overhead or the crew's drive time. On a re-roof carrying a gross margin somewhere around a third, a headline return of three to one is roughly break-even before you have paid for anything else in the business, and a return that looks spectacular can still be a losing account once the job costs land.
So use the multiple to rank channels against each other, and use cost per job won to decide whether any of them is worth doing. Cost per job is the figure to carry into a negotiation: it converts a cost-per-lead argument, which every vendor is practised at winning, into a question about their lead quality, which they are not.
If you want a profit answer rather than a revenue answer, put your gross profit per job into the job-value field instead of the contract price. The multiple then reads as return on gross margin, which is the number a sensible owner actually manages to.
The close rate is the input to argue about
Volume and price are printed on the invoice. Close rate is the one number in the model that is genuinely yours, and it is where two shops buying identical leads end up with opposite verdicts on the same vendor. Before you blame the source, check three things: how long the lead sat before its first dial, how many attempts it got before you gave up, and whether the person calling knew enough about roofing to survive the first objection.
A useful discipline is to run the calculator twice -- once at your current close rate, once at the rate you would reach if none of your leads went unworked -- and treat the gap as the value of fixing follow-up. It is frequently larger than the saving from switching vendor, and it does not require anyone to sell you anything.
Why the answer changes by season
Roofing demand is weather-driven, so a lead-spend model built on an average month misprices both halves of the year. NOAA's Storm Events Database is the public series to anchor against:
Read those as events LOGGED, not as a count of what physically happened -- the database records storm reports, so it reflects population density and spotter coverage as well as weather. What it is good for is the shape: the concentration by state and by season is why a cost per job won that looked fine in March can be unrecognisable in June, and why buying the same lead volume every month is the most common way to overpay.
Where this fits
- Roofing lead generation -- the channels this model prices, and what each one is good for.
- Storm damage appointments -- what changes when the month is a storm month.
- Exclusive vs shared lead comparator -- the same arithmetic, run against a lead several contractors are chasing at once.
Booked inspections, priced per appointment
If the cost-per-job column is the one that matters to you, that is the column we sell on. Twenty minutes is enough to see whether the numbers work in your market.
Book a Free Consultation