Roofing Appointment Setting From Data, Not Cold Calls
On this page
An appointment setter who calls a cold list all day is one of the most expensive, least productive seats in a roofing company. The math is brutal once you actually watch it: a setter dials for six hours, reaches a third of the numbers, and most of the people who pick up have a roof that's eight years old, or that they re-roofed last fall, or that they have no reason on earth to let a stranger climb on. By Friday the setter has booked a handful of inspections, half of which no-show, and quit somewhere in their head a week before they quit out loud. The owner concludes that phone outreach "doesn't work" and goes back to buying leads or waiting on the next storm.
The phone works fine. The list is the problem. Cold calling means dialing numbers with no information about the roof behind the address — you're hoping the person who answers happens to need you, and the odds of that on a random street are terrible. The fix isn't a better script or a harder-working setter. It's calling a different list: homeowners whose roofs are actually old enough to be due, or that a storm actually wore out, with the call ordered so the most likely buyers get dialed first. Same phone, same setter, a list that did the qualifying before the first ring. That's the whole shift, and it changes appointment setting from a grind into a system that fills an estimator's week.
What follows is the operator's build: why cold calling fails on the numbers, what data turns a cold list into a warm one, how to build and rank the call list, the call-team workflow and a script frame that opens with a real reason instead of a pitch, the follow-up cadence that actually books, how to handle the calls that touch storms and insurance without crossing a legal line, and the metrics that tell you whether any of it is working. Concrete numbers, real workflows, and honest limits — written for the owner or sales manager who has to make a calling dollar produce booked roofs.
Cold calling versus data-driven appointment setting
Start by naming the two things precisely, because they get blurred and the blur is what keeps roofers grinding a broken motion.
Cold calling is dialing a list with no information about the roof — a purchased phone list, a reverse-lookup of a zip code, every number in a subdivision. The setter has a name and a number and nothing else. Whether the person needs a roof is pure chance, and on a random residential street the share with a roof that's a genuine replacement candidate this year is small. Most calls are a fast no because there's nothing true to say. The setter's job becomes absorbing rejection, and rejection is what burns setters out and drives no-shows up, because a homeowner who got talked into an appointment with no real reason forgets it by Thursday.
Data-driven appointment setting is dialing a list where the roof behind each address has already been read. You know, before the call, that this home likely has a 20-year-old roof, or that this street took a serious hail core eight months ago, or that you measured this exact roof three years ago and pegged it at 17. The setter calls with a true, specific reason the homeowner cares about. The same setter, on the same phone, booking from a list like that is a different person — the calls are conversations instead of cold opens, the book rate climbs, and the no-show rate falls because the appointment was anchored to something real.
The difference isn't effort or talent. It's information. A great setter on a cold list loses to an average setter on a data-driven one, every time, because the list is doing most of the work.
Why the cold-call numbers are so unforgiving
Walk the funnel of a cold residential dial day and the leakage is obvious:
| Stage | Cold list | What's leaking |
|---|---|---|
| Numbers dialed | 300 | — |
| Connects (someone answers) | ~90 (30%) | Bad numbers, no-answers, voicemail |
| Homeowner with a roof worth replacing | ~22 (25% of connects) | The roof simply isn't due |
| Willing to hear you out | ~9 | No reason to engage a stranger |
| Appointments booked | ~4 | Soft yes, no anchor |
| Inspections actually held | ~2 (50% no-show) | Booked on nothing, forgotten |
Two held inspections off 300 dials and a full day of a setter's morale. The killer line is the third row: even when someone answers, three out of four don't have a roof that's a replacement candidate, so the setter is spending the bulk of a connected, willing conversation on a house that can't buy. Everything downstream is throttled by that one fact. You cannot script your way past a list where most of the roofs are fine.
Now change only the list — feed the same setter addresses where the roof has been read and the dead ones removed — and the third row flips from 25% to 60-70%. Every number after it lifts with it. The setter isn't working harder; they're finally talking to people who have a reason to say yes.
What data turns a cold list into a warm one
The job is to know something true about each roof before you dial. Three kinds of data do that, and a real appointment-setting list uses all three.
Roof age — the reason that opens the most doors
Remaining roof life is a clock ticking on every house whether you call or not, which makes age the backbone signal for appointment setting. A homeowner with a 20-year-old roof has a reason to take a look even with no storm and no leak — the roof is near the end of its service life and they may not know it. That's a true thing a setter can lead with: "your roof is in the range where it's worth getting eyes on it before it starts costing you."
The trap is the easy proxy. The county assessor's "year built" is the age of the house, not the roof, and re-roofs are frequently invisible in public records — some pull a permit, plenty don't, and county data lags reality by years. A 2002 house can sit under a 2018 roof. Call that homeowner and tell them their roof is twenty years old and they'll laugh you off the phone, because they replaced it six years ago, and now you sound like you didn't do your homework. Build year is a fine baseline for picking a neighborhood to call (it tells you the dominant age of original roofs in a tract) but unreliable for any single home.
So roof age for appointment setting is a range, not a date — "roughly 18 to 22 years," read from aerial imagery, historical imagery, and visible weathering, not "installed in 2005." Anyone selling you an exact install year off a satellite photo is overstating what the data can do. The range is enough. It tells the setter whether this is a strong call, a maybe, or a number to never dial, and it gives them a true thing to say. Critically, it lets you screen out the re-roofs before they ever hit the call sheet, which is the single biggest source of wasted, credibility-killing cold calls.
Storm exposure per roof — the reason with urgency
Age tells you a roof is old. Storm exposure tells you a roof was worn out faster than its age suggests, and it adds the one thing a pure age call lacks: timing. A homeowner whose street took golf-ball hail last spring has a fresh, concrete reason to want an inspection now. Two roofs the same age are not the same call if one sat through two significant hail events and the other had a quiet decade.
Hail is the dominant accelerant across much of the country — it bruises the shingle mat, knocks granules loose, and fractures the asphalt, often invisible from the ground for months. Wind lifts and creases shingles and breaks seal strips. NOAA's Storm Events Database and the Storm Prediction Center record where significant hail and wind occurred, and the Insurance Institute for Business & Home Safety has done extensive research on how hail size and shingle type drive damage.
Here's where appointment setting goes wrong: storm passage is not storm damage. A setter hears "hail crossed the county" and starts calling the whole county. But hail cores are narrow and erratic — one subdivision takes real impact and roofs that are genuinely due, the next a mile away got pea hail and nothing. Call the second subdivision and you're cold-calling again, just with a storm-themed opener that doesn't match what's on their roof. The signal you actually want is per roof: did this specific house, at this spot, take meaningful hail or wind, and how does that stack with its age. That's the call that books and holds.
Your own customer data — the warmest list you'll ever dial
The warmest appointment-setting list in the building is the one you already own and aren't calling. Old estimates that didn't close, repair customers from years back, homeowners whose roofs you measured who "weren't ready yet" — every record has an address, a phone number, and a prior roof read. Roof age keeps ticking on every one of them. The 16-year-old roof you bid four years ago is a 20-year-old roof now, and it sat through every storm since. The homeowner who got three bids in 2021 and picked the cheapest patch is exactly the person whose roof is now genuinely due. You don't have to find them — you have their number, and you've laid eyes on their roof. There's a full section on mining this below, because it consistently produces the highest book-and-hold rate of any list a roofer can call.
A signal-by-signal reference for the phone
| Signal source | What it gives the setter | Where it misleads |
|---|---|---|
| County assessor / GIS | Build era to pick which tracts to call | "Year built" is the house, not the roof; re-roofs invisible |
| Aerial / historical imagery | Roof-age range, re-roof screen, visible wear | A range, never an exact date |
| NOAA Storm Events / SPC | Where significant hail and wind hit | Coarse; "in the county" isn't "on this roof" |
| IBHS hail research | Why a storm-hit roof of a given type is likely worn | General research, not a per-address read |
| Your own CRM | A warm name, a prior roof read, sunk acquisition cost | Notes age at last contact; advance the clock and re-verify |
The pattern: public records pick the neighborhood, imagery reads the roof and kills the re-roofs, storm data adds per-roof urgency and timing, and your CRM hands you warm names. None alone makes a great call list. The work — and the edge — is combining them so every number on the sheet has a true reason behind it.
Building the call list before you build the script
Most roofers obsess over the script and ignore the list, which is backwards. A perfect script on a cold list still loses. Build the list first, rank it, and the script gets easy because there's always something true to open with.
Be precise about what you're selecting for, because a vague target produces a vague list and a vague call. You're building a list of addresses where the roof is likely a genuine replacement candidate and there's a true, specific reason the homeowner would want an inspection now. Two things have to be true: the roof has to be physically due (age and storm exposure), and there has to be a hook the setter can say out loud (age range, recent storm, a prior relationship). A list that has the first without the second books soft appointments that no-show.
The build-and-rank workflow
- Pick the calling area by build era. Choose tracts where the housing stock puts roofs in the replacement window. Cheapest, broadest filter — start where roofs are old.
- Read roof age per address. Use aerial and historical imagery to move from "this tract is ~20 years old" to a per-roof range, and flag the homes that already re-roofed so you can remove them from the sheet entirely. This is the step that protects your setter's credibility on every call.
- Layer storm exposure per roof. Cross the addresses against hail and wind history, resolved as tightly to specific streets as you can. Aging-and-storm-hit roofs get the urgent opener; aging-only roofs get the service-life opener.
- Pull and verify phone numbers. A roof read is worthless without a connectable number. Append phones, scrub against the federal Do Not Call registry and your state's list, and honor your own internal do-not-call records. (More on compliance below — this step is not optional.)
- Score and rank. Give each address a simple 0-100 score on age, storm exposure, and relationship, and sort descending. The setter dials top-down.
- Assign the opener. Tag each record with which true hook applies — storm, service-life, or warm callback — so the setter isn't improvising the reason on every call.
A simple call-priority score
You don't need a data team. Score each address on three pillars and combine:
- Roof-age odds (40%): more points the further through its service life the roof likely is. Under 8 years = 0 and comes off the sheet; 18-22 years = high; 23+ = highest.
- Storm-exposure odds (40%): more points for real per-roof impact. No significant events = 0; one significant event = strong; multiple events or a severe core hit = top.
- Relationship and timing (20%): a prior estimate, past customer, or "not ready yet" note adds points; a recent storm adds urgency.
A 20-year roof (high age) on a street that took one significant hail event (strong exposure) with no prior relationship scores in the 60s — a solid call. A 24-year roof that took a severe core hit and that you bid two years ago scores in the 90s — dial it first. A 6-year roof with no storm and no relationship scores 0 and never gets called. The exact numbers matter less than the discipline: every address gets the same read, the strong calls float to the top of the dial list, and the roofs that can't buy never waste a ring.
Tier the list so the dial order is obvious
| Tier | What it is | Score | Opener | Priority |
|---|---|---|---|---|
| A | Storm-hit + aging | 80-100 | Recent storm + service life | Dial first, best setter |
| B | Aging, no recent storm | 60-79 | Service life / preventive look | Dial next |
| C | Warm CRM record aged in | any | "We measured your roof in [year]…" | Highest book-and-hold; sprinkle through the day |
| Skip | New or re-roofed | under ~40 | None | Never dialed |
The point isn't the exact thresholds — it's that the data decides the dial order, so the setter's freshest hours go to the highest-odds calls, and the dead numbers are gone before the phone is touched.
The call-team workflow
A ranked list still needs a disciplined motion around it, or a good list gets worked badly. Here's the workflow that turns a call sheet into booked, held inspections.
Roles and the daily rhythm
- The sales manager or list owner builds and ranks the sheet — picks the area, reads the roofs, scores, scrubs the numbers, tags the openers. This is desk work done before the calling block, not something a setter improvises.
- The setter dials the ranked list top-down in a focused block. A-tier and warm CRM callbacks in the freshest hours; B-tier later.
- The estimator owns the held inspection. The setter's job ends at a confirmed, anchored appointment that shows up on the estimator's calendar with the roof read attached, so the estimator walks in already knowing the age range and storm history.
A repeatable setter block
- Warm up on C-tier callbacks. Start the block on the warmest names — people who already know you. Early wins set the tone and the rhythm.
- Work A-tier in route-friendly clusters. Book A-tier appointments in geographic clusters so the estimator isn't crisscrossing town. A great setter thinks about the estimator's drive time, not only the booking.
- Lead every call with the true reason, not a pitch. The opener is the roof fact, not "we're in your area doing roofs." (Script frame below.)
- Book to a specific, confirmed slot and anchor it. "Tuesday at 4, I've got you down — the inspector will text when he's fifteen out." A time and a confirmation, not "sometime next week."
- Triple-confirm to kill no-shows. Confirm at booking, the day before by text, and the morning of. Every confirmation step measurably cuts no-shows, and the appointment was anchored to a real roof reason, so it sticks better to begin with.
- Log the outcome against the score. Booked, not-now, bad number, do-not-call — tagged back to the call so you can see, over weeks, whether your high-score calls really do book better.
Why the data also fixes setter retention
Setter churn is a hidden cost center most owners never price. A setter on a cold list lives in rejection, books almost nothing, and quits — and you pay to recruit and train the next one, who also quits. A setter on a data-driven list has real conversations, books inspections, hits their number, and stays. Morale isn't a soft factor here; it's payroll you stop spending twice. The same list that lifts the book rate also lengthens how long your setters last, and a setter who's been on the phone a year is worth several who lasted a month.
A script frame that opens with a reason, not a pitch
The reason data-driven calling needs less scripting is that the opener writes itself — you have a true thing to say. But there's still a structure that books and holds. The frame, not a word-for-word robot script, because the best setters sound like a person, not a recording.
The opener: lead with the roof fact
The first ten seconds decide the call. Don't open with your company and a vague pitch — open with the specific true thing about their roof that earns the next sentence.
- Service-life opener (B-tier): "Hi [name], this is [setter] with [company] here in town — I'm calling because your roof looks like it's getting up toward the end of its service life, somewhere in the twenty-year range, and I wanted to offer to get someone up there to take a look before it starts giving you trouble. No charge for the look."
- Storm opener (A-tier): "Hi [name], this is [setter] with [company] — your area took a real hail hit back in [month], and roofs of your age can take damage from that you'd never see from the ground. I'd like to send someone out to get up there and document what's actually going on. No charge."
- Warm callback (C-tier): "Hi [name], this is [setter] with [company] — we measured your roof back in [year] when you were getting bids. It'd be right around the age now where it's worth another look, and your area's taken some weather since. Want me to get someone back out?"
Each opens with a fact the homeowner can't dismiss as a generic pitch, because it's about their roof. That's the entire advantage of a data list at the door of the call.
The middle: offer the inspection, not a verdict
The setter's job is to book an inspection, not to diagnose a roof over the phone or promise anything. Keep it to: here's why a look makes sense, the look is free, it takes about [X] minutes, and the inspector will show you photos of whatever they find, good or bad. "Good or bad" matters — it signals you're not a high-pressure outfit that's already decided they need a roof, which lowers the homeowner's guard and raises the book rate.
The close: a specific slot and a hard confirm
Never close to "sometime" — close to a day and a time, repeat it back, and set the confirmation expectation. "Great, Thursday at 2. I've got your cell — we'll text you a reminder Wednesday and the inspector will text when he's on his way. Sound good?" The specificity is what survives until Thursday.
Objection handling, briefly
- "My roof's fine." "That's exactly what most folks I call think, and a lot of the time they're right — but hail damage and granule loss don't show from the ground, so the free look just tells you for sure. Worst case you find out you've got years left, which is good to know."
- "I already had someone look." "Got it — was that recent, and did they get up on the roof and show you photos? A lot of 'looks' are just a glance from the driveway. If you've got a documented look you're set; if not, ours is free."
- "How'd you get my number / my roof info?" Be straight: "We look at public aerial imagery and storm records to figure out which roofs in an area are getting up there in age — yours fit, so I called. Happy to take you off our list if you'd rather." Honesty about the data builds more trust than dodging.
- "Is this about insurance / a free roof?" This is the one to handle carefully — see the next section.
What you never do is promise a roof, a payout, an approval, or anything about a deductible on the phone. The setter books an inspection. That's the whole job.
When the call touches storms and insurance — staying on the right side of the line
A lot of appointment-setting energy chases storm-worn roofs, and that's legitimate — a roof hail genuinely wore out is a real job. But there's a bright line a setter's calls must not cross, and in many states it's a legal line, not merely a matter of taste.
A roofer may inspect a roof, document damage thoroughly with dated photos, and prepare an accurate repair estimate — and state facts about their own scope to the carrier. What a roofer (or their setter) may not do, for a fee, is negotiate or "handle" the homeowner's claim, interpret their policy or coverage, promise a specific payout or approval, say anything about waiving or absorbing the deductible, advertise a "free roof," or represent the homeowner against their insurer. That last cluster is unlicensed public adjusting, and roofers have been penalized for it. The phone is where setters get loose with this language, because it feels persuasive — which is exactly why you have to lock it down in the script.
The do-not-say list for setters
Train every setter that these phrases never come out of their mouth on a call:
- "We'll get your roof covered / approved / paid for."
- "We'll waive / cover / eat your deductible."
- "You'll get a free roof."
- "We'll handle the insurance company for you."
- "This is definitely covered / this is storm damage." (No verdict before an inspection, and coverage is never the roofer's call.)
What the setter says instead
Keep the storm call on the document-and-inspection side:
- Book the inspection, not a claim. "Your area took hail, and roofs your age can take damage you can't see from the ground. I want to get someone up there to inspect and document what's actually there — photos and all — so you know where you stand."
- Hand the homeowner the documentation; let them decide. "If our inspector finds storm damage, he documents it thoroughly and writes up an accurate repair estimate. That's yours to keep. What you do with it — whether you file anything — is entirely your call, and if you file, your insurer decides coverage. We're the contractor who documents it and does the work."
- Be honest about what you don't do. If asked point-blank about insurance: "We don't handle or file claims, and we can't tell you what your policy covers — that's between you and your insurer. What we do is get up there, document the condition, and give you an honest estimate. The rest is your decision."
Data makes the targeting precise — which roofs likely qualify on age and real storm exposure, and which homeowners have a true reason to want a look. It does not, and the call must not, turn into claims handling. Keep the line bright and the whole motion stays honest, defensible, and frankly more persuasive, because homeowners trust the roofer who isn't promising them the moon.
Mining your CRM for the appointments already sitting there
Before you spend a dollar building a new call list, work the warmest one you already own. Your CRM is full of appointments waiting to be re-booked, and the acquisition cost is already sunk.
The logic is simple. Roof age keeps ticking on every record whether you call or not. The 14-year-old roof you bid in 2019 is around 21 now and has sat through every storm since. The homeowner who got three bids in 2021 and patched instead of replaced is now the person whose roof is genuinely due. You already have their number. You already read their roof once. That's the warmest possible reason to dial.
A CRM callback workflow
- Pull every record with an address, a phone, and a rough roof read. Old estimates, declined bids, repair tickets, maintenance calls, "not ready yet" notes.
- Advance the clock. Add the years that have passed. A roof you pegged at 15 in 2018 is around 22 now. That re-sort alone surfaces a stack of records that have crossed into the window.
- Cross against storm history since last contact. Which of these addresses sat under hail or high wind since you last talked? Aging-plus-a-storm-since is a warm, specific reason to call back.
- Score and order the callbacks. Aging-and-storm to the top, aging-only next, with the warmest relationships sprinkled through to keep the setter's rhythm up.
- Call with a real reason. The C-tier opener above writes itself: you measured their roof, the calendar has moved, their area's taken weather. Specific and honest beats a generic "just checking in" every time.
The economics are the best you'll ever see on a phone: no list to buy, no cold dialing, no ad spend — just a call to someone who already knows your name and already has a roof you've laid eyes on. A season of held inspections can be sitting in a CRM nobody's touched since the estimate didn't close. The roofs aged into the window on their own. The data just tells the setter which records to dial first.
Don't let the book go stale
Enrich every callable record with a current roof-age estimate and storm history since last contact, then re-score it like any other call. Done once, your CRM stops being a static archive and becomes a self-refreshing appointment list — records age into the window, storms hit, and the highest-odds callbacks keep floating to the top. The companies that win on the phone treat their own book as their primary list, not an afterthought they raid when they're slow.
Where RoofPredict fits
Everything above you can do by hand. Some good roofers do — they drive neighborhoods, eyeball roofs, pull county build years, cross-reference NOAA hail reports on a second monitor, and hand-build a call sheet. It works. It's also slow, it caps out at what one person can eyeball, and the hardest part — reading roof age per address, screening out the re-roofs, and resolving storm exposure per roof across hundreds of homes — is exactly the work that eats a sales manager's evenings and is easiest to get wrong by hand.
That's the gap RoofPredict is built for. Point it at an area and it reads each roof from aerial imagery and gives you a roof-age range per address — not a guess at an exact install date, a defensible range like "roughly 18 to 22 years" — and it models the storms each roof has actually taken. Not a regional hail map that says the storm passed through, but a per-roof read: did this house, at this spot, take meaningful hail and wind, and how does that stack with its age. Then it ranks the addresses so the roofs that are aging out and the roofs a storm actually wore out sit at the top, and the new ones and re-roofs are already filtered off. It can also append that roof-age and storm signal to a list you already have — your CRM, your old estimates, a calling list — so the records you own get read the same way.
For appointment setting specifically, that's the difference between a cold sheet and a warm one. The setter opens each ranked record already knowing the true reason to call — the age range, the dated storm history — so the opener is a fact about their roof instead of a generic pitch, and the re-roofs that would have made the setter look foolish are gone before the first ring. The estimator gets appointments that show up with the roof read attached, so they walk in informed instead of cold.
The honest limits, because a tight trade compares notes:
- It gives a range, never an exact roof birthday. Imagery can't see an install receipt. The range is enough to prioritize a call list; it isn't a certificate.
- The ranking is odds, not proof. It tells the setter which numbers are worth dialing first. The inspection still confirms what's actually up there.
- It's storm history and modeling, not a forecast to wave at a homeowner as evidence. What fell, fell; what hasn't, hasn't.
- It documents conditions and storm exposure so the call and the inspection start informed — it does not file, handle, or decide an insurance claim. The roofer documents and writes the estimate; the homeowner files; the insurer decides coverage.
Used that way — a ranked, warm starting point, not a promise — it does the slow part for you so your setters spend the block dialing the right homeowners with a real reason instead of grinding a cold list and praying.
The math: what data does to cost per booked inspection
The case for this is money, not elegance. A setter's hours don't change — what changes is the quality of every number on the sheet, and that ripples straight through to cost per booked, held inspection.
A setter-day comparison
| Cold list | Data-driven list | |
|---|---|---|
| Numbers dialed | 300 | 300 |
| Connects | ~90 | ~90 |
| Connects with a roof worth replacing | ~22 (25%) | ~58 (65%) |
| Appointments booked | ~4 | ~12 |
| No-show rate | ~50% | ~25% |
| Inspections actually held | ~2 | ~9 |
The dials and the connects are the same. The roof-worth-replacing row is the whole game — it nearly triples because the dead and re-roofed addresses were screened off before the call. Booked appointments climb with it, and the no-show rate roughly halves because every appointment was anchored to a true roof reason instead of a soft yes. Two held inspections becomes nine on the same day of a setter's time. Run that across a week and a small call team and the data paid for itself many times over before a single inspection becomes a job.
Where the savings come from
- Killed dead numbers. A re-roof or an 8-year roof can't buy. Calling it is pure leakage and, worse, it makes the setter sound uninformed. Removing it before the dial is the biggest single win.
- A true reason that books and holds. Appointments anchored to a real roof fact no-show far less than appointments talked into existence. The held-inspection rate, not the booked rate, is what fills an estimator's week.
- Setter retention. A setter who books all day stays; a setter who eats rejection all day quits. The data list cuts the recruiting-and-training spend you'd otherwise pay on repeat.
Why this beats buying leads
Run it against the alternative most roofers are weighing. A lead service charges per lead, sells the same homeowner to several competitors, and hands you a contact who's already fielding five calls — you're racing four other trucks to an annoyed stranger. A data-driven call list on your own target area is a fixed cost — the data, the tooling, the labor — spread across every number you dial, and the homeowners are exclusively yours. The more you work the list, the lower your effective cost per booked inspection drops, which is the opposite of a per-lead bill that scales straight up. You still call, inspect, and earn the job. You're just not paying a toll on every name or sharing it with the competition.
Compliance: calling the list without stepping on a rake
Data-driven calling is more effective and it makes compliance easier — but only if you do the unglamorous parts. Outbound calling to consumers is regulated, and roofers get burned by ignoring it.
- Scrub against the National Do Not Call Registry and your state's registry before you dial, and honor them. The FTC and FCC enforce this, and the penalties per violation are real money.
- Keep an internal do-not-call list and respect it permanently. If a homeowner says take me off your list, that record is dead forever, across every list you build.
- Mind state-specific rules on calling hours, caller ID, and what you must disclose. Several states layer their own requirements on top of the federal ones.
- Be careful with autodialers and pre-recorded messages. The rules around automatic dialing and recorded calls to cell phones are stricter than for live, manually-dialed calls; live setters dialing a curated, scrubbed list is the cleaner motion and, conveniently, the one this whole approach is built around.
- Be honest about your data source if asked. "We look at public aerial imagery and storm records to find roofs that are getting up in age" is true, defensible, and disarming. Dodging the question is what makes a homeowner suspicious.
The upside of the data approach here is real: because you're dialing a small, curated, scrubbed list of genuinely-likely homeowners rather than blasting an entire zip code, you make fewer calls, to better-qualified people, with a true reason — which is both more compliant and less likely to generate complaints in the first place. Volume cold-calling is where compliance trouble breeds. Precision calling avoids most of it by design.
Measuring whether the appointment-setting system works
A calling motion you don't measure is just a louder hunch. The point of going data-driven is that you can close the loop and prove the list books better. A handful of metrics tell you everything.
The metrics that matter
| Metric | What it tells you | What "good" looks like |
|---|---|---|
| Connects per dial | Whether your numbers are clean | Climbs with better number sourcing and scrubbing |
| Book rate per connect | Whether the reason is landing | Far higher on a data list than a cold one |
| No-show rate | Whether appointments were anchored to something real | Falls sharply versus cold-booked appointments |
| Held inspections per setter-day | The number that fills the estimator's week | The real headline metric, not bookings |
| Cost per held inspection | The efficiency number that matters | Falls as dead numbers get culled |
| Book rate by score tier | Whether the score predicts | A-tier should book clearly better than B |
| CRM-callback conversion | Whether the warm book is being mined | Should be your highest book-and-hold rate |
Measure held inspections, not bookings
The trap is celebrating bookings. Bookings are an activity metric — a soft yes that no-shows is worth nothing to the estimator. The metric that pays the company is held inspections per setter-day and, downstream, jobs per setter-day. A setter who books 12 and holds 9 beats a setter who books 18 and holds 5, even though the second "booked more." Anchor your incentives to the held inspection, not the booking, or your setters will learn to talk people into appointments that evaporate.
Tag every outcome back to the score
The single most important habit: tag every call outcome — booked, held, no-show, not-now, bad number, do-not-call — back to the score that produced it. If your A-tier calls book and hold at a clearly higher rate than your B-tier, the model works and you should trust it harder and feed your best setter the top of the list. If they don't, your weights are wrong for your market and you adjust. That feedback loop is what turns a static call sheet into a system that gets sharper every month instead of staying a guess.
Putting it together
Cold calling doesn't fail because the phone is dead or your setter is weak. It fails because the list is blind — you're dialing roofs you know nothing about and hoping. Data-driven appointment setting fixes the one thing that's actually broken: it puts a true reason behind every number. Read the roof before you dial — age as a range, storm exposure per roof, the warm records already in your own book — screen out the re-roofs and the new ones, rank what's left, and put the highest-odds homeowners in front of your setter first with the opener already written.
The payoff is the same every time it's done right: more held inspections per day, a no-show rate that drops because every appointment was anchored to something real, setters who stay because they're booking instead of absorbing rejection, and a calendar full of inspections you generated yourself instead of leads you rented or a storm you waited on. The best setter in your shop already sounds great when they happen to reach the right homeowner. The system is what makes the right homeowner the only one they reach. Build it once and it fills an estimator's week in slow seasons and busy ones — which is the difference between hoping the phone rings and making it ring with a reason.
FAQ
What does "roofing appointment setting from data, not cold calling" actually mean?
It means dialing a list where the roof behind each address has already been read, instead of calling random numbers blind. Before the call, you know this home likely has a 20-year-old roof, or this street took a serious hail core last spring, or you measured this exact roof three years ago. The setter opens with a true, specific reason about the homeowner's own roof rather than a generic pitch. Same phone, same setter — the difference is that the list did the qualifying before the first ring, so the calls are conversations with people who have a reason to say yes, and the re-roofs and new roofs that waste cold calls are screened off the sheet entirely.
Why does cold calling fail so badly for roofing?
The numbers throttle it. On a random residential list, you connect with maybe a third of the numbers, and only about a quarter of the people who answer have a roof that's a genuine replacement candidate — so most of even your connected, willing conversations are spent on a house that can't buy. No script fixes a list where most of the roofs are fine. The appointments you do book were talked into existence with no real reason, so they no-show at high rates. The setter lives in rejection and quits. Change the list to homeowners whose roofs are actually due and every number in the funnel lifts, because you're finally talking to people who have a reason to engage.
What data turns a cold call list into a warm one?
Three kinds. Roof age as a range, read from aerial and historical imagery and visible weathering, tells you which homes have a roof near the end of its service life and lets you screen out the re-roofs. Storm exposure per roof — did this specific house take meaningful hail or wind, rather than whether a storm merely crossed the county — adds urgency and timing. And your own CRM hands you warm names: old estimates, declined bids, and repair customers whose roofs have aged into the window since you last talked. Public records pick the neighborhood, imagery reads the roof, storm data adds the urgent reason, and your book hands you the warmest calls of all.
Why isn't the county's "year built" good enough for a call list?
Because "year built" is the age of the house, not the roof, and most homes get re-roofed at least once. Re-roofs are frequently invisible in public records — some pull a permit, plenty don't, and county data lags by years. A 2002 house can sit under a 2018 roof. Call that homeowner and tell them their roof is twenty years old and they'll laugh you off the phone, because they replaced it six years ago, and now you sound like you didn't do your homework. Build year is a fine baseline for picking which neighborhoods to call, but you have to read roof age per address from imagery and screen out the re-roofs before they ever reach the call sheet.
What should a setter say in the opening seconds of the call?
Lead with the specific true fact about the homeowner's own roof, not your company and a vague pitch. For an aging roof: "I'm calling because your roof looks like it's getting up toward the end of its service life, in the twenty-year range, and I'd like to get someone up there to take a look before it gives you trouble — no charge." For a storm-hit roof: "Your area took a real hail hit back in [month], and roofs your age can take damage you'd never see from the ground — I'd like to send someone to document what's actually there." Each opens with something the homeowner can't dismiss as generic, because it's about their roof. That's the entire advantage of a data list.
How do I keep storm and insurance calls on the right side of the law?
Keep the setter strictly on the document-and-inspection side. A roofer may inspect, document damage with dated photos, write an accurate repair estimate, and state facts about their own scope to the carrier. A roofer or their setter may not, for a fee, negotiate or handle the claim, interpret the policy, promise approval or a payout, say anything about waiving or covering the deductible, advertise a "free roof," or represent the homeowner against their insurer — that's unlicensed public adjusting and roofers have been penalized for it. Train setters that those phrases never come out of their mouth. They book an inspection; the inspector documents and hands the homeowner an honest estimate; the homeowner files and the insurer decides coverage.
Is my own CRM really better than a fresh call list?
Usually it's the best list you can dial, because the acquisition cost is already sunk and you've already read the roof. Roof age keeps ticking on every record whether you call or not, so old estimates, declined bids, and repair customers from years ago have roofs that have aged into the replacement window on their own. Advance the clock on each record, cross it against storm history since your last contact, score the callbacks, and call with a specific reason — you measured their roof in a given year, the calendar has moved, their area's taken weather since. No list to buy, no cold dialing, just a call to someone who knows your name and whose roof you've seen. It consistently produces the highest book-and-hold rate.
What compliance rules apply to outbound roofing calls?
Scrub your list against the National Do Not Call Registry and your state's registry before you dial, and honor them — the FTC and FCC enforce this and the per-violation penalties are real. Keep an internal do-not-call list and respect it permanently. Mind state-specific rules on calling hours, caller ID, and required disclosures. Be careful with autodialers and pre-recorded messages to cell phones, which are governed by stricter rules than live, manually-dialed calls. The data approach actually helps here: dialing a small, curated, scrubbed list of genuinely-likely homeowners with a true reason generates far fewer calls and complaints than blasting a whole zip code, so precision calling is both more effective and more compliant by design.
How do I measure whether the appointment-setting system is working?
Measure held inspections per setter-day, not bookings — a booking that no-shows is worth nothing to the estimator. Track connects per dial, book rate per connect, no-show rate, cost per held inspection, book rate by score tier, and CRM-callback conversion. Tag every outcome back to the score that produced it: if your A-tier calls book and hold at a clearly higher rate than your B-tier, the model works and you should trust it harder; if not, your weights are wrong for your market and you adjust. Anchor setter incentives to the held inspection, or your team will learn to talk people into appointments that evaporate.
How is this different from buying roofing leads?
Opposite models. A lead service charges per lead, sells the same homeowner to several competitors, and hands you a contact who's already fielding five calls, so you race four other trucks to an annoyed stranger. A data-driven call list on your own target area is a fixed cost spread across every number you dial, and the homeowners are exclusively yours — nobody else got sold the same address. The more you work the list, the lower your effective cost per booked inspection drops, the opposite of a per-lead bill that scales straight up. You still call, inspect, and earn the job; you're just not paying a toll on every name or sharing it with the competition.
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
- Storm Events Database — ncdc.noaa.gov
- NOAA Storm Prediction Center — spc.noaa.gov
- National Weather Service — Thunderstorms, Lightning & Hail — weather.gov
- Insurance Institute for Business & Home Safety — Hail Research — ibhs.org
- IBHS — Roofing and Severe Weather — ibhs.org
- National Roofing Contractors Association — nrca.net
- FTC — National Do Not Call Registry (Business Guidance) — ftc.gov
- FCC — Stop Unwanted Robocalls and Texts — fcc.gov
- FTC — Telemarketing Sales Rule — ftc.gov
- U.S. Census Bureau — American Housing Survey — census.gov
- Texas Department of Insurance — Public Insurance Adjusters — tdi.texas.gov
- OSHA — Fall Protection in Residential Construction — osha.gov
- U.S. Bureau of Labor Statistics — Roofers — bls.gov
- RoofPredict — roofpredict.com
Related Articles
How to Present a Roof Inspection Report That Closes the Job
The inspection didn't lose the job. The presentation did. Here's how top roofers turn a roof report into a signed contract at the kitchen table.
How to Build Homeowner Trust Fast on a Roofing Sales Call
Trust is the whole sale. Here is how top roofing reps earn it in the first five minutes at the door and carry it through the close.
How to Prequalify a Roof Before Driving Out: A Field-Tested System for Roofing Crews
Every truck roll you make on a roof that wasn't ready is margin you set on fire. Here's the desk work that tells you which addresses to drive to and which to skip.