How to Prioritize Roofing CRM Contacts to Call First (A Practical Triage System)
On this page
Most roofing CRMs are graveyards. You paid for the software, your reps dumped a few thousand names into it, and now there are 4,000 contacts staring back at you with no obvious order. So the rep does what every rep does: opens the list, starts at the top, and dials whoever happens to be there. The top of an unsorted list is almost never the person most likely to sign this week. That is the entire problem in one sentence.
The question "who do I call first" sounds simple, but it is the highest-leverage decision your sales team makes every single morning. A rep can only make so many real conversations in a day, maybe 8 to 15 connected calls if they are disciplined. If those conversations go to the wrong contacts, the rep's whole day is spent at a low conversion rate. Fix the order of the list and you change the output of the same eight hours without hiring anyone, buying more leads, or changing the script.
What follows is a triage system built the way a good emergency room sorts patients: not first-come-first-served, but worst-first and most-treatable-first. We will define the signals that actually predict a sale, turn them into a score you can compute in any CRM, build a daily call list out of that score, and then handle the parts everyone gets wrong: dead leads that aren't dead, storm spikes that blow up your normal order, and the difference between a contact who is ready and a contact who is merely interesting.
This is written for the owner or sales manager who has a CRM and a calling team and wants the list to sort itself. No fluff, no theory you can't run on Monday.
Why call order beats call volume
There is a common belief in roofing sales that more dials equals more deals. It is half true. Dials matter, but only after the list is ordered, because dials are a fixed and scarce resource. Let's put real numbers on it.
Say a rep makes 80 dials a day and connects to a live person on 15 percent of them. That is 12 conversations. If the average contact in the list closes at 4 percent, the rep books roughly half a deal a day from cold dialing. Now suppose the top 20 percent of your list closes at 12 percent and the bottom 80 percent closes at 1.5 percent. Same 12 conversations. If the rep spends the morning in the top 20 percent, those 12 conversations are worth far more than 12 conversations pulled at random from the whole pile.
The math is unforgiving in the other direction too. A rep who burns the first two hours of the day on the bottom 80 percent has spent their freshest energy and their best voice on the contacts least likely to convert. By the time they reach the good names, it is 3 p.m., they are tired, and they are leaving voicemails because the homeowner is at work.
So the goal of prioritization is not to work the list faster. It is to make sure the scarce thing, a connected conversation, lands on the contact most likely to turn into an inspection and then a job. Everything below serves that one goal.
A worked example of the same day, two orders
Picture two reps with identical 60-name lists and identical scripts. Rep A opens the CRM and dials alphabetically. Rep B works a scored list. Both make 80 dials and reach 12 live people.
Rep A's 12 conversations are a random draw from the pile: a couple of brand-new roofs, a few people who never asked for anything, one ripe estimate buried at letter R that they reach at 3:40 p.m. when the homeowner's voicemail picks up. Rep A books one inspection and feels like the day was a grind.
Rep B's 12 conversations are the top 12 names by score: two fresh form fills from this morning, four delivered estimates in the ripe window, three storm-street addresses, and three aging-out roofs. Rep B books four inspections and one verbal yes on an estimate. Same dials, same script, same eight hours. The only variable that changed was the order, and it roughly quadrupled the output. That is the prize, and it is available to any shop willing to sort its list before it dials.
The five signal families that actually predict a roofing sale
Before you can rank contacts you have to decide what "good" means. In roofing, the signals that move the needle cluster into five families. Score each family, weight them, add them up. That sum is your call priority.
1. Intent: did they ask, and how recently
Intent is the strongest single predictor and it decays fast. A homeowner who filled out your form, replied to a text, called and hung up, or stopped a canvasser yesterday is in a completely different bucket than a name you bought on a list. Intent has two parts: the type of action and how old it is.
A ranked view of intent actions, strongest to weakest:
- Inbound phone call (even a missed one) in the last 48 hours
- Form fill or "request an inspection" submission
- Reply to a text or email (a real reply, not an unsubscribe)
- Booked-then-no-showed appointment (they wanted it, life happened)
- Clicked a link in your email twice or opened it five-plus times
- Door-knock conversation where the homeowner said "come back"
- Cold list with no action at all
The decay matters as much as the action. An inbound call is gold for about 72 hours and then it cools quickly. This is the "speed to lead" effect that has been measured across industries for years: contacting a web lead within the first five minutes versus thirty minutes can change your odds of ever reaching that person by an order of magnitude, and the curve keeps falling after that. The roofing version is the same shape. A form fill answered in five minutes is a conversation; the same form fill answered the next afternoon is a voicemail.
2. Recency and stage: where are they in the pipeline
A contact's pipeline stage and the time since your last touch tell you whether they are warm, going cold, or genuinely stalled. The trap is treating "old" as "dead." An estimate you sent 9 days ago with no answer is not dead, it is ripe. An estimate you sent 75 days ago is a different animal and needs a different play, but it is still not garbage.
The stages that deserve priority, roughly in order:
- Inspection done, estimate delivered, no decision yet (this is your money)
- Inspection booked but not yet completed (confirm, don't lose it)
- Inspection requested, not yet booked
- Spoke once, said "call me later" with a real date attached
- Long-stalled estimate (45-plus days) needing a reset
- Never connected, multiple attempts
3. Roof condition and age: is the asset actually due
This is the family most CRMs ignore entirely, and it is the one that separates a roofing list from a generic sales list. A homeowner's interest is one thing; whether their roof is actually near the end of its service life is another. The two together are far more predictive than either alone.
Asphalt shingle roofs, the vast majority of the residential market, have a typical service life in the rough range of 15 to 30 years depending on product, ventilation, slope, and climate. A 6-year-old roof rarely buys unless there is storm damage. A 22-year-old roof is a candidate every time the weather turns. If you know, even approximately, how old a contact's roof is, you can push the aging-out roofs up the list and let the brand-new roofs sink.
The catch: you almost never know the exact install date, and you should not pretend to. What you can get is a range, and a range is enough to rank. "This roof reads as roughly 18 to 24 years old from aerial imagery" is a perfectly usable signal even though it is not a birthday. Treat roof age as a range, never a date, and weight the contact up when the range overlaps the back half of a shingle's service life.
A few age bands and what they mean for call order:
- 0 to 8 years: rarely a re-roof candidate absent storm damage. Sinks to the bottom unless a storm signal lifts it. Don't waste prime hours here.
- 9 to 14 years: the watch list. Worth a soft touch and worth jumping if a storm hits, because a hailed roof at year 12 is a real conversation.
- 15 to 22 years: the core of your aging-out drip. These roofs are genuinely near or at the front edge of replacement for many shingle products and ventilation situations.
- 23 years and up: call regardless of storm. These owners are living on borrowed time and many already know it.
The reason a range works as a sorting key, even though it is fuzzy, is that you are not making a coverage decision off it. You are deciding who to dial first. Being approximately right about which roofs are old enough to matter is far more valuable than being precisely wrong because you assumed every roof in a subdivision was built the year the subdivision opened. Subdivisions get partial re-roofs after storms, additions, and one-off replacements; the imagery sees the actual roof, not the plat date.
4. Storm exposure: did weather just age the roof for you
Storms reshuffle the entire list overnight. A roof that was a low priority on Monday because it was only 9 years old can become a top priority on Tuesday because 1.75-inch hail fell on that exact block. Storm exposure is a per-roof event, not a per-ZIP event, and that distinction is where most call lists go wrong.
The naive approach is to take a county hail polygon, pull every contact in the county, and call them all. That floods your reps with addresses where nothing happened, because hail is wildly uneven. A storm core might drop golf-ball hail on six streets and nothing two streets over. The county-wide blast wastes dials and trains your reps to distrust the list.
The better approach treats storm exposure as a probability per address: how likely is it, given the modeled hail size, wind, and the roof's age and material, that this specific roof took damage worth inspecting. That is an odds estimate, not proof of damage. You still have to get on the roof to know. But as a sorting signal it is enormously powerful, because it lets you call the streets the storm actually hit, in order of likely severity, while the lead is hot.
Think about how the variables combine. Hail size is the headline, but it interacts with everything else. One-inch hail on a 4-year-old impact-rated roof may produce nothing worth a claim. The same one-inch hail on a 20-year-old three-tab with brittle, granule-stripped shingles can crack mats and knock the protective granules off in sheets. Wind matters in the same way: a 60-mph gust lifts and creases tabs on an old roof that a newer, well-sealed roof shrugs off. So the per-roof odds are about more than "how big was the hail here"; they are "how big was the hail here, against a roof this old, of this material, at this slope." That product is what you want to sort on, and it is exactly why a flat county polygon fails: it knows the hail and nothing about the roof.
There is also a timing dimension reps forget. Storm leads are perishable in two directions at once. The damage is freshest and easiest to attribute to the event in the days right after the storm, and the homeowner's attention is highest then too, before a dozen other contractors and a yard full of signs have saturated the neighborhood. A high-odds storm address worked on day two is a very different conversation than the same address worked on day twenty. So storm exposure doesn't just lift a contact's score; it lifts it with a clock attached, and your stack should reflect that the storm names age out of "hot" faster than almost anything else.
5. Fit and reachability: can you actually serve and reach them
The last family is unglamorous but it kills more deals than people admit. Does the contact fall inside your service area and the kind of work you want? Is the phone number valid? Is there a name attached or just an address? A perfect intent signal on a contact you can't legally service or can't physically reach is worth zero.
Reachability also includes time-of-day fit, which we will use later when we sequence the actual calls. A homeowner who works a day shift is reachable at 7 a.m., 6 p.m., or Saturday morning, not at 1 p.m. on a Tuesday. The CRM should know this where it can.
Turning signals into a score you can actually compute
Now we make the five families into a number. The principle: keep it simple enough that a sales manager can recompute it by hand to sanity-check the CRM, and transparent enough that a rep trusts it. A black-box score that reps don't understand is a score reps will ignore.
Here is a worked scoring model. Adjust the weights to your market, but start here.
| Signal family | What you measure | Points |
|---|---|---|
| Intent action | Inbound call <72h | 40 |
| Form fill <72h | 35 | |
| Reply to text/email <7d | 25 | |
| No-showed booked appt | 20 | |
| Engaged email (multi-open/click) | 10 | |
| Cold, no action | 0 | |
| Recency/stage | Estimate delivered, 3-21 days old | 30 |
| Inspection booked, upcoming | 25 | |
| Inspection requested, unbooked | 20 | |
| Stalled estimate 45d+ | 8 | |
| Never connected | 0 | |
| Roof age range | Range overlaps 18-30 yrs | 20 |
| Range overlaps 12-17 yrs | 10 | |
| Range under 12 yrs | 0 | |
| Storm exposure | High modeled per-roof odds | 25 |
| Moderate modeled odds | 12 | |
| None / outside footprint | 0 | |
| Fit/reachability | In service area, valid phone, named | 10 |
| Missing one of the three | -5 | |
| Out of area or bad number | -50 |
A contact's priority score is the sum of the single best-fitting row in each family. So a homeowner who called yesterday (40), has a delivered estimate from last week (30), a roof that reads 19 to 24 years old (20), sits in a storm footprint with high odds (25), and is fully reachable (10) scores 125. A cold purchased name with a young roof and no storm scores 10 or less. You now have an order.
A few rules that keep this honest:
- Take the best row per family, not the sum of all rows. Otherwise you double-count.
- Recompute intent and storm daily. They decay. Roof age does not change week to week; you can refresh it monthly or when you ingest new imagery.
- Cap the bonuses, never the penalties. A bad phone number should be able to sink a contact below everything else so reps stop wasting dials on it.
- Show the score and the why. "Score 125: inbound call yesterday + fresh estimate + storm street" beats a naked number every time.
A lightweight version for shops without fancy data
If you don't have roof-age or storm data yet, you can still get most of the lift from just intent and recency. Use a simple three-tier sort:
- Hot: any intent action in the last 7 days, or a delivered estimate 3 to 21 days old. Call these first, every day, no exceptions.
- Warm: intent 8 to 30 days old, booked inspections, requested-but-unbooked.
- Cool: everything else, worked in batches on a cadence.
The three-tier version is crude but it already beats top-of-list dialing by a wide margin, and you can layer roof age and storm signals on later.
Building the daily call list: the morning stack
A score is useless if it doesn't turn into a concrete list the rep opens at 8 a.m. Here is the routine that turns the score into a day.
Step 1: The manager builds the stack the night before
Don't make reps build their own lists each morning; they'll cherry-pick the easy names and skip the awkward follow-ups. The manager (or an automated CRM view) builds each rep's stack the evening before so it's ready when they sit down. A good daily stack for one rep, in order:
- Callbacks owed (5-10). Anyone you promised to call back today. These are appointments you made with yourself; breaking them is how warm leads go cold.
- Fresh intent (as many as exist). Every contact with an intent action in the last 72 hours, hottest first. If a form came in 20 minutes ago, it jumps the entire stack.
- Ripe estimates (5-15). Delivered estimates in the 3-to-21-day window that haven't gotten a yes or no.
- Storm street (variable). If there's an active storm response, the high-odds addresses on the streets you're working, sequenced by route so the canvass and the calls line up.
- Aging-out roofs (10-20). Older-roof contacts with no recent storm, worked as a steady background drip.
- Reactivation (5-10). Old stalled leads getting their scheduled reset touch.
Step 2: Time-block the day to the contact, not the list
Match the call to the hour the human is reachable:
- 7:00-8:30 a.m. and 5:30-7:30 p.m.: working homeowners. This is prime time; protect it for your highest-score reachable-evening contacts.
- 9:00 a.m.-4:00 p.m.: retirees, remote workers, business numbers, and administrative work (texts, emails, estimate follow-up that can be a voicemail-plus-text combo).
- Saturday 9:00 a.m.-noon: the single best window for hard-to-reach working homeowners. Many shops waste it.
The point is that two contacts with the same score are not equally callable at 1 p.m. Sequence within the score by who is actually home.
Step 3: Work the stack top-down, log everything, and let the list re-sort
The rep works straight down. Every outcome gets logged because the log feeds tomorrow's score. A connected call that ends in "call me next Thursday" creates a callback for next Thursday. A no-answer increments the attempt count and schedules the next touch per cadence. The list is alive; it re-sorts overnight based on what happened today.
Disposition codes: the data that makes tomorrow's list smarter
A priority score is only as good as the data feeding it, and the data comes from how reps log calls. If a rep marks every no-answer as "no answer" and every conversation as "talked," the CRM learns almost nothing and the score can't improve. You need a tight set of disposition codes that capture outcome and next action in one click, because a rep on the phones will not fill out a paragraph after every call.
A clean disposition set for roofing, kept short on purpose:
- Booked inspection — moves the contact to the booked stage and sets a confirm reminder.
- Interested, callback set — requires a date; creates the callback that tops tomorrow's stack.
- Estimate to send — flags the contact for a same-day estimate and a delivery follow-up cadence.
- Not now, future — drops to nurture with a re-touch date months out.
- Not interested — soft kill; stays in the database for storm and age reactivation but leaves the active cadence.
- Bad number / wrong person — triggers a number-verification task; the contact's reachability penalty kicks in.
- No answer, left voicemail — increments attempts, schedules the next cadence touch.
- No answer, no voicemail — same, but flags for a different time-of-day try.
The discipline that makes this pay off: every disposition that isn't a hard outcome must set a next touch. A call that ends with no scheduled next step is a leak in the pipeline. The rule on the floor is simple. No call ends without a disposition, and no disposition that keeps the contact alive ends without a date. When that rule holds, the score recomputes itself every night from honest data, and the morning stack is built on what actually happened rather than what the rep half-remembers.
One more reason disposition hygiene matters: it is how you catch a broken script or a bad list segment. If a particular lead source shows 90 percent "not interested" on first contact, that source is mistargeted or the opening line is wrong, and you only see it because the dispositions are clean. The codes are not bureaucracy. They are the feedback loop that lets the whole prioritization system learn.
Aligning the call list with canvassing and routes
In storm restoration especially, the phone and the front door are two channels hitting the same neighborhoods, and they should be aimed by the same priority data instead of fighting each other. When a crew is canvassing a storm-hit subdivision, the call team should be working the same streets so a homeowner who slams the door on a knocker gets a warm follow-up call that evening, and a homeowner who misses the call gets a knock the next day. Two channels, one prioritized list.
The practical setup:
- Sequence the high-odds addresses into a route, not a random call order. A canvasser walks geography; the call list for that same area should follow the same street order so the two channels reinforce. When a knocker tags a "not home" with a door hanger, that address becomes a same-evening call. When a caller leaves a voicemail, that address becomes a next-day knock.
- Let the disposition flow both ways. A door knock that produces "come back Saturday" should create a callback in the same CRM the phone team uses. A call that produces "just stop by, I'm home most days" should drop a pin on the canvasser's map.
- Rank streets by aggregate odds, then work the worst-hit first. If three streets took the storm core and six took the edge, the core streets get both the phones and the boots first, while the lead is hot and before competitors saturate.
The failure mode here is two teams working two unsynchronized lists, double-touching some homeowners three times in a day and never reaching others. One prioritized list, shared by both channels, fixes it.
Who calls what: matching reps to the right slice
Not every rep should work every part of the list. A common and costly mistake is to hand your most expensive closer a stack of cold dials. Match the skill to the stage.
- Setters / junior reps are best on volume and speed: fresh inbounds answered fast, cold and aging-out roofs worked in batches, reactivation drips. Their job is to create conversations and book inspections, not to close.
- Closers / senior reps are best on the warm middle: delivered estimates that need a real ask, high-odds storm addresses where the conversation is consultative, callbacks with a buying signal. Their hours are too valuable to spend on first-dial cold names.
- A live-answer or dispatch role owns speed to lead. Someone, or a tightly run answering service, must catch inbounds within minutes and route them, because the moment an inbound waits in a queue, the speed-to-lead advantage is gone.
When you split the list this way, the score does double duty: it orders each rep's stack and it routes contacts to the right rep. A high-intent, ripe-estimate, high-odds contact goes to a closer; a cold aging-out roof goes into a setter's batch. The same number that decides call order also decides who makes the call.
The follow-up cadence: how many times, how far apart
Prioritization decides who you call. Cadence decides how persistently you chase a contact before you stop. Most roofing teams under-follow-up dramatically. The well-worn industry observation that a large share of sales happen after the fifth contact, while many reps quit after one or two, is directionally true in roofing too. One dial and a voicemail is not follow-up. It is a single knock on a closed door.
Here is a defensible cadence for a fresh intent lead (form fill or inbound). "Touch" means call, text, or email; mix the channels.
| Day | Touch | Channel |
|---|---|---|
| 0 (within 5 min) | 1 | Call; if no answer, text immediately |
| 0 (2-3 hrs later) | 2 | Call at a different time of day |
| 1 | 3 | Call + voicemail + follow-up text |
| 3 | 4 | Call at a new time window |
| 5 | 5 | Text with a specific question |
| 8 | 6 | Call + email with the value recap |
| 12 | 7 | Call (last hard try this round) |
| 20 | 8 | "Closing the loop" text |
After touch 8 with no response, the contact drops from the active cadence into a long-term nurture (a monthly or quarterly check-in), not the trash. Roofs age and storms come; a non-buyer today is a candidate in two years or after the next hail event.
For a delivered-estimate contact the cadence is tighter and shorter, because the iron is hot:
- Day of delivery: confirm they received it and walk the scope.
- Day 2: check for questions.
- Day 5: address the one objection you expect.
- Day 9: create urgency tied to something real (crew schedule, season, their roof's condition), never a fake discount.
- Day 14: a clear "are we doing this or should I close the file" decision call.
Speed to lead: the rule that overrides the whole system
Everything above assumes a steady-state list. There is one event that overrides all of it: a brand-new inbound. When a form fills or a phone rings, that contact teleports to the absolute top of the stack regardless of its computed score, because the value of speed is so high and so perishable.
The research on this is consistent across industries: the odds of having a real conversation drop sharply with every minute that passes after a web lead comes in, and the steepest part of the cliff is in the first hour. The practical roofing rule:
- Inbound calls get answered live. A missed inbound is a callback within 5 minutes, not 5 hours. If you can't staff live answering, a call service that takes a name and a roof concern beats voicemail.
- Form fills get a call within 5 minutes during business hours, and an instant auto-text acknowledging receipt so the homeowner knows a human is coming.
- After-hours inbounds get an auto-text immediately and a call first thing, before the rest of the stack.
If you do nothing else from this whole system, do this. Speed to lead is the highest-ROI change available to most roofing sales teams, and it costs nothing but discipline.
The metrics that tell you the order is working
You can't manage call prioritization on gut feel, and you don't need a data science team to measure it. Four numbers tell you whether the order is doing its job, and they break the funnel into stages so you can see exactly where a problem lives.
1. Connect rate (live conversations per dial). This measures whether you're calling reachable people at reachable times. If it's low, the problem is usually time-of-day mismatch or stale phone numbers, not the score itself. Track it by time block to find your best calling windows.
2. Conversation-to-inspection rate. Of the people you actually talk to, how many agree to an inspection. This is the number that should move first when you start prioritizing well, because better-targeted conversations convert better. If your connect rate is fine but this number is flat, your list order is wrong or your opening pitch is.
3. Inspection-to-sale rate. Of inspections, how many become jobs. This is more about your inspection and closing process than your call order, but watch it, because a sudden drop after you change targeting can mean you're now inspecting roofs that don't actually need work, which is its own kind of mis-prioritization.
4. Speed to first contact. Median minutes from a new inbound arriving to the first dial. This is the easiest number to move and the one with the highest payoff. Put it on a dashboard, make it visible to the floor, and watch it drop.
A worked read on these: suppose before prioritizing you run a 14 percent connect rate, an 18 percent conversation-to-inspection rate, and a 35 percent inspection-to-sale rate. Out of 80 dials you get about 11 conversations, 2 inspections, and a bit under one sale. Now you sort the list and tighten speed to lead. Connect rate holds at 14 percent because the dials are the same, but conversation-to-inspection climbs to 28 percent because you're talking to readier people. Those same 11 conversations now yield 3 inspections and, at the same close rate, more than one sale per 80 dials. Nothing about the team or the budget changed. The order changed. That is what these four numbers are for: proving the order is paying, and pinpointing which stage to fix next.
Where RoofPredict fits in the priority stack
Two of the five signal families, roof age and storm exposure, are the ones most CRMs simply can't fill in on their own. Your CRM knows what the homeowner did (intent), where they are in your pipeline (recency), and whether you can reach them (fit). It does not know how old the roof is or whether a specific roof took a hit. That is the gap RoofPredict is built to fill.
The product does two things that map directly onto the scoring model above. First, it reads aerial imagery to estimate a roof-age range per address, so the "roof age range" family stops being blank and starts pushing aging-out roofs up your list. Second, it models storm physics per roof, hail size and wind against the roof's age and material, to produce a per-address likelihood that this specific roof is worth inspecting after a storm, which feeds the "storm exposure" family. You can use it to enrich your own CRM and mailing list, so the contacts you already own get a roof-age and storm-odds tag, and your existing call list re-sorts itself toward the roofs that are actually due.
What it does not do, and what you should be skeptical of from anyone who claims otherwise: it does not tell you a roof's exact install date, and it does not prove damage. Roof age comes back as a range because imagery can't read a warranty certificate. Storm exposure comes back as odds because the only way to confirm hail damage is to physically inspect the roof. The honest framing is that the data tells you which doors to knock and which contacts to call first, in what order, with much better aim than a county hail polygon and a guess. The inspection still decides the truth. Used that way, it turns the two hardest-to-source signal families into a tag on every contact, and the rest of the triage system runs on top of it.
The reactivation play: your old CRM is not dead
Most shops sit on thousands of old contacts they have written off. A large fraction of those are not dead, they are just not currently in a buying moment. The two things that create a new buying moment are time (the roof keeps aging) and weather (a storm hits). Both are exactly the signals the roof-age and storm families track, which means your dormant list is a goldmine you can re-rank the moment conditions change.
A practical reactivation workflow:
- Segment the dormant pile by roof-age range. Pull every contact whose roof now reads into the back half of its service life. These roofs crossed a threshold while sitting in your CRM.
- Cross-reference against storm footprints. Any dormant contact whose street took recent hail or high wind jumps to the top of the reactivation queue.
- Lead with the roof, not the pitch. The reactivation message is about their roof's condition and a free inspection, not "are you ready to buy yet." "We're inspecting roofs on your street after last week's storm" is a reason to call; "following up on our quote from 2023" is not.
- Cap the effort. Three touches over two weeks. If nothing, back to nurture. Reactivation is a numbers game across a big list, not a grind on each name.
The beauty of reactivation is that the contacts cost you nothing; you already paid to acquire them. Re-ranking them by roof age and storm exposure is often a better use of a slow week than buying fresh leads.
Insurance and storm-damage contacts: stay on the right side of the line
A lot of roofing CRM priority during storm season is driven by claims. This is where you have to be careful, because the temptation to over-promise is enormous and it crosses legal lines in most states. Here is the clean way to think about it, and a do-not-say list to train your reps on before they touch the phone.
What a roofing contractor can absolutely do: inspect the roof, document the damage thoroughly with photos and measurements, and prepare an accurate repair estimate, ideally aligned with the estimating standards carriers use. You can state facts about your scope of work to the homeowner and put them in writing. The homeowner files their own claim, and the insurer decides coverage. That is the whole, legal, defensible workflow.
What a roofing contractor may not do, and what your reps must never say on a priority call:
- Do not offer to negotiate, adjust, or "handle" the claim for the homeowner. That is public adjusting and it generally requires a license.
- Do not interpret the homeowner's policy or tell them what is or isn't covered.
- Do not promise a specific payout, an approval, or that the claim "will go through."
- Do not promise to waive, absorb, eat, or make the deductible disappear. In many states that is illegal, and it is a fast way to lose your license and your reputation.
- Do not advertise a "free roof."
- Do not represent the homeowner against their insurer.
So how does this connect to call prioritization? It connects on the targeting side, which is the legal side. Storm exposure data helps you identify which roofs likely have storm-related wear worth inspecting, and roof age tells you which roofs were already vulnerable. You prioritize those contacts because they are the most likely to have a documentable condition, and your offer is a thorough inspection and an honest estimate. You are sorting your call list by likelihood-of-legitimate-damage, then doing real documentation work. You are never sorting by likelihood-of-getting-a-claim-paid, because that outcome is the insurer's to decide and not yours to promise. Keep the prioritization on "which roofs are worth inspecting and documenting," and the whole storm-season operation stays clean.
What pros get wrong about call prioritization
A few mistakes show up over and over in roofing sales floors. Each one is fixable.
Mistake 1: Confusing interesting with ready
Reps love a chatty homeowner. A long, pleasant call about a roof that is 6 years old with no storm damage feels productive and produces nothing. Readiness, the combination of intent, a roof that is actually due, and reachability, is what you sort on. Interesting is a trap that eats the day.
Mistake 2: Letting reps build their own lists
Give a rep an unsorted CRM and free rein and they will call the same ten friendly contacts they always call, skip every awkward follow-up, and avoid the ripe estimates that require a real ask. The list must be built for them, by the score, so the awkward-but-valuable calls can't be dodged.
Mistake 3: Treating the county as the unit of storm targeting
We said it above and it's worth repeating because it's the most expensive storm-season error: a county hail polygon is not a call list. It floods reps with addresses where nothing happened and burns trust in the data. The unit of storm targeting is the roof, or at worst the street, not the county.
Mistake 4: Killing leads too early
One voicemail is not a follow-up. The teams that win storm season are the ones still making touch number six while their competitors quit after touch two. Build the cadence into the CRM so the system, not the rep's mood, decides when a contact is truly done.
Mistake 5: Never recomputing the score
Intent and storm exposure decay. A score computed once and never refreshed is sorting on yesterday's reality. Recompute the perishable signals daily. The contact who was a 9 last week might be a 125 today because their street just got hit, and if your list doesn't know that, your competitor's does.
Mistake 6: Optimizing the wrong stage
Shops obsess over generating new leads while ignoring the delivered estimates rotting in the pipeline at a 30-points-of-priority value. The fastest revenue in most roofing CRMs is not a new lead; it is the estimate you sent 8 days ago that nobody followed up on. Work the warm middle of the funnel before you spend a dollar on the cold top.
A 30-day rollout plan
You don't need to boil the ocean. Here's how to install this in a month.
Week 1 — Define and tag. Write down your five signal families and the point values, adapting the table above to your market. Add the fields to your CRM if they aren't there: last-intent-date, intent-type, pipeline-stage, last-touch-date, roof-age-range, storm-odds, reachability flags. Backfill what you can.
Week 2 — Score and sort. Build a CRM view or report that computes the priority score and sorts descending. Most CRMs can do this with a formula field or a simple automation. If yours can't, a nightly spreadsheet export that ranks contacts is a fine bridge while you upgrade.
Week 3 — Install the morning stack and cadence. Stop letting reps build their own lists. The manager or the automation builds each rep's stack the night before, in the order described. Load the follow-up cadence into the CRM so touches schedule themselves. Train the speed-to-lead rule hard: new inbounds jump everything.
Week 4 — Layer in roof age and storm data, then measure. Enrich your contacts with roof-age range and per-roof storm odds so the two hardest signal families come alive and your list re-sorts toward the roofs that are actually due. Then measure: connected-call rate, conversations-to-inspection rate, and inspection-to-sale rate, before and after. The number that should jump first is conversations-to-inspection, because you're now spending conversations on better-targeted contacts.
Keep the system honest after week 4 with one weekly ritual: the sales manager spot-checks ten contacts at the top of the stack and asks "would I personally call this person first?" If the answer is no, the weights are wrong and you tune them. The score serves the floor, not the other way around.
The one-paragraph summary you can hand a rep
Call callbacks you owe first, then anything that came in during the last 72 hours hottest-first, then estimates you delivered 3 to 21 days ago, then the storm streets in route order, then the aging-out roofs as a steady drip, then reactivation. Answer every new inbound within five minutes; it jumps the whole list. Follow up at least eight times before you give up, mixing calls and texts. Sort on readiness, not on who's friendly, and log every outcome so tomorrow's list sorts itself. That's the job.
The contractors who win the calling game are not the ones with the most names or the most dials. They're the ones whose list already knows who to call first, every morning, because the roof age, the storm, the intent, and the pipeline stage have all been turned into a single honest number. Build that number, trust it, refresh it daily, and your same team closes more from the same hours. If you want the two hardest signals, which roofs are due by age and which roofs a storm just wore out, filled in automatically across your CRM, that is exactly the data RoofPredict produces per address, as a range for age and as odds for storm, so your call list can finally sort itself toward the roofs that are ready.
FAQ
What is the single most important factor in deciding which roofing contact to call first?
Fresh intent. A contact who called, filled out a form, or replied to a text in the last 72 hours should be called before almost anything else, because the odds of a real conversation drop sharply with every hour that passes. The only thing that outranks fresh intent is a callback you personally promised for that day. After intent, sort by pipeline stage (delivered estimates 3 to 21 days old), then by whether the roof is actually due based on age and recent storm exposure.
How do I score contacts in my CRM without expensive software?
Use a simple three-tier sort: Hot (any intent action in the last 7 days, or a delivered estimate 3 to 21 days old), Warm (intent 8 to 30 days old, booked or requested inspections), and Cool (everything else). Call Hot every day without exception, work Warm on a cadence, and batch Cool. This crude version already beats calling from the top of an unsorted list by a wide margin, and you can add point-based scoring and roof-age and storm data later.
How fast do I really need to respond to a new roofing lead?
Within five minutes during business hours for form fills, and live for inbound calls. The odds of reaching a web lead at all fall steeply with every minute after it arrives, and the steepest part of the drop is in the first hour. A missed inbound should become a callback in five minutes, not five hours. If you can't staff live answering, an instant auto-text acknowledging the lead plus a fast human callback is the minimum that keeps the lead warm.
How many times should I follow up before giving up on a contact?
At least eight touches over about three weeks for a fresh lead, mixing calls, texts, and emails across different times of day. Many sales close only after the fifth contact, yet a lot of reps quit after one or two. After eight touches with no response, move the contact to a long-term monthly or quarterly nurture rather than deleting it, because roofs keep aging and storms keep coming, which can turn a non-buyer today into a candidate later.
Should I call every contact in a county after a hail storm?
No. A county hail polygon is not a call list. Hail is extremely uneven, so a county-wide blast floods reps with addresses where nothing happened and trains them to distrust the data. Target at the roof or street level instead, prioritizing addresses with the highest modeled per-roof likelihood of damage. That keeps reps calling the streets the storm actually hit, in order of likely severity, while the lead is hot.
How does roof age help me prioritize calls if I don't know the install date?
You don't need the exact install date; a range is enough to rank. Aerial imagery can estimate a roof-age range per address, and a roof whose range overlaps the back half of a typical shingle service life (roughly the 18-to-30-year zone) should rank above a roof that reads under 12 years old. Treat the age as a range, never as a precise date, and use it to push aging-out roofs up your list while brand-new roofs sink.
What can I legally say to a homeowner about an insurance claim on a priority call?
You can offer a thorough inspection, document damage with photos and measurements, and prepare an accurate repair estimate aligned with standard estimating practices. You state facts about your scope; the homeowner files their own claim and the insurer decides coverage. You may not negotiate or handle the claim, interpret their policy, promise a payout or approval, promise to waive or absorb the deductible, or advertise a free roof. Prioritize contacts by likelihood of legitimate, documentable damage, never by likelihood of a claim getting paid.
What's the difference between an 'interesting' contact and a 'ready' one?
Interesting is a homeowner who is pleasant to talk to. Ready is the combination of real intent, a roof that is actually due by age or storm exposure, and the ability to reach and serve them. A long friendly call about a 6-year-old roof with no damage feels productive and closes nothing. Sort your list on readiness, not on who is fun to talk to, or the friendly low-value calls will eat your best hours.
How do I revive old, dead contacts in my CRM?
Most old contacts are not dead, just not currently in a buying moment, and the two things that create a new moment are time and weather. Segment your dormant pile by roof-age range to find roofs that crossed into the back half of their service life while sitting in your CRM, then cross-reference against recent storm footprints. Lead the outreach with the roof's condition and a free inspection rather than a stale sales follow-up, and cap the effort at about three touches over two weeks before returning them to nurture.
How often should I recompute my call-priority scores?
Recompute the perishable signals, intent and storm exposure, every day, because they decay quickly and storms can reshuffle the entire list overnight. Roof age changes slowly, so refresh it monthly or whenever you ingest new imagery. A score computed once and never refreshed is sorting on yesterday's reality, which means a contact whose street just got hit could be your top call today while your stale list still has them buried.
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
- NRCA Roofing Manuals and Technical Resources — nrca.net
- IBHS Hail Research and Impact Resistance — ibhs.org
- NOAA Storm Prediction Center — spc.noaa.gov
- National Weather Service Severe Weather — weather.gov
- NOAA Storm Events Database — ncdc.noaa.gov
- OSHA Fall Protection in Construction — osha.gov
- FTC Guides Concerning Use of Endorsements and Testimonials — ftc.gov
- Texas Department of Insurance: Public Adjusters — tdi.texas.gov
- International Residential Code (IRC) - ICC — iccsafe.org
- U.S. Bureau of Labor Statistics: Roofers — bls.gov
- U.S. Census Bureau: American Housing Survey — census.gov
- National Association of Insurance Commissioners: Public Adjusters — naic.org
- RoofPredict — roofpredict.com
Related Articles
How to Target Apartment Complexes for Roof Replacement (Without Wasting a Season Chasing the Wrong Properties)
Multifamily roofs are bigger jobs with fewer competitors than residential, but the buyer, the timeline, and the sales motion are completely different. Here is how to find the apartment complexes whose roofs are actually due and get in front of the person who signs.
Which Old Roofing Leads Are Worth Re-Contacting (And Which to Let Die)
Most contractors sit on hundreds of old estimates and lost bids. Here is how to score that list, rank it, and call back only the doors actually worth a second knock.
How to Find HOA Roofing Contracts (and Win Them by Roof Age)
Where HOA roofing work actually comes from, how to find the communities whose roofs are aging out, and how to walk into a board meeting already knowing the answer.