How to Measure Roofing Canvassing ROI Per Route (Field-Tested Math)
On this page
Walk into ten roofing offices and ask the owner how their canvassing is doing, and nine will answer with a feeling. "It's been slow." "My new guy is killing it." "That side of town is dead." Useful instincts, all of them. None of them are a number you can put in a budget.
The problem isn't that roofers don't track anything. Most track the big stuff: doors knocked, appointments set, jobs sold. The problem is that those numbers get reported as one fat lump for the whole crew or the whole week, and the lump hides everything that matters. Inside that lump, one canvasser working one neighborhood is printing money at a 9-to-1 return while another canvasser two subdivisions over is burning $40 in gas, four hours of pay, and a tank of morale to set a single appointment that cancels. Average them together and you see a mediocre result. You never see that you're funding the loser out of the winner's pocket.
The fix is to stop measuring canvassing as an activity and start measuring it as a series of investments — one per route. A route is a discrete bet: this person, on these streets, for this block of time, costs you a known amount of money and returns a known amount of revenue. When you can price each bet, you can do the only three things that actually grow a canvassing operation — pour more into the routes that win, fix the routes that are close, and kill the routes that lose. Below is the full method: the costs nobody counts, the formula that ties them together, the timing trap that makes new programs look like failures, worked examples from realistic numbers, and the operational habits that keep the math honest week after week.
What "a route" actually means (define it before you measure it)
If you ask five sales managers what a route is, you'll get five answers, and that's the first reason canvassing ROI numbers are mush. Before any math, pin down the unit.
A route, for measurement purposes, is one canvasser (or one two-person pair) working a defined set of streets or a defined door list during a defined time block. The three boundaries — who, where, when — have to be fixed, because if any one of them floats, you can't attribute the result.
- Who: a single rep, or a stable pair. If Marcus knocks the first two hours and Tyler finishes the route, you've blended two different closers and two different pay rates into one number. Split them, or pair them permanently for the measurement window.
- Where: a bounded geography. "The Oakdale subdivision east of Route 9" is a route. "North side" is not — it's a region containing dozens of routes with wildly different roof ages and incomes.
- When: a time block with a start and stop, because cost is mostly time. A Saturday 9 a.m.–1 p.m. push and a Tuesday 4 p.m.–7:30 p.m. push are two different routes even on the same streets, because evening density, who's home, and lighting all change the return.
The practical sizing question is: how big should a route be so the number means something? Too small and the math is noise — three doors that happened to include one motivated seller will show an absurd ROI that never repeats. Too big and you've recreated the lump. A useful default for residential canvassing is a route that produces 40 to 80 knocked-and-answered doors, which on a typical suburban street density is one canvasser for roughly half a day. That's enough volume that one lucky knock doesn't dominate the result, and tight enough geography that the roofs and incomes are reasonably similar.
Give every route a name and an ID. "Oakdale-Sat-AM" beats "the thing Marcus did." You will be comparing dozens of these over a season, and you cannot compare what you can't label.
The costs roofers forget to count
Here's where most homemade ROI math quietly lies: it counts the revenue in full but counts only half the cost. To get a real return, you have to load every dollar a route consumes, not only the obvious ones.
1. Direct canvasser pay
Whatever the rep earns for the time block — hourly wage, an hourly base plus a per-appointment spiff, or a draw. Use the fully burdened rate, not the sticker wage. Add your employer-side payroll taxes (Social Security and Medicare alone are 7.65% on the employer side per the IRS), unemployment insurance, and workers' comp, which for roofing-adjacent field roles is not trivial. A common shorthand is to multiply the base wage by 1.25 to 1.4 to get the burdened rate. A canvasser at $18/hour is really costing you somewhere around $22.50–$25/hour out the door.
2. Setting commission / appointment spiffs
If you pay $25 per set appointment, $50 per sat appointment, or a percentage override on sold jobs traced back to the route, that's a route cost. Track it at the route level, not only on the paycheck, or your best canvassers will look more expensive than they are without you seeing the revenue they justify.
3. Vehicle and fuel
Gas to and from the area plus any in-route driving. If the crew takes a company truck, the honest cost isn't just fuel — it's the IRS standard mileage logic as a stand-in for true vehicle cost (fuel, maintenance, depreciation, insurance), which for 2025 is 70 cents per mile for business use. A route 22 miles each way is 44 miles round trip, about $31 in true vehicle cost before anyone knocks a door. People forget this entirely and it's often the single biggest hidden line.
4. Manager / coordinator overhead allocation
Someone planned the route, assigned it, and reviewed the results. That person's time is real. You don't need to be precious about it — a flat allocation of, say, $5–$10 per route for planning and review keeps it honest without turning this into a cost-accounting project.
5. Materials and tech
Door hangers, branded homeowner reports, yard-sign drops, the per-seat cost of your canvassing app, and any data you bought to build the door list (more on data below). Pro-rate the monthly software seat across the routes it supported that month.
6. The cost of the list itself
This is the line that separates pros from amateurs. If you bought a targeted list (storm-affected addresses, homes in a roof-age range, an enriched mailing file), that acquisition cost belongs to the routes that worked it. If you're knocking cold off a map with no list cost, that line is zero — but then your time cost per qualified door is usually much higher, because the canvasser is spending paid hours knocking new roofs and renters. You pay for targeting one way or the other: with money up front, or with payroll in the field. The whole point of measuring per route is to see which trade is cheaper for your numbers.
7. The opportunity cost nobody writes down
There's a seventh line that never shows up in a spreadsheet but quietly decides whether a route was worth it: what that canvasser would have produced on a better street. If your best two streets each return 40x and you have one canvasser, every hour spent on a 2x street is an hour stolen from a 40x street. You don't add opportunity cost into the denominator — that would double-count — but you keep it in your head when you decide whether a positive-but-mediocre route earns the slot next week. A route can clear the break-even bar and still be the wrong route, because the same hours and gas could have gone somewhere far better. Pros stop asking "did this route make money?" and start asking "was this the best use of that canvasser's day?"
A quick cost-loading worksheet
| Cost line | How to figure it | Example (half-day route) |
|---|---|---|
| Burdened canvasser pay | Base wage x 1.3 x hours | $18 x 1.3 x 4 = $93.60 |
| Appointment spiffs | Per-set x sets | $25 x 2 = $50.00 |
| Vehicle | Round-trip miles x $0.70 | 44 x $0.70 = $30.80 |
| Manager overhead | Flat allocation | $7.00 |
| Materials / app seat | Pro-rated | $6.00 |
| List / data | Acquisition cost for the doors worked | $12.00 |
| Total route cost | Sum | $199.40 |
That $199.40 is the denominator. Almost every roofer who "measures" canvassing is secretly using a denominator closer to $93 — base pay only — and wondering why the routes that look profitable on paper don't fatten the bank account. Load the full cost or don't bother.
The metrics ladder: from doors to dollars
ROI is the top of a ladder. If you only look at the top rung you can't diagnose anything, so track the whole ladder per route. Each rung is a conversion step, and a route can fail at any one of them for a different reason.
- Doors knocked — total attempts.
- Contacts — doors where a human answered. Contact rate = contacts / doors. This is mostly about timing and density, not the rep.
- Conversations — contacts that turned into a real pitch, not an instant "not interested." This is the rep's opener and demeanor.
- Appointments set — conversations that booked an inspection. This is qualification and the value of what they're walking in with.
- Appointments sat / inspections done — set appointments that actually happened. The gap here is the sit rate, and it's where soft "maybe" appointments die.
- Jobs sold — sat inspections that closed. This is your sales/production side, but a route can poison it by feeding junk appointments.
- Revenue — contract value of those jobs.
- Gross profit — revenue minus job cost (materials, labor, the actual roof). ROI should be built on profit, not revenue, or you'll celebrate a route that sold three jobs at break-even.
The single most useful intermediate metric is cost per appointment set: total loaded route cost divided by appointments set. It's available fast (you don't wait weeks for jobs to close), it's comparable across routes, and it isolates the canvassing function from your sales team's closing ability. If two routes cost the same and one sets appointments at $35 each while the other sets them at $140 each, you already know where to send people tomorrow — before a single contract is signed.
But — and this is the trap that burns people — cost per appointment is not ROI. A route can set cheap appointments that never close, or set expensive appointments on big, easy-to-close storm roofs. You need both the cheap intermediate metric for speed and the true profit-based ROI for final judgment.
The formula
Here is the core calculation, in plain terms.
Route ROI (%) = (Gross profit attributed to the route − Total loaded route cost) / Total loaded route cost x 100
A route that costs $200 and produces $1,800 in gross profit returns ($1,800 − $200) / $200 = 800% ROI, or 8-to-1. Stated as a ratio, ROAS-style return = gross profit / cost = 9.0.
Three definitional choices decide whether this number is trustworthy:
Profit, not revenue. Use gross profit (revenue minus the direct cost of producing the job). A $14,000 reroof at a 35% gross margin contributes $4,900, not $14,000. If you don't know your gross margin per job, approximate with a company average until you do — but get to job-level margin, because storm jobs, retail jobs, and insurance-supplemented jobs carry very different margins and your route mix will skew toward one type.
Attribution, not wishful thinking. A job counts toward a route only if you can honestly trace it to a door that route knocked. The clean way: every appointment carries the route ID, the appointment carries through to the job, the job's profit flows back to the route. Messy reality intrudes — the homeowner wasn't home, the canvasser left a branded report, the homeowner called three weeks later off the QR code. Decide a rule and apply it to every route equally: a common, fair rule is any job sold within 60 days to an address the route physically worked counts to that route. Pick a window, write it down, never bend it for one route.
Time window, stated up front. A route knocked today might sell a job next week (storm-fresh, motivated) or next quarter (the roof that wasn't quite ready). If you cut the measurement window at 14 days you'll understate slow-burn routes; if you leave it open forever you can never close the books. 60 days is a sensible default for most residential canvassing; storm-restoration work tends to convert faster, retail age-out work slower. The key is consistency, which leads straight to the next section.
The timing trap that kills good programs
More canvassing programs get killed by a calendar than by bad performance. The mechanism is simple and brutal: you spend the cost now and collect the revenue later, so any snapshot taken before the revenue lands shows a loss.
Picture a brand-new canvassing push. Week 1, you've spent $3,000 in loaded cost across the routes. Appointments are stacking up, but inspections take a week to schedule, proposals take a few days, and homeowners think it over. By the end of week 1 you've sold $0. The spreadsheet says you're down $3,000 and the program is a disaster. The owner gets nervous, pulls the plug in week 3, and never sees the $22,000 in jobs that would have closed in weeks 4 through 8 from doors already knocked. The program didn't fail. The measurement window was shorter than the sales cycle.
Three habits keep timing from lying to you:
- Measure cohorts, not calendar weeks. Group routes by the week they were knocked, then let each cohort mature for the full window before judging it. "The routes we ran in the first week of May returned X by the end of June" is a real number. "How are we doing this week" blends fresh costs with mature revenue and is almost meaningless early on.
- Watch leading indicators while you wait. Cost per appointment set and sit rate are available within days. If those look healthy, a low revenue number early just means jobs haven't closed yet — be patient. If cost-per-appointment is also bad, then you have a real problem and can act fast without waiting for the full window.
- Fund canvassing from a rolling budget, not a single month's results. Treat it like a pipeline that's always part-spent-part-collected. Judge the whole rolling 60- to 90-day picture, not any single week.
Three worked routes (the numbers that change decisions)
Abstract formulas don't change behavior; comparing real-looking routes does. Here are three routes run the same week by the same company, fully loaded, matured to 60 days. The point isn't the exact figures — it's how loading the full cost and going all the way to profit flips your conclusions.
Route A — "Oakdale-Sat-AM" (targeted, older roofs)
A half-day Saturday route on a subdivision flagged as having a high share of 18–24-year-old roofs, worked off a list.
| Rung | Value |
|---|---|
| Doors knocked | 70 |
| Contacts | 28 |
| Appointments set | 4 |
| Appointments sat | 3 |
| Jobs sold | 2 |
| Avg job contract | $13,500 |
| Gross margin | 33% |
| Gross profit | 2 x $13,500 x 0.33 = $8,910 |
| Loaded route cost | $205 |
| Cost per appointment set | $51 |
| Route ROI | ($8,910 − $205) / $205 = 4,246% (≈ 43x) |
Route B — "Westbrook-Tue-PM" (cold, newer mixed neighborhood)
Same canvasser, a Tuesday evening, knocking cold off a map in a newer subdivision with no list and no idea of roof age.
| Rung | Value |
|---|---|
| Doors knocked | 62 |
| Contacts | 19 |
| Appointments set | 2 |
| Appointments sat | 1 |
| Jobs sold | 0 |
| Gross profit | $0 |
| Loaded route cost | $188 |
| Cost per appointment set | $94 |
| Route ROI | ($0 − $188) / $188 = −100% |
Route C — "Maple Heights-Sat-PM" (targeted, recent storm + aging roofs)
A route on a neighborhood that took a hail event 14 months ago and skews toward older roofs, worked with a documentation-first pitch and a branded homeowner report left at every door.
| Rung | Value |
|---|---|
| Doors knocked | 66 |
| Contacts | 30 |
| Appointments set | 6 |
| Appointments sat | 5 |
| Jobs sold | 3 |
| Avg job contract | $15,200 |
| Gross margin | 36% |
| Gross profit | 3 x $15,200 x 0.36 = $16,416 |
| Loaded route cost | $221 |
| Cost per appointment set | $37 |
| Route ROI | ($16,416 − $221) / $221 = 7,328% (≈ 74x) |
What the comparison teaches. Routes A and C cost almost exactly the same as Route B — within $35 of each other. If you'd measured by cost alone, or by doors knocked (all three knocked 62–70 doors), they'd look interchangeable. They are not remotely interchangeable. Route C returned roughly 74x; Route B returned negative one hundred percent — a total loss of payroll, gas, and an evening. The only variables that moved were where the canvasser knocked and what they walked in with. Same rep, same effort, opposite outcome. Multiply that gap across a 12-person crew running 60 routes a week and you can see why two roofing companies with identical headcount and identical hustle end the season with wildly different P&Ls.
The second lesson is subtler: Route C's cost per appointment ($37) and its 5-of-6 sit rate told you it was a winner within days — long before the three jobs closed and the 74x ROI was provable. That's the leading indicator doing its job.
How to actually capture the data (without a dashboard religion)
None of this works if collecting the numbers is so painful that the crew fudges it. The goal is a system light enough that a tired canvasser will actually keep it accurate at 6 p.m.
Minimum viable tracking — three things per door, one thing per route.
- Per door: an outcome tap — no answer / declined / conversation / appointment. Four buttons. That's it. Most canvassing apps do this in one tap; a paper tally sheet with four columns does it for free.
- Per route: the route ID, the rep, the time block, and total miles. Logged once at the end.
- Per appointment: the route ID rides along, so when the job closes months later, profit flows home automatically.
The attribution chain is the whole ballgame. Route ID → appointment → opportunity in your CRM → job → gross profit. If that chain breaks anywhere, your ROI silently reverts to guesswork. The single most valuable five minutes a sales manager spends each week is confirming that every closed job has a source route attached. Jobs with no route ID should default to "unattributed" — never silently credited to whichever route is nearby, because a phantom win on a losing route will keep you funding a loser.
A weekly cadence that fits a roofing week:
- Monday: plan the week's routes; assign IDs; record the expected cost of each (you can pre-load cost since you know the wage, the miles, and the list cost before anyone knocks).
- Daily: reps log door outcomes and route close-out (miles, hours). Two minutes per rep.
- Friday: reconcile appointments to routes; review cost-per-appointment and sit rate as leading indicators.
- Monthly: mature the 60-day cohorts, attribute closed-job profit, compute true ROI per route, and re-rank the territory.
Resist the urge to build a 40-column dashboard. The four numbers that drive decisions are cost per appointment, sit rate, jobs per route, and ROI per matured cohort. Everything else is diagnostic color you pull only when one of those four looks wrong.
Benchmarks and how to read them honestly
Roofers always want benchmarks, and benchmarks always lie a little, because contact rates and close rates swing enormously with market, season, storm activity, crew skill, and roof prices in your area. Use these as shape guidance — the relationships between the numbers — not as targets to grade yourself against.
- Contact rate (someone answers): heavily timing-driven. Weekend mornings and weekday early evenings beat midday by a wide margin. If a route's contact rate is in the gutter, suspect the time block before you blame the rep.
- Conversation-to-appointment: this is where the pitch and the reason to knock live. A canvasser who can say something specific and true about that roof converts far better than one running a generic script.
- Sit rate (set appointments that actually happen): soft "sure, come by sometime" appointments die here. A route that sets a lot but sits few is manufacturing vanity appointments — its cost-per-set looks great and its cost-per-sat is terrible. Always check both.
- Cost per sat appointment is more honest than cost per set, for exactly that reason. If you track one extra metric beyond the core four, make it this.
The trap with benchmarks is using somebody else's numbers as a target and then "hitting" them by gaming the easy metric. A crew told to drive down cost-per-set will set softer appointments. A crew told to maximize doors-knocked will sprint past conversations. Tie incentives to the rung closest to money you can fairly attribute — sat appointments or sold jobs — and the upstream metrics take care of themselves.
What pros get wrong
After enough seasons, the same mistakes show up in shop after shop. Watch for these.
Measuring the crew, not the route. A blended crew number averages your best and worst streets together and tells you nothing actionable. You can't "do more of what's working" if working and not-working are mathematically fused into one figure.
Counting revenue, ignoring margin. Three break-even storm jobs can look like a triumph on a revenue-based scoreboard and contribute almost nothing to the business. Always carry the math to gross profit.
Forgetting the windshield time. Drive time is paid time and vehicle cost, and a route 25 minutes away has to clear a meaningfully higher bar than one 5 minutes away just to break even. Two routes with identical door-level performance can land on opposite sides of profitability purely on commute. Bake travel into the cost, then prefer tight, dense routes when results are otherwise equal.
Judging too early (the timing trap again). Worth repeating because it's the number-one program-killer. Let cohorts mature.
Knocking blind. The biggest single lever in every example above wasn't the rep's talent or the script — it was which doors. A great canvasser on the wrong street loses money. A green canvasser on the right street makes it. Most owners obsess over training and scripts (which matter) while leaving door selection to a map and a hunch (which matters more).
No attribution discipline. If closed jobs aren't reliably tied back to the route that started them, every ROI number downstream is fiction. This is unglamorous data hygiene, and it's the foundation the whole method stands on.
Turning the numbers into territory decisions
Measurement is only worth the effort if it changes where you send people. Once you have ROI per matured route, run this simple loop every cycle.
- Re-rank the territory. Sort every matured route by ROI. The top tier gets re-run and expanded into adjacent similar streets. The bottom tier gets cut or redesigned. The middle tier is your improvement project.
- Diagnose the middle. For each near-miss route, find the rung where it bled. Low contact rate → change the time block. Good contacts, few appointments → coach the pitch or improve the reason-to-knock. Good sets, low sits → tighten qualification so soft appointments don't get booked. Good sits, no sales → that's a sales-team problem, not a canvassing problem, and the route may be fine.
- Cut decisively, but cut the route, not always the rep. A losing route usually means losing streets, not a losing person. Move your best rep onto the winning geography before you conclude anyone is the problem. The Route B example was the same canvasser who crushed Route A — the streets lost, not the human.
- Reinvest the freed-up cost. Every dollar you pull off a −100% route and redeploy onto a 40x route is the highest-return move available to a roofing company that already has the crew. You're not spending more; you're spending the same payroll on better streets.
This loop is where canvassing stops being a cost center you tolerate and becomes a controllable growth engine. The companies that compound are the ones that ruthlessly recycle payroll from dead streets onto live ones, cycle after cycle.
Where the door selection comes from — and where RoofPredict fits
Everything above hinges on one input the math can't generate for you: which streets to knock in the first place. You can measure routes flawlessly and still lose if every route starts from a guess. The reason Route B cratered wasn't bad measurement — measurement is what caught it. The reason it cratered was that it was aimed at new roofs and renters. The whole game upstream of the math is pointing the crew at homes that are actually due.
Traditionally roofers approximate "due" with proxies that are weak. County records and Zillow show year built, not roof age — a 1998 house that was reroofed in 2019 reads as old and isn't, and a reroof is invisible in those records. Measurement tools like EagleView, HOVER, or Roofr tell you the dimensions of a roof once you already know you care about it; they don't tell you which roof is worn out. So most door selection comes down to "this area feels old" plus chasing wherever the last storm was loudest — which is exactly how you end up with a Route B mixed into your week and don't find out until payroll's already spent.
This is the gap RoofPredict is built to close. It scores the roofs in an area two ways at once: a roof-age estimate as a range (from aerial imagery — a range like 18–22 years, not a false-precision exact date) and a per-roof storm model that goes past "did it hail in this ZIP" to ask "how hard did hail and wind actually hit this roof," modeling the storm house by house rather than reading off a county-wide hail map. The output is a ranked list of the homes most likely to be worn out — the ones aging out plus the ones a storm physically beat up — which you can use to build routes and to enrich your own mailing list or CRM with age and storm signals. In the framework above, that's a direct attack on the most expensive failure mode: it raises the quality of the doors on a route before anyone is paid to knock them, which lifts contact-to-appointment and sit rate at the same loaded cost — turning would-be Route Bs into Route Cs.
Be clear about the honest limits, because anyone who oversells this is lying to you. A roof-age range is a range, not a birth certificate; some homes will fall outside it. A per-roof storm score is odds that a roof took meaningful impact, not proof that it did — the inspection on the ladder is still what confirms damage. RoofPredict doesn't buy or sell you leads, it doesn't knock the doors, and it doesn't close the jobs; it sharpens the outbound you already do by telling you which doors are worth the route. It makes your measurement easier to win, not automatic. You still have to load your costs, attribute your jobs, and let your cohorts mature. The data just stacks the deck so more of your routes land on the profitable side of the formula.
A note for storm and insurance work — stay on the right side of the line
A lot of high-ROI canvassing happens after storms, and a lot of bad advice happens there too. If your routes are working storm-damaged neighborhoods, keep your canvassers' pitch and your documentation workflow strictly on the legal side of the line, because the wrong script doesn't just risk a complaint — it can void the value of the appointment and expose the company.
What a roofer can do, and should build the route pitch around: inspect the roof, document damage thoroughly with photos and measurements, and prepare an accurate, Xactimate-aligned repair estimate for the work the roofer would perform, then hand that documentation to the homeowner. Stating facts about your own scope and what you observed is legitimate and is exactly the kind of "walk in with proof" that lifts conversion.
What a canvasser must never say at the door, because it crosses into unlicensed public adjusting or deceptive advertising in most states: don't offer to negotiate, adjust, or "handle" the claim for the homeowner; don't interpret their policy or coverage; don't promise a specific payout, approval, or that the claim will be covered; don't promise the deductible will be waived, absorbed, or "gone"; don't advertise a "free roof"; and don't position the company as representing the homeowner against their insurer. The clean division of labor: the roofer documents and estimates, the homeowner files the claim, and the insurer decides coverage. Teach that do-not-say list to every canvasser before they hit a storm route — it protects the company and, honestly, it converts better, because homeowners trust the crew that documents and tells the truth over the one promising a free roof. (State rules vary; check your state's department of insurance and consumer-protection statutes.)
For ROI measurement specifically, storm routes behave a little differently: they convert faster (motivated homeowners, a recent event) and the jobs often carry insurance-supplemented margins, so use a shorter maturation window and watch that your gross-margin assumption matches the supplement reality rather than your retail average.
A worked season: how the math compounds across twelve weeks
One route in isolation is a curiosity. The reason any of this matters is what happens when you run the loop for a full season and let the re-ranking compound. Walk through a simplified twelve-week arc for a four-canvasser crew so the payoff is concrete.
Weeks 1–3 — baseline (no measurement). The crew knocks wherever the manager points: a mix of feels-old neighborhoods, last week's storm chatter, and a few referral streets. Four canvassers, four half-day routes a day, five days a week is roughly 60 routes a week, 180 over three weeks. With no route-level data, the company sees a lump: "we knocked a lot, sold eleven jobs, canvassing roughly paid for itself." Loaded canvassing cost for those three weeks lands near $36,000 (≈ $200/route x 180), eleven jobs at an average $4,500 gross profit is $49,500 in profit, so a blended return around 1.4x. Fine. Survivable. Invisible.
Weeks 4–6 — start measuring, don't change behavior yet. Now every route carries an ID, a loaded cost, and an attribution chain. The crew keeps knocking the same kind of streets, but you watch. By week 6 the matured cohorts from weeks 1–3 tell a story the lump hid: of 180 routes, the top 30 produced about 70% of the gross profit, the middle 90 roughly broke even after full cost, and the bottom 60 lost money outright — payroll and gas spent on new roofs, renters, and dead time blocks. The blended 1.4x was a winning third of the crew's effort dragging a losing two-thirds across the line.
Weeks 7–9 — act on the ranking. You stop running the bottom 60's geography and time blocks. You re-run and expand the top 30's streets into adjacent similar blocks, and you put your two best closers on them. The middle 90 you don't cut blindly — you diagnose: a chunk had fine doors but a midday time block tanking contact rate, so you move them to weekend mornings; another chunk had good sits but a weak pitch, so you fix the reason-to-knock. Same four canvassers, same payroll, same gas budget — entirely re-aimed. By the end of week 9 the matured cohorts from weeks 7–8 are running closer to a blended 3x, because a far larger share of routes now start on streets that are actually due.
Weeks 10–12 — compounding. With losers cut and the winning geography expanded, you're no longer funding dead streets out of the live ones' pockets. The freed-up payroll all sits on better doors. The blended return for the final three weeks lands near 4x on roughly the same spend. You did not hire anyone, buy more trucks, or work longer hours. You moved the same resources from a −100% column into a 40x column, cycle after cycle, and the only thing that made it possible was being able to see the columns.
That's the whole argument for per-route measurement in one arc: it doesn't make your crew work harder, it makes the work they already do land on the streets that pay. The compounding comes from the re-ranking loop, and the re-ranking loop is impossible without route-level numbers.
A simple spreadsheet you can build today
You do not need software to start. A single sheet with one row per route gets you 90% of the value. Build these columns left to right and you have a working ROI tracker by Friday:
- Route ID (e.g., Oakdale-Sat-AM)
- Date knocked — drives your cohort grouping
- Rep
- Time block — so you can spot the midday contact-rate sink
- Doors knocked
- Contacts (answered)
- Appointments set
- Appointments sat
- Jobs sold — filled in later as the cohort matures
- Gross profit — sold jobs x avg contract x gross margin
- Burdened pay — base x 1.3 x hours
- Spiffs
- Vehicle — round-trip miles x mileage rate
- Overhead + materials + list — the smaller loaded lines
- Total loaded cost — sum of 11–14
- Cost per set — col 15 / col 7
- Cost per sat — col 15 / col 8
- ROI — (col 10 − col 15) / col 15
Add a few derived columns once the basics are solid: contact rate (col 6 / col 5), set rate (col 7 / col 6), and sit rate (col 8 / col 7). Those three ratios are your diagnostic trio — when a route's ROI is bad, one of them tells you which rung failed. A conditional-format rule that turns ROI red below 0 and green above, say, 5x makes the weekly re-rank a thirty-second glance instead of a meeting.
The discipline that makes the sheet trustworthy isn't the formulas — it's filling columns 9 and 10 honestly as cohorts mature, and never crediting an unattributed job to a route just to make a number look better. A clean, boring sheet beats a beautiful dashboard fed garbage.
Edge cases that trip up the math
Real canvassing is messier than any formula, and a few recurring situations break naive ROI tracking. Handle them with a stated rule, applied to every route the same way.
The slow-burn referral. A canvasser knocks a street, sets nothing, but the homeowner mentions the company to a neighbor who calls six weeks later. Inside your 60-day window and traceable to the address worked, it counts to the route. Outside the window or untraceable, it's unattributed. Don't try to chase every referral tail; pick the window, live with the rule.
The repeat-knock street. You work the same subdivision twice in a season. The second pass benefits from the first pass's brand impressions. Treat them as separate routes by date, accept that the second pass may look better partly because of the first, and don't over-read a single repeat. Over a season the pattern, not any one route, is what you trust.
The big-job outlier. One route happens to land a $40,000 full-system commercial-adjacent job and shows a 200x ROI. Don't expand the whole territory on the strength of one whale — flag it, set it aside, and judge the street on its typical result. One outlier should inform, not dictate. The reverse is also true: don't condemn a fundamentally good street because one matured cohort got unlucky.
Shared appointments and team knocks. When two canvassers blitz one street together for a launch or a storm response, you can't cleanly attribute per person. Either treat the pair as one route for that block (and accept you can't grade the individuals from it), or don't run blended blocks during your measurement weeks. Pick one; don't pretend the blended block tells you about either rep.
The canceled-and-rebooked appointment. A set appointment that cancels and reschedules a month later is still one appointment for sit-rate purposes — don't let a reschedule quietly inflate your set count. Count the unique homeowner, not the calendar events.
Self-generated vs. assigned doors. A veteran who freelances onto a street he likes, off-plan, muddies attribution and route boundaries. During measurement weeks, keep everyone on assigned routes; reward initiative separately. You can't learn which streets work if reps are quietly re-selecting the streets mid-route.
Tying compensation to the numbers (without breaking them)
The moment you start measuring, you'll be tempted to pay against the metrics. Do it carefully, because every metric you incentivize will get gamed at its weakest point.
- Pay on doors knocked and you get sprinting past conversations and inflated, sloppy tallies.
- Pay on appointments set and you get soft "sure, swing by sometime" appointments that never sit — cost-per-set looks great, cost-per-sat is a disaster.
- Pay on appointments sat and you've moved the incentive much closer to money; reps now qualify harder so the appointment actually happens.
- Pay on sold jobs traced to the route and you've aligned the canvasser with the business, at the cost of a longer feedback loop and some attribution disputes.
The practical sweet spot for most residential crews is a modest hourly base (so a green rep can survive the learning curve and stay — turnover is its own hidden cost) plus a spiff on sat appointments and a smaller override on sold jobs traced to the route. That structure rewards the rungs closest to revenue you can fairly attribute, and it lets the upstream metrics take care of themselves. Avoid paying purely on the easiest-to-game upstream metric, and never set a metric target so aggressive that the only way to hit it is to fake it — a crew told to drive cost-per-set to the floor will manufacture vanity appointments, and you'll have paid to corrupt your own data.
One more compensation note that's really a retention note: a green canvasser put on good streets sets appointments, earns spiffs, makes money, and sticks around; the same rep dumped on dead streets earns nothing, gets discouraged, and quits inside a month. Replacing a canvasser costs you the recruiting time, the ramp, and the lost production — easily thousands of dollars that never appear in any route's ROI line. Good door selection isn't only a revenue lever; it's a retention lever, and retention is one of the most expensive numbers in a canvassing operation that nobody puts on the scoreboard.
Putting it all together
Measuring roofing canvassing ROI per route isn't a software problem or a spreadsheet-aesthetics problem. It's three disciplines done consistently:
- Load the full cost of each route — burdened pay, spiffs, true vehicle cost, overhead, materials, and the list — so your denominator is honest.
- Attribute revenue to profit, by route, within a fixed window — so your numerator is honest and slow-burn routes get their fair maturation time.
- Re-rank and reinvest every cycle — pour into winners, fix the middle, cut losers, and recycle the freed-up payroll onto better streets.
Do that and the fog clears. You stop arguing about whether canvassing "works" and start knowing, route by route, where it works, why, and how to do more of it. The single biggest lever you'll find inside that clarity is almost always the same one: not the script, not the rep, but which doors the route started from. Get the door selection right — with real roof-age and per-roof storm signals instead of a hunch — and most of the rest of the math takes care of itself, because you've stopped paying good people to knock roofs that were never going to buy.
Start this week. Name your routes. Load one route's full cost. Tie one closed job back to the street it came from. The first honest number you produce will probably surprise you — and it's the beginning of a canvassing operation you can actually steer.
FAQ
What costs should I include when calculating canvassing ROI per route?
Load every dollar the route consumes, not only base wages. Include fully burdened canvasser pay (base wage times roughly 1.25 to 1.4 to cover payroll taxes, unemployment, and workers' comp), any appointment spiffs or commissions, true vehicle cost (use the IRS standard mileage figure as a stand-in for fuel plus maintenance, depreciation, and insurance), a flat manager-overhead allocation for planning and review, materials and your canvassing app seat, and the acquisition cost of the door list or data. Counting base pay only is the most common reason homemade ROI numbers look good on paper but never show up in the bank account.
What is the formula for roofing canvassing ROI per route?
Route ROI (%) = (gross profit attributed to the route minus total loaded route cost) divided by total loaded route cost, times 100. Use gross profit (revenue minus the direct cost of producing the job), not revenue, or you will celebrate routes that sold at break-even. Stated as a ratio, return equals gross profit divided by cost: a route costing $200 that produces $1,800 in gross profit returns 9.0x, or 800% ROI.
How big should a canvassing route be for the numbers to mean anything?
Size it so one lucky knock can't dominate the result and the streets are similar enough to compare. A useful default for residential canvassing is a route that produces roughly 40 to 80 knocked-and-answered doors, which on typical suburban density is about one canvasser for half a day. Too small and three doors that happened to include a motivated seller show an absurd ROI that never repeats; too large and you recreate the crew-wide lump that hides everything.
Why does cost per appointment matter if it isn't the same as ROI?
Cost per appointment (total loaded route cost divided by appointments set or, better, appointments sat) is your fast leading indicator. It's available within days, before any job closes, and it isolates canvassing from your sales team's closing ability. It tells you which routes to repeat tomorrow without waiting weeks. It is not ROI, though, because cheap appointments can fail to close and expensive appointments can be big easy storm jobs. Use cost per appointment for speed and profit-based ROI for the final verdict.
How long should I wait before judging a canvassing route's ROI?
Long enough for the sales cycle to play out. You spend the cost now and collect revenue later, so any snapshot taken before jobs close shows a false loss. A 60-day maturation window is a sensible default for most residential canvassing; storm-restoration work converts faster and retail age-out work slower. Group routes by the week they were knocked into cohorts and let each cohort fully mature before judging it. While you wait, watch cost per appointment and sit rate as leading indicators.
What is the timing trap that kills canvassing programs?
Because cost is spent now and revenue arrives later, an early snapshot always shows a loss. A new push might be down several thousand dollars in week one with zero jobs closed, look like a disaster, and get cut in week three, right before the jobs from doors already knocked would have closed in weeks four through eight. The program didn't fail; the measurement window was shorter than the sales cycle. Measure matured cohorts, watch leading indicators while you wait, and fund canvassing from a rolling 60-to-90-day budget rather than a single month's snapshot.
Should I blame the canvasser when a route loses money?
Usually no. A losing route most often means losing streets, not a losing person. The same canvasser who returns 40x on a targeted street of older roofs can return negative 100% on a newer subdivision full of renters and fresh roofs, with identical effort. Before concluding anyone is the problem, move your best rep onto the winning geography and watch what happens. Cut and redesign the route first; evaluate the rep only after the door selection is sound.
How does roof-age and storm data improve canvassing ROI?
The single biggest lever in route profitability is which doors the route started from, and that's a door-selection problem the ROI math can't solve on its own. County records and Zillow show year built, not roof age, so reroofs are invisible, and measurement tools tell you a roof's dimensions, not whether it's worn out. A service like RoofPredict scores homes by a roof-age range from aerial imagery plus a per-roof storm model, producing a ranked list of homes most likely to be due. Better doors lift contact-to-appointment and sit rates at the same loaded cost, which turns losing routes into winning ones. The limits are honest: an age range is a range, a storm score is odds not proof, and the ladder inspection still confirms damage.
What can a canvasser legally say at the door on a storm route?
Keep it on the documentation-and-estimate side. A roofer can inspect, document damage with photos and measurements, prepare an accurate Xactimate-aligned repair estimate for the work they would perform, and hand that to the homeowner. A canvasser must never offer to negotiate, adjust, or handle the claim, interpret the homeowner's policy or coverage, promise a specific payout or approval, promise the deductible will be waived or absorbed, advertise a free roof, or represent the homeowner against their insurer. The roofer documents, the homeowner files, and the insurer decides coverage. State rules vary, so check your state's department of insurance and consumer-protection statutes.
What's the minimum data I need to track canvassing ROI without a heavy system?
Keep it light enough that a tired canvasser keeps it accurate. Per door, capture one outcome tap: no answer, declined, conversation, or appointment. Per route, log the route ID, rep, time block, and miles once at close-out. Per appointment, carry the route ID forward so profit flows home when the job closes months later. The attribution chain (route ID to appointment to CRM opportunity to job to gross profit) is the whole ballgame: if it breaks anywhere, your ROI reverts to guesswork. The four numbers that actually drive decisions are cost per appointment, sit rate, jobs per route, and ROI per matured cohort.
The Roofline by RoofPredict
Stay Ahead of Roofing Market Changes
Join The Roofline by RoofPredict for weekly roofing intelligence: material price signals, storm demand, insurance and regulatory updates, sales tactics, and local contractor opportunities.
Sources
- Topic No. 751, Social Security and Medicare Withholding Rates — irs.gov
- Standard Mileage Rates — irs.gov
- Occupational Employment and Wage Statistics: Roofers — bls.gov
- Asphalt Roofing Shingle Performance and Life Expectancy — nrca.net
- Hail Damage to Asphalt Shingles and Roof Performance Research — ibhs.org
- NOAA Storm Events Database — noaa.gov
- NWS Storm Prediction Center: Severe Weather Climatology — noaa.gov
- OSHA: Fall Protection in Residential Construction — osha.gov
- FTC: Truth in Advertising — ftc.gov
- Texas Department of Insurance: Public Insurance Adjusters — tdi.texas.gov
- International Residential Code (IRC), Chapter 9: Roof Assemblies — iccsafe.org
- U.S. Census Bureau: American Housing Survey — census.gov
- FTC: Door-to-Door Sales and the Cooling-Off Rule — ftc.gov
- RoofPredict — roofpredict.com
Related Articles
How Much Revenue Roofing Contractors Leave on the Table Per Claim (and Where It Leaks)
The money you lose on a storm job rarely shows up as a missed sale. It hides inside scope you forgot to document, supplements you never wrote, and roofs you should have been on instead.
Does EagleView Show Roof Age or Which Houses Need a Roof?
EagleView is a measurement and imagery company, not a roof-age or buying-signal company. Here is exactly what it reports, what it cannot, and how to layer the missing targeting data.
SalesRabbit vs SpotIO for Roofing: Canvassing, Territory, and Rep Tracking Compared
An operator's comparison of SalesRabbit and SpotIO for roofing teams: how each handles door-to-door canvassing, territory cutting, rep activity tracking, and the data you actually feed the map.