How to Build a Target Door List for Roofing Canvassing
On this page
Most canvassing days die the same way. A rep gets dropped on a street, knocks both sides, gets a few no-answers and a couple of polite brush-offs, and by hour three they're walking slower and thinking about lunch. The street wasn't bad. The roofs on it just weren't due. Nobody had told the rep that the subdivision two miles east took the brunt of the May hailstorm, or that the 1998 tract behind the high school is hitting the back end of its shingle life all at once. They knocked at random, and random is expensive.
A target door list fixes that. It's a ranked, address-level plan that answers one question before anyone laces up boots: of all the doors we could knock today, which ones are worth knocking first? Done right, it turns a 1-in-40 conversation rate into something a crew lead can actually manage, and it makes your better reps stop quitting because they're tired of walking dead streets.
What follows is the workflow I'd hand a new sales manager building this from scratch. It assumes you have a CRM or at least a spreadsheet, a canvassing app, and a territory you want to work. It does not assume you've bought any fancy data yet. We'll cover the free and cheap sources first, then where paid roof-age and storm data earns its keep, then how to score, route, sequence, and measure the whole thing. There are tables, worked examples with real numbers, and a few hard-won notes on what pros get wrong.
What a target door list actually is (and what it isn't)
A target door list is a spreadsheet or CRM segment where every row is a physical address, and every address carries enough attributes that you can sort it by likelihood-to-need-a-roof and assign it to a route. That's the whole idea. The magic isn't in any single data point; it's in stacking three or four signals so the addresses at the top of the sorted list are meaningfully more likely to convert than the addresses at the bottom.
It is not a lead list in the lead-buying sense. Nobody on these addresses has raised a hand. You're not paying per-lead for a homeowner who filled out a form. You're building your own prioritized map of a neighborhood so your reps walk it intelligently. That distinction matters for cost (you own the asset and can re-run it), for compliance (more on Do-Not-Knock and solicitation rules later), and for honesty with your crew about what the list does and doesn't promise.
Here's the mental model. Think of every roof as having two clocks running on it:
- An age clock. Asphalt shingles wear out on a schedule. A 3-tab roof installed in 2004 is in a very different place than an architectural shingle roof installed in 2019. Age alone won't tell you a roof is failing, but a whole subdivision built in the same 18-month window ages out together, and that clustering is gold for canvassing.
- A weather clock. Hail and high wind don't age a roof gradually; they damage it in an afternoon. A single supercell can bruise mats, fracture granules, and crack seals across a corridor a few miles wide, while the neighborhood one mile north sees nothing.
A good target door list reads both clocks and pushes the addresses where the clocks line up to the top.
The honest version of the promise
Before we go further, set expectations the way I'd set them with a crew. Data narrows the field. It does not pre-qualify the homeowner. The best list in the world still leaves you knocking doors, having conversations, documenting conditions, and letting the homeowner decide what they want to do. Roof age from imagery is a range, not a birth certificate. Storm models give you odds that a property was in a damaging path, not proof that a specific roof is damaged. Treat the list as a way to spend your knocking hours where the odds are best, and you'll be fine. Treat it as a guarantee and you'll over-promise to homeowners and burn your reputation.
Step 1: Define the territory before you define the doors
The instinct is to start collecting addresses. Don't. Start by drawing the box.
A territory definition is the set of boundaries that says "we will build a list inside this and ignore everything outside it." Getting this right saves you from a 40,000-row spreadsheet you'll never work and from sending a rep 35 minutes across town for one address.
Work through these constraints in order:
- Drive-time radius from your shop or staging point. For a route-density business, every minute of windshield time is a minute not spent at a door. Pick a realistic radius: 20 to 30 minutes for daily canvassing, wider only for storm response when the work justifies the drive.
- License and registration coverage. You can only sell where you're licensed to do roofing work, and many municipalities require a separate solicitation or peddler's permit for door-to-door sales. Map your legal footprint first; a beautiful list in a town you can't legally canvass is wasted.
- Crew capacity. A two-person canvassing team can meaningfully work maybe 60 to 100 quality doors a day. Don't build a list 50x bigger than you can knock in a season unless you're explicitly building a backlog.
- Product fit. If you do steep-slope residential asphalt, a corridor of flat commercial roofs or tile-heavy custom homes isn't your territory even if it's close.
Write the territory down as actual boundaries: ZIP codes, a list of subdivision names, or a drawn polygon in your mapping tool. This becomes the filter for every data pull that follows.
Edge case: storm response blows up your territory overnight
Normal canvassing territory is small and local. Storm response is the opposite. When a significant hail event hits, your territory becomes "wherever the damage corridor went," which might be a town you've never worked. Keep your everyday territory definition and your storm-response territory definition separate. They use the same scoring logic but completely different boundaries, and confusing the two is how crews end up canvassing the wrong side of a storm track.
Step 2: Gather the address universe
Now you collect every address inside the territory. This is the raw universe you'll later score and rank. Several sources, cheap to expensive:
County parcel and assessor data
Your county assessor or appraisal district publishes parcel records, and for most counties this is downloadable or queryable, often free or for a nominal fee. Parcel data is the backbone of a serious door list because it ties an address to attributes you care about:
- Year built. This is your single best free proxy for roof age, with a giant caveat we'll cover in Step 3.
- Property type / use code. Lets you filter to single-family residential and drop apartments, commercial, and vacant land.
- Living area / square footage and stories. Rough proxy for roof size, which matters for job value and for spotting the bigger, steeper roofs.
- Owner-occupied vs. absentee. Owner mailing address different from the property address usually means a rental. Rentals convert differently and sometimes you want to exclude them.
- Last sale date and price. Recent buyers behave differently than 20-year owners.
Most assessor sites let you export by jurisdiction or pull through a GIS portal. If yours doesn't, the data still exists; you may need an open-records request or a third-party parcel data vendor that has already aggregated it.
Census and neighborhood-level context
The U.S. Census Bureau's American Community Survey gives you housing characteristics by tract and block group, including median year structure built and owner-occupancy rates. You won't canvass off Census data directly, but it's excellent for quickly ranking which neighborhoods are worth pulling parcel data for. A block group with a median year-built of 2002 and high owner-occupancy is a better first pull than one built last year.
Your own CRM and past-job data
The most underused source sits in your own system. Every roof you've ever inspected, every job you've sold, every neighbor of a past customer. If you replaced a roof in a 1999-built subdivision two years ago, the houses on either side are the same age, took the same storms, and have a neighbor who can vouch for you. Pull every past job address and tag its surrounding block as high-priority. We'll come back to this as the "around-the-job" tactic.
Door-knocking apps as a collection layer
Canvassing platforms like SalesRabbit, Spotio, Roofr's tools, and similar will let you draw a territory on a map and auto-populate the addresses inside it, then track knock outcomes per door. These are great for working the list and capturing disposition data, and several can ingest parcel or third-party data. They're usually not the place to do heavy scoring, but they're where the list lives once it's built.
Here's a quick comparison of the universe sources:
| Source | Cost | What you get | Best for |
|---|---|---|---|
| County assessor / parcel | Free to low | Year built, use code, owner status, sq ft, sale data | The backbone of any serious list |
| Census ACS | Free | Neighborhood median year built, owner-occupancy | Picking which areas to pull parcels for |
| Your CRM / past jobs | Free (yours) | Proven addresses, neighbors, referral anchors | Highest-trust starting points |
| Canvassing app territory draw | Subscription | Auto-populated addresses + disposition tracking | Where the list lives and gets worked |
| Third-party parcel vendor | Paid | Cleaned, multi-county parcel data | Skipping the per-county data wrangling |
At the end of Step 2 you have a flat list: thousands of addresses, each with whatever parcel attributes you could attach. It's unranked and it's noisy. That's expected.
Clean the universe before you score it
Dirty data produces a dirty list, and a rep who gets sent to a vacant lot or a duplicate address loses trust in the whole system fast. Spend an hour cleaning before you score:
- De-duplicate. Parcel pulls and CRM exports overlap. Collapse identical addresses so one door equals one row.
- Drop non-targets by use code. Vacant land, commercial, government, multifamily over a size you don't service, mobile homes if you don't roof them. The parcel use code does most of this filtering automatically.
- Standardize addresses. "123 N Oak St" and "123 North Oak Street" should match. Inconsistent formatting breaks your dedupe and breaks the join when you attach storm or imagery data later.
- Flag the unknowables. Some parcels have no year built or a placeholder like 1900 or 0. Don't let those silently score as ancient roofs. Tag them "unknown age" and handle them as a separate, lower-confidence bucket rather than letting bad data float to the top of your sort.
- Reconcile owner vs. mailing address. Where the owner's mailing address differs from the property address, flag it as likely absentee. You'll use that in scoring.
Clean data is unglamorous and it's the difference between a list reps believe and a list they quietly stop following.
Joining data is where most homemade lists break
The hardest technical step isn't gathering any single source; it's joining them so the storm layer, the parcel layer, and the imagery layer all line up on the same address. Parcel data uses one address format, storm data is geographic (a swath polygon, not an address), and imagery is keyed to a roof footprint. Stitching them means geocoding addresses to coordinates, then asking which addresses fall inside the storm swath and matching each to its roof in the imagery. This is doable in a spreadsheet plus a mapping tool for a small territory, but it gets painful at scale, and it's a big part of why dedicated roof-intelligence tools exist: they do the geographic join for you so every address arrives already carrying its age range and storm exposure. If you're assembling it yourself, budget real time for the join, because a misaligned join silently corrupts your ranking.
Step 3: Read the age clock (and stop trusting year-built blindly)
Year built is the most available roof-age proxy and the most misleading. The single biggest mistake I see in homemade door lists is treating "year built" as "roof age." They're the same number only on a house whose original roof has never been replaced. Plenty of houses have been re-roofed once or twice. A 1995 house with a 2016 roof is not a candidate; a 1995 house with its original roof very much is.
So year-built is a starting hypothesis, not an answer. Here's how to make it useful anyway.
Use the typical service life as a window, not a deadline
Industry guidance treats asphalt shingle service life as a range that depends heavily on product, climate, ventilation, and installation. A reasonable working window:
| Shingle / roof type | Rough service-life window | Canvassing read |
|---|---|---|
| 3-tab asphalt | ~15-20 years | Anything 12+ years old is worth a look |
| Architectural / dimensional asphalt | ~20-30 years | Watch the 15+ band, climate-dependent |
| Wood shake | ~20-30 years | Condition-driven; inspect, don't assume |
| Metal | ~40-70 years | Rarely an age play; storm-driven instead |
| Tile (clay/concrete) | ~50+ years | Underlayment ages faster than tile |
The point of the window is that a roof doesn't fail on a date; it enters a band where failure becomes likely. Your list should up-rank addresses inside that band, not declare them dead.
The subdivision-cohort trick
This is the most valuable thing year-built gives you, and it survives the re-roof problem better than individual addresses do. Tract subdivisions get built in tight windows, often 12 to 24 months from first to last home. That means an entire neighborhood's original roofs hit the back end of their service life within a year or two of each other. Even if 30% of those homes have been re-roofed, the other 70% are aging out together, and a single storm that hit them all is now landing on a lot of tired roofs at once.
So instead of scoring one house, score the cohort. Find subdivisions whose median year-built puts them in the service-life band, and you've found streets where the base rate of a roof being due is structurally higher. That base rate is what canvassing lives or dies on.
Where aerial roof-age data earns its place
Year-built can't tell you which 70% still have the original roof. Aerial and satellite imagery analysis can get you closer, because the roof's current condition and apparent age show up in the picture: granule loss, color fade, patching, replaced sections, the visible difference between a crisp new roof and a weathered one. This is where a tool like RoofPredict fits the workflow. Instead of guessing roof age from year-built alone, it estimates a roof-age range per individual address from aerial imagery, which lets you separate the re-roofed houses from the ones still on their original shingles inside the same subdivision.
Be clear-eyed about what that buys you and what it doesn't. An imagery-derived age range narrows the field; it is still a range, not a documented install date, and it can't see what's happening under the shingle or inside the attic. It won't replace a physical inspection. What it does is let you walk into that 1995 subdivision and knock the original-roof houses first instead of wasting half your day on homes that were re-roofed in 2018. For a canvassing list, moving the original-roof houses to the top of the sort is exactly the kind of edge that turns a slow street into a productive one.
How climate and product bend the age window
The service-life windows in the table are national averages, and your market probably isn't average. A 3-tab roof in a mild coastal climate can outlive its window; the same roof in a high-UV, wide-temperature-swing climate with heavy hail can be cooked years early. Three local factors shift the bands enough to matter for ranking:
- Sun and heat. South- and west-facing slopes and homes with little shade bake harder. Granule loss and mat embrittlement accelerate. In hot, sunny markets, shave a few years off the top of every window.
- Ventilation. Poorly vented attics drive shingle temperatures up and shorten life from underneath. You can't see ventilation from parcel data, but you can note that certain builders and certain eras under-vented as a rule, and adjust your read on those cohorts.
- Hail frequency. In a market that takes a damaging hail event every couple of years, almost no roof reaches the back of its theoretical service life unscathed. There, the weather clock dominates the age clock, and you weight storm exposure heavier in the score.
The practical move is to calibrate your service-life bands to your own region once, write the adjusted numbers down, and use them consistently. A rep shouldn't be guessing whether 14 years is old here; the model should already encode the answer for your market.
Verifying age reads before you over-invest
Because any age signal is a hypothesis, build a cheap feedback loop. Whenever a crew is on a roof, have them record what they actually found: original or re-roof, apparent installed era, shingle type. Over a few dozen jobs you can compare your imagery-derived or year-built reads against ground truth and learn how often each is right in your market. If year-built alone is right only half the time in a re-roof-heavy area, that tells you to lean harder on imagery or to inspect more before ranking. If it's right 85% of the time in a stable older neighborhood, you can trust it more cheaply there. Either way, you're replacing opinion with a measured hit rate.
Step 4: Read the weather clock
The age clock tells you which roofs are tired. The weather clock tells you which roofs got hit. Storm history is the single strongest signal for door-list ranking in hail and wind country, because damage clusters geographically and recently, which is exactly when homeowners are most motivated to act.
Free authoritative storm sources
You do not have to buy storm data to start. Several government sources are free and authoritative:
- NOAA's Storm Prediction Center publishes daily storm reports including hail and wind, with locations and reported hail sizes. The SPC's archive lets you pull historical local storm reports by date.
- The National Weather Service / NOAA Storm Events Database is a searchable record of severe weather events by county and date, including hail size and wind speed estimates.
- Local NWS forecast offices issue and archive severe thunderstorm and storm survey information for their region.
These give you the raw "a storm happened here on this date with this reported hail size" record. The limitation is granularity: reports are often tied to a point or a county, and a county is far too coarse for door-level work. A reported 1.75-inch hail stone in the county seat doesn't mean the whole county got hit; hail swaths are narrow and patchy.
Why hail is so localized (and why that matters for your list)
Hail falls in swaths, not blankets. A single storm can lay down a corridor a few miles wide and many miles long where damaging hail fell, with sharp edges where it suddenly didn't. Two houses a mile apart can have wildly different damage because one was under the swath core and one was at the edge. This is precisely why generic "there was a storm in your county" canvassing wastes so much shoe leather: you knock a whole town when only a corridor through it actually took damage.
The job, then, is to draw the swath as tightly as you can and intersect it with your address universe. The tighter the swath, the less you waste.
Where per-roof storm modeling earns its place
This is the second place paid data pays for itself, and it's the other half of what RoofPredict does. Rather than "a storm hit the county," per-roof storm modeling estimates whether a given address was likely in the path of damaging hail or wind for past events, by combining storm-track and intensity data down to the property. Stacked on top of the roof-age range, you get the combination that matters most: roofs that are both aging out and likely storm-exposed. Those are the doors to knock first.
Keep the honesty rule from earlier front and center. A storm model gives odds that a property was in a damaging path, not proof the roof is damaged. You never tell a homeowner "our system shows your roof is damaged." You tell them "a storm came through your area; we're documenting roofs in the corridor and we'd like to take a look." The model decides where you spend your hours. The inspection, and the homeowner, decide everything after that.
Reading hail size against roof type
Not every storm that produces hail produces roofing damage, and the threshold depends on what's on the roof. Small hail can shred soft metals and screens long before it does anything to asphalt. A useful working frame when you read SPC reports:
| Reported hail size | Common consumer reference | Typical roofing read |
|---|---|---|
| 0.75" | Penny | Cosmetic on soft metals; asphalt usually fine |
| 1.0" | Quarter | Bruising possible on aged/soft shingles |
| 1.25"-1.5" | Half dollar to ping-pong | Functional asphalt damage becomes likely |
| 1.75"+ | Golf ball and up | Widespread damage across roof types |
These are rules of thumb, not guarantees; an old, brittle roof bruises at smaller sizes than a fresh one, and wind-driven hail hits slopes that face the storm hardest. The point for your list is that a 0.75-inch report shouldn't trigger a full canvassing push the way a golf-ball report should. Match the storm's severity to how aggressively you ranked the corridor.
Wind is the other half of the weather clock
Hail gets the attention, but straight-line wind and gust fronts damage roofs too, often by lifting and creasing shingles, tearing tabs, and stripping ridge caps. Wind damage tends to be patchier and more orientation-dependent than hail. The same NWS and SPC sources log wind reports and estimated speeds. In markets that get more wind than hail, your weather clock should weight wind events, and your reps should know to look at field edges, ridges, and the windward slopes rather than hunting only for hail bruising.
The recency decay
A storm two weeks ago and a storm three years ago are not equal signals, even on the same address. Homeowner motivation, the freshness of visible damage, and the practical window before damage gets papered over by other repairs all decay with time. Build a recency factor into the storm score: a recent qualifying event scores higher than an old one. A roof in a corridor that took golf-ball hail last month is a far hotter door than one whose last event was years back, even though both are technically "storm-exposed." Decaying the storm signal over time keeps your A-tier honest and keeps reps from being sent to corridors where the urgency has already faded.
Step 5: Score and rank every address
Now you turn a pile of attributes into a single sortable number. A scoring model is just a weighted sum: pick the signals that predict "roof is due," give each a weight, add them up, sort descending. You don't need machine learning; a transparent spreadsheet model your reps can understand beats a black box they don't trust.
Here's a starter scoring model. Tune the weights to your market over time.
| Signal | How to score it | Points (max) |
|---|---|---|
| Storm exposure (recent, likely-in-path) | Strong = 40, moderate = 25, weak/none = 0 | 40 |
| Roof age in service-life band | In band & likely original = 25, near band = 15, new/re-roofed = 0 | 25 |
| Subdivision cohort base rate | High-aging-cohort = 15 | 15 |
| Owner-occupied | Yes = 10, rental = 0 | 10 |
| Around-the-job proximity | Within 2 blocks of a past sold job = 10 | 10 |
Max score here is 100. An address that's storm-exposed, original-roof, in an aging cohort, owner-occupied, and near a past job scores near the top and gets knocked first. An owner-occupied home with no storm history and a five-year-old roof scores ~10 and falls to the bottom where it belongs.
Worked example
Take three addresses in the same territory:
- 123 Oak St — 1999-built tract, imagery suggests original roof (age range 22-27 yrs), strong recent hail exposure, owner-occupied, one block from a job you sold last spring. Score: 40 + 25 + 15 + 10 + 10 = 100.
- 45 Birch Ln — 2009-built, imagery shows a recent re-roof, same hail corridor, owner-occupied. Score: 40 (storm) + 0 (new roof) + 0 + 10 + 0 = 50.
- 88 Pine Ct — 1998-built, original roof, but no storm history in years, rental (absentee owner). Score: 0 + 25 + 15 + 0 + 0 = 40.
The rep's day now writes itself: Oak St first, then the storm-corridor homes like Birch even though it was re-roofed (a re-roof can still have storm-damaged accessories, and the neighbors are candidates), then aging homes like Pine when storm work is slow. Without the score, all three look identical on a map.
Tiering instead of a hard sort
Reps don't work off a 100-row ranked list comfortably; they work off zones. So bucket the scores:
| Tier | Score range | Meaning | Action |
|---|---|---|---|
| A | 70-100 | Aging + storm-exposed | Knock first, this week |
| B | 45-69 | One strong signal | Knock when A is worked |
| C | 20-44 | Aging but quiet, or rental | Backlog / slow-day routes |
| D | 0-19 | New roof, no storm | Exclude from canvassing |
Tiers are easier to assign on a map and easier to manage. You hand a rep an A-tier zone, not a spreadsheet.
Step 6: Turn the ranked list into walkable routes
A ranked list is not a route. The highest-scoring addresses might be scattered across six neighborhoods, and a rep can't teleport. Routing is the step where you balance score against geography so a rep spends the day knocking, not driving.
The principle: knock in dense clusters of high-score doors, walk the street, don't cherry-pick across town. A rep who walks both sides of a tight A/B-tier street will out-produce a rep chasing the single highest-score address on each block. Density beats marginal score.
A practical routing workflow:
- Map the tiers with color. Plot every scored address on your canvassing app, colored by tier. Patterns jump out: you'll see A-tier clusters light up along a storm corridor or inside an aging subdivision.
- Carve daily zones around clusters. Draw a polygon containing roughly a day's worth of doors (call it 60-100) where most are A and B. Aim for contiguous streets a rep can walk.
- Sequence within the zone. Walk every door on a street rather than skipping the C-tier house between two A-tier houses. The skip costs more in lost rhythm than the C-tier door costs to knock, and the C-tier neighbor is a referral source.
- Assign and lock. Give one rep one zone for the day so you can measure rep-vs-rep and zone-vs-zone cleanly. Overlapping territories make your data useless.
The around-the-job tactic
The highest-trust doors you'll ever knock are the ones touching a job you've already done. When you have a crew on a roof, the surrounding 20 to 40 homes are the same age, took the same storms, and can literally see your sign in the yard. Bake this into routing: whenever a job is scheduled, auto-generate a small canvassing zone around it and work it while the crew is on-site. Your scoring model already gave those neighbors the around-the-job bonus; routing is where you cash it in.
Step 7: Sequence the timing
Which doors and which routes is most of the battle, but when you knock matters more than people admit.
- Knock-window timing. Evenings and weekends catch owner-occupants home, but local solicitation ordinances often restrict hours (commonly something like 9 a.m. to one or two hours before sunset, but it varies by municipality, so check). Build your routes around the legal and practical window.
- Post-storm urgency. After a significant hail event, the clock is loud. Motivated homeowners, fresh damage, and a short window before storm-chasers saturate the corridor. Your storm-exposed A-tier zones should be canvassed within days, not weeks. This is exactly when a pre-built, storm-scored list pays off: you're not scrambling to figure out where the swath went; you already have the corridor ranked and zoned.
- Seasonality. Aging-roof (non-storm) canvassing is your steady base-load work for slow weeks and the off-season; storm work is the surge. A good list lets you flip between the two without rebuilding from scratch, because both run off the same scored universe.
What the list does for the conversation at the door
A target door list doesn't just decide where to knock; it changes what the rep says when the door opens, because the rep now walks up knowing something specific about that roof. Generic canvassing forces a generic opener, and generic openers get generic brush-offs. A list-informed opener is grounded and honest.
Compare the two. Generic: "Hi, we're a roofing company doing work in the area, are you interested in a free inspection?" That triggers the sales-pitch reflex and the door closes. List-informed, for an aging-cohort door with no recent storm: "Hi, we've been doing roofs in this neighborhood; a lot of the homes here went up around the same time and the original roofs are reaching the age where it's worth a look before a problem starts. Mind if I take a quick look at yours?" For a storm-corridor door: "Hi, a storm came through here a couple weeks back. We're documenting roofs in this area that were in the path and would like to take a look at yours and let you know what we find."
Notice what those openers do and don't claim. They reference real, specific, true facts about the neighborhood and the storm. They do not claim the roof is damaged, do not promise an insurance outcome, and do not mention deductibles. The list gives the rep a truthful reason to be standing there, which is the single biggest driver of whether the conversation continues. Train reps to lead with the specific true thing the list told them, then let the inspection do the rest.
Tracking the do-not-knock and callback layers in the field
The list is bidirectional: it tells reps where to go, and reps' findings update the list. Two field-captured layers matter as much as your scoring:
- Do-not-knock. When a homeowner asks not to be contacted, or you see a posted no-soliciting sign you're honoring, that address gets permanently flagged so no rep ever knocks it again. This isn't optional politeness; it's how you avoid the complaint that gets canvassing banned in a jurisdiction.
- Callbacks and not-homes. A not-home at a high-score door isn't a dead door; it's a door to hit at a different hour. Capture the time you knocked so you can route a callback into an evening or weekend pass. High-score not-homes are some of the most valuable doors you have, and they're easy to lose if you don't track them.
Step 8: Track outcomes and let the list teach you
A target door list that never updates is a list that slowly rots. Every knock produces data; capture it and feed it back.
Log a disposition for every door: no-answer, not-interested, inspection-booked, not-home-callback, do-not-knock, sold. Your canvassing app should make this one tap. Then watch the numbers per tier and per zone:
| Metric | What it tells you | Healthy direction |
|---|---|---|
| Doors knocked per rep-day | Effort / route density | Stable and high |
| Contact rate (someone answers) | Timing and targeting | Higher in good windows |
| Inspection-booked per 100 doors | List quality, top of funnel | Rising as scoring improves |
| Inspection-to-sold rate | Pitch + real roof condition | Validates your scoring |
| A-tier vs C-tier book rate | Is your scoring real? | A clearly beats C |
That last row is the audit on your whole model. If A-tier doors don't book inspections at a meaningfully higher rate than C-tier doors, your scoring weights are wrong, or your storm/age data is wrong, or your reps are ignoring the tiers. Fix whichever it is. When A-tier clearly outperforms C-tier, you've proven the list is doing its job, and you can confidently spend more reps on A-tier zones.
Re-running the list
Because you built this asset yourself, you can re-run it. Roofs age another year; new storms hit; you knock and learn. Quarterly, refresh storm data and re-score. After a major event, rebuild the storm layer immediately for the affected corridor. The list is a living thing, not a one-time export.
The tooling stack: what runs each part
You don't need one perfect platform; you need a few tools that each do their job and hand off cleanly. A workable stack:
| Layer | Job | Typical tools |
|---|---|---|
| Data source | Parcels, year built, owner status | County GIS portals, parcel vendors |
| Storm / age intelligence | Storm exposure and roof-age range per address | Public NOAA/NWS data, or a per-roof tool |
| Scoring | Weighted model, tiering | Spreadsheet to start, CRM fields later |
| Mapping / routing | Plot tiers, carve zones | Canvassing app map, GIS tool |
| Canvassing execution | Knock tracking, dispositions, do-not-knock | SalesRabbit, Spotio, Roofr, similar |
| CRM | Pipeline, follow-up, reporting | Your roofing CRM |
The two failure modes are over-tooling and under-tooling. Over-tooling is buying six platforms that don't talk to each other before you've proven the workflow with a spreadsheet. Under-tooling is trying to run a 50-rep storm response out of a single shared sheet that everyone overwrites. Start lean, prove the loop works on one territory, then add tools where the manual step has become the bottleneck.
Build vs. buy the data layer
The scoring, routing, and execution layers you should always own; they're your operation. The question is whether to assemble the data layer (parcels plus storm plus roof age) yourself from public sources or buy it pre-joined. A rough decision frame:
| Situation | Lean toward |
|---|---|
| One small steady territory, time to spare | Build it from free public sources |
| Re-roof-heavy area where year-built misleads | Buy imagery-derived roof-age ranges |
| Frequent storm response across new towns | Buy per-roof storm modeling for speed |
| Tiny budget, willing to trade time for money | Build, accept coarser storm granularity |
| Need to move within days of a storm | Buy; the join time you save is the whole edge |
The honest read: you can build a real, useful list entirely from public data, and many good operators do. You buy the data layer when the time to assemble and join it yourself costs more than the tool, which is most often true in re-roof-heavy markets and in fast storm response, where being a week late means the corridor is already worked by competitors. Either way, the value is the same: a ranked list that puts your crew on roofs that are actually due.
Common mistakes that quietly kill door lists
A decade of watching teams build these, here's what goes wrong:
- Trusting year-built as roof age. Covered above and worth repeating; it's the number-one error. Always treat it as a hypothesis to be refined with imagery or inspection.
- Canvassing a whole county after a storm. Hail swaths are narrow. Knocking everything "because there was a storm" wastes most of the effort. Tighten the swath.
- Cherry-picking high scores across town. Reps lose hours to windshield time chasing scattered A-tier doors. Density beats marginal score every time.
- No disposition tracking. If you can't see book rate by tier, you can't tell whether the list works, and you'll keep arguing about it instead of improving it.
- Ignoring Do-Not-Knock and solicitation rules. One viral complaint or a fine can shut down canvassing in a town. Compliance isn't optional (next section).
- Over-promising from the data. Telling a homeowner their roof "is damaged" because a model flagged the corridor is dishonest and dangerous. The model says where to look; the inspection says what's there.
- Building the list once and never refreshing it. Roofs age, storms hit, dispositions accumulate. A stale list is a slowly worsening list.
- Letting territories overlap between reps. You lose the ability to measure anything, and reps double-knock annoyed homeowners.
Staying compliant while you canvass
A door list is only valuable if you can legally and ethically knock it. Build compliance into the list, not as an afterthought.
Solicitation permits. Many cities and towns require a peddler's, solicitor's, or canvasser's permit for door-to-door sales, sometimes per-rep. Some require background checks. Map this to your territory before you knock; an unpermitted crew is a liability.
Do-Not-Knock / Do-Not-Solicit registries. Some municipalities maintain Do-Not-Knock lists, and some homeowners post no-soliciting signs that carry legal weight locally. Maintain a do-not-knock layer in your list and honor it absolutely. One ignored sign can become a complaint that ends canvassing in that jurisdiction.
The FTC Cooling-Off Rule. Federal rules generally give consumers a right to cancel certain door-to-door sales within three business days. Know how it applies to your contracts and disclose it properly. This is a federal consumer-protection baseline; your state may add to it.
State insurance and contractor rules. In hail and storm states, departments of insurance (for example the Texas Department of Insurance) and contractor licensing boards regulate how roofers may interact with insurance claims and what they may and may not say or do regarding deductibles and claims. The clean, defensible posture: you document roof conditions and provide estimates, the insurer makes coverage decisions, and the homeowner owns their claim. Train every canvasser to stay inside that lane. Never imply you can get a claim approved, never offer to absorb or waive a deductible, and never present a storm model as proof of damage. Those are exactly the moves that draw regulatory attention and damage the industry's reputation.
Safety. Canvassing puts people on foot near traffic, on uneven ground, sometimes near dogs and unhappy strangers. Have a basic safety protocol, check-ins, and clear rules about not entering homes or climbing anything during a canvass.
Putting it together: a build checklist
Use this as the operational checklist when you build your first list:
- Define the territory. Drive-time radius, licensed area, crew capacity, product fit. Write it as boundaries.
- Pull the address universe. County parcels for year built, use code, owner status, sq ft; Census to pick neighborhoods; your CRM for past jobs and neighbors.
- Clean and filter. Keep single-family residential, drop vacant land, commercial, and product mismatches. De-duplicate.
- Attach the age clock. Score year-built against service-life bands; up-rank aging cohorts; refine with aerial roof-age ranges where you have them.
- Attach the weather clock. Pull free SPC/NWS storm history for the territory; tighten with per-roof storm modeling so you rank likely-in-path addresses, not whole counties.
- Score every address. Weighted model (storm, age, cohort, owner-occupancy, around-the-job). Sort and tier A/B/C/D.
- Add the compliance layer. Permits mapped, do-not-knock honored, solicitation hours noted.
- Route it. Color tiers on a map, carve daily zones around dense A/B clusters, sequence whole streets, assign one rep per zone.
- Sequence timing. Storm corridors within days; aging zones for slow periods; knock inside legal hours and when owners are home.
- Track and refine. Log every disposition; watch book rate by tier; re-score quarterly and immediately after major storms.
Work that list top to bottom and your canvassing stops being a coin flip. Your reps spend their hours where the age clock and the weather clock both point at a tired roof, your book rate climbs, and you can prove with your own disposition data that the targeting is real. That's the whole game: fewer doors, better doors, and a list that gets smarter every time someone knocks.
The data layer, whether you assemble it free from public sources or lean on per-roof age ranges and storm modeling from a tool built for it, is there to do one job: point your crew at the roofs most likely to be due so a finite number of knocks turns into a maximum number of honest inspections. The roof tells the truth when you get on it. The list just makes sure you get on the right ones first.
FAQ
Can I build a target door list without buying any data?
Yes. County assessor and parcel records give you year built, property type, owner-occupancy, and square footage, usually free or cheap. Census ACS data helps you pick which neighborhoods to pull. NOAA's Storm Prediction Center and the NWS Storm Events Database provide free historical hail and wind records. Your own CRM supplies past jobs and their neighbors. That stack alone produces a workable ranked list. Paid roof-age and per-roof storm data make the list sharper by separating original roofs from re-roofs and tightening storm swaths below the county level, but they're an upgrade, not a prerequisite.
Why shouldn't I just use year built as roof age?
Year built equals roof age only on a house whose original roof has never been replaced. Many homes have been re-roofed once or twice, so a 1995 house might have a 2018 roof and not be a candidate at all. Use year built as a starting hypothesis: up-rank homes inside the shingle service-life band, especially whole subdivisions that age out together, but confirm with aerial roof-age estimates or a physical inspection before treating any single address as a sure thing.
How do I rank one address higher than another?
Build a transparent weighted score. Common signals: recent likely storm exposure (highest weight), roof age inside the service-life band and likely original, subdivision aging-cohort base rate, owner-occupancy, and proximity to a past job. Add the points, sort descending, then bucket into A/B/C/D tiers so reps work zones instead of a long list. The addresses that score high on both age and storm exposure are the ones to knock first.
How does storm data make canvassing more efficient?
Hail and wind damage falls in narrow swaths, not evenly across a county, so a storm that hit your county may have only damaged a corridor a few miles wide. Generic county-level canvassing wastes effort on streets that took nothing. Intersecting a tightly drawn storm swath with your address list points reps at the homes actually likely to have been in the damaging path, which is also when homeowners are most motivated. Per-roof storm modeling tightens this from county level down toward the individual property.
What does RoofPredict actually provide for a door list?
RoofPredict estimates a roof-age range per address from aerial imagery and models storm exposure per individual roof, so you can rank addresses by which roofs are both aging out and likely storm-exposed. That separates original-roof homes from re-roofed ones inside the same subdivision and tightens storm targeting below the county level. The honest limits: roof age is a range, not a documented install date, and storm modeling gives odds a property was in a damaging path, not proof of damage. It points your crew at the right doors; the physical inspection and the homeowner decide everything after that.
How many doors should a route contain?
A two-person canvassing team realistically works around 60 to 100 quality doors in a day, depending on density, contact rate, and how long conversations run. Build daily zones around that number, packed with contiguous A and B tier streets so reps walk rather than drive. Density of high-score doors matters more than chasing the single highest-score address on each block, because windshield time between scattered doors quietly eats the day.
How often should I rebuild or refresh the list?
Treat it as a living asset. Re-score quarterly to account for roofs aging another year and dispositions you've collected from knocking. Rebuild the storm layer immediately after any major hail or wind event in your territory so your crew can hit the corridor within days while homeowners are motivated. Because you built the list yourself from sources you can re-pull, refreshing it is cheap compared to the value of always working current data.
What compliance rules apply to door-to-door roofing canvassing?
Several layers. Many municipalities require a solicitor's or peddler's permit, sometimes per rep, and restrict knocking hours. Some maintain Do-Not-Knock registries, and posted no-soliciting signs can carry legal weight locally; honor them absolutely. The FTC Cooling-Off Rule generally gives consumers a right to cancel certain door-to-door sales within three business days. State insurance and contractor rules govern how you may discuss claims and deductibles. The safe posture is to document conditions and provide estimates while the insurer decides coverage and the homeowner owns the claim.
How do I know if my targeting is actually working?
Log a disposition for every door and compare the inspection-booked rate of your A-tier doors against your C-tier doors. If A clearly outbooks C, your scoring is real and you should pour more reps into A-tier zones. If they're similar, your weights, your underlying age or storm data, or your reps' adherence to the tiers need fixing. Also track doors knocked per rep-day, contact rate, and inspection-to-sold rate to separate list quality from pitch quality.
Should I include rental and absentee-owned properties?
It depends on your market and crew. Owner-occupied homes generally convert better at the door because the decision-maker answers, so most lists up-rank them. Rentals and absentee-owned homes aren't worthless, but the person who answers often can't authorize anything, so they belong lower in your scoring. Parcel data flags these when the owner's mailing address differs from the property address. Many teams keep them in a lower tier for slow-day routes rather than excluding them entirely.
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
- National Roofing Contractors Association — nrca.net
- NOAA Storm Prediction Center — spc.noaa.gov
- NOAA Storm Events Database — ncdc.noaa.gov
- National Weather Service — weather.gov
- Insurance Institute for Business & Home Safety (IBHS) — ibhs.org
- U.S. Census Bureau American Community Survey — census.gov
- OSHA Construction Safety — osha.gov
- International Code Council (IRC) — iccsafe.org
- FTC Cooling-Off Rule — consumer.ftc.gov
- FTC Business Guidance: Cooling-Off Rule — ftc.gov
- Texas Department of Insurance — tdi.texas.gov
- U.S. Bureau of Labor Statistics: Roofers — bls.gov
- U.S. Department of Energy: Roof Ventilation & Attics — energy.gov
- RoofPredict — roofpredict.com
Related Articles
How to Build a Roofing Mailing List That Actually Books Jobs
Most roofing mailers lose money because the list is wrong, not the postcard. Here's how to build a list of addresses that are actually due for a roof.
How to Build an Aged Roof Mailing List by Address (Without Burning Your Postage Budget)
A practical playbook for roofing contractors who want to mail only the houses with old roofs, address by address, instead of carpet-bombing whole ZIP codes and praying.
The Best Mailing List for Roofing Contractors Is the One You Build From Roof Age and Storm Data
Most roofing mailing lists are just county property dumps with a pretty cover. Here is how to build one that targets roofs the storm wore out and the roofs aging out, then mail it so the phone rings.