Skip to main content

Roofing CRM Data Enrichment for Old Roofs: Turn a Dead List Into a Ranked Route

Michael Torres, Storm Damage Specialist··29 min readRoofing Sales & Growth
On this page

Most roofing companies are sitting on a list they paid for and barely use. It lives in a CRM tab, a Mailchimp audience, a county export, or a stack of door-knock sheets from 2022. Thousands of addresses, a few phone numbers, maybe an owner name. What it does not tell you is the one thing that decides whether a knock or a postcard is worth the money: is that roof actually due?

Data enrichment is the unglamorous fix. You take the addresses you already control and append the signals that predict a sale — how old the roof probably is, what storms have rolled over it, who owns it now, and whether you already touched that door. Done right, the same list that converted at a quarter percent starts converting at two or three percent, because your reps stop spraying the whole subdivision and start hitting the roofs that wore out.

This is a working playbook for that. It is written for the owner or sales manager who has a CRM, has a list, and is tired of paying for leads that someone else already called four times. We will cover what "enrichment" actually means for a roofer, where each data layer comes from, how to score and route the result, how to keep the file clean, and the compliance lines you do not cross when storm and insurance enter the picture. Concrete numbers, real workflows, and the mistakes that quietly burn budget.

What "data enrichment" actually means for a roofer

Strip away the software-vendor language and enrichment is one idea: you have a thin record, and you bolt on the facts that make it actionable. A thin record is a row with an address and maybe a name. A rich record is that same row plus the attributes that tell a rep what to do with it.

For a roofing list, the attributes that matter break into five layers, roughly in order of how much they move conversion:

  1. Roof age signal — an estimated age range for the existing roof, usually inferred from aerial and satellite imagery over time plus property records. This is the single strongest predictor of replacement demand, because asphalt shingle roofs in the U.S. cluster around a 15-to-30 year service life depending on product and climate.
  2. Storm exposure — the hail and wind history over that specific roof, not the county. A hail core can be three miles wide; the difference between a direct hit and a miss is the difference between a damaged roof and an intact one two streets over.
  3. Property and ownership facts — owner-occupied vs. rental, length of ownership, year built, square footage, roof material if available, and HOA presence. These shape both the pitch and the deliverability of mail.
  4. Contact data — a phone number and email tied to the current owner, appended via skip tracing so your reps can actually reach the person.
  5. Your own history — the most undervalued layer. Whether you have door-knocked, mailed, inspected, bid, or sold that address before. Suppressing roofs you already lost or already roofed is free money.

The goal of stacking these is not a prettier database. It is a ranked list: every address gets a score, the score sorts the list, and the top of the list becomes a route. A canvasser working a sorted route knocks the same number of doors and books more inspections, because the doors in front of them are the ones with a reason to say yes.

Why old roofs specifically

There are two paths to a roof sale: the roof aged out, or a storm wore it out. Both end in a replacement, and the strongest targets sit where the two overlap — an older roof that also took storm exposure. An old roof with marginal storm damage is far more likely to fail and far more likely to be near the end of its insurable life than a five-year-old roof that took the same hail.

That is why "old roofs" is the spine of a good enrichment strategy. Age is the steady, always-true signal. Storm is the trigger that creates urgency on top of it. If you only chase storms, you are competing with every out-of-town chaser the week after the event. If you also know which roofs were already aging out, you have a list that produces work in the quiet months too.

Start with a clean foundation: the address is the key

Before you append anything, the file has to be join-able. Every enrichment vendor and data source matches on the address, and if your addresses are messy, the match rate craters and you pay for rows that never link up.

Standardize and validate addresses first

Run your list through address standardization before enrichment, not after. In the U.S. that means CASS-style normalization — the same logic the postal system uses to format and verify deliverable addresses. The USPS publishes the ZIP+4 and standardization rules that most validation tools implement. Standardization does three things:

  • Normalizes format. "123 N. Main St Apt 4" and "123 North Main Street #4" become one canonical string. Without this, the same house shows up as two rows and matches nothing.
  • Flags undeliverable addresses. Vacant, no-stat, and bad addresses get caught before you spend postage on them.
  • Adds geocodes. Latitude and longitude on every row is what lets you overlay storm footprints and build routes later.

A practical target: after standardization, 95%+ of a county-sourced residential list should validate to a deliverable, geocoded point. If you are well below that, the source list is garbage and no amount of enrichment saves it.

Dedupe before you spend a dime on enrichment

Duplicates are the silent budget leak. A list assembled from a county export plus two trade-show scans plus a referral spreadsheet will be 5–20% duplicates. Every duplicate you enrich, you pay for twice, and every duplicate you mail, you annoy a homeowner twice.

Dedupe on the standardized address as the primary key, then on a name+address composite to catch unit-level and spelling variants. Keep a record_id you control so you can trace a row back to its source after the merge. A worked example:

Step Rows Notes
Raw merged list 18,400 County + canvass + referrals
After address standardization 17,950 450 invalid/undeliverable dropped
After dedupe 16,100 ~10% were duplicates
Enrichable universe 16,100 This is what you pay to enrich

That 2,300-row difference between raw and enrichable is real money once you multiply by a per-record enrichment cost. Clean first.

Decide your unit of work

One more foundation choice: are you enriching at the address level or the owner level? For canvassing and mail, the address is the unit — you are targeting a roof, and the roof does not move when the owner sells. For phone and email outreach, the owner is the unit, because contact data is tied to a person. Most roofers want both, which means you carry an address record and link current-owner contact data to it, refreshing the owner link when properties change hands.

Layer 1: roof age — the signal that does the most work

Roof age is the highest-leverage append because it predicts demand on a roof that has not had a storm trigger yet. It is also the layer most people get wrong, because they treat it as a fact when it is an estimate.

Where roof-age signals come from

There is no national registry of roof installation dates. Nobody knows the exact day your prospect's roof went on unless a permit was pulled and digitized. So age signals are inferred from a few sources, each imperfect:

  • Building permits. Many jurisdictions require a permit for a reroof, and some publish them. When a digitized reroof permit exists, it is the gold standard — an actual date. The catch: permit coverage is wildly uneven by county, plenty of reroofs happen without a permit, and historical records are often not online.
  • Year built. The county assessor's year-built field tells you the original roof date. On a home that has never been reroofed, year-built minus today is the roof age. The problem is you rarely know whether it has been reroofed since, so on older homes year-built sets the maximum possible roof age, not the actual one.
  • Aerial and satellite imagery over time. This is the method that scales. Providers compare imagery of the same roof across multiple years and detect when the roof surface changed — a reroof shows up as a visible change in color, texture, and reflectance. By bracketing the change between two image dates, you get an age range.
  • Material and condition cues. High-resolution imagery and machine vision can read granule loss, streaking, patching, and tarps. These do not give an exact age but they confirm wear, which is what you actually care about.

Roof age is a range, not a date — and that is fine

This is the part pros get wrong. They want a database that says "this roof was installed June 2009." That precision usually does not exist, and a vendor that promises it is either reading a rare permit or guessing and rounding. Honest roof-age data gives you a range with a confidence level: "this roof is most likely 18–24 years old, high confidence," or "15–30 years, low confidence, no reroof detected since the home was built in 2001."

A range is enough to act on. You are not certifying anything; you are deciding which doors to knock. Treat the range as a sorting tool:

  • Past expected service life — the range floor is above the product's typical lifespan. Top-priority targets. Even if the homeowner is not thinking about it, the roof is living on borrowed time.
  • Approaching service life — the range overlaps the back half of expected lifespan. Strong targets, especially with any storm exposure.
  • Mid-life — well within service life, no wear cues. Deprioritize unless a significant storm hit them.
  • New — recently reroofed. Suppress. Knocking a two-year-old roof wastes a knock and irritates a homeowner who just paid a competitor.

Anchor the range to realistic service life

To turn a roof-age range into a priority, you need a reference for how long roofs actually last. Use conservative, product-aware numbers rather than a single magic figure. The NRCA and shingle manufacturers describe service life as a function of product class and climate, and field reality is shorter than the marketing warranty. Rough working brackets for asphalt shingle:

Product class Typical real-world service life Notes
3-tab 15–20 years Shorter in high-UV and high-wind climates
Architectural / dimensional 22–30 years The current default on most homes
Premium / designer 25–30+ years Still climate-limited

Climate compresses these. Intense sun, wide daily temperature swings, and repeated wind and hail all shorten real service life below the lab number. A 20-year architectural roof in a high-UV, hail-prone region behaves like an older roof than the same product in a mild climate. Bake your region into the brackets rather than using a national average.

A worked roof-age scoring example

Say you append a range and confidence to 16,100 addresses. You might land on a distribution like:

Age bucket Share of list Action
Likely past service life (high conf.) 11% Priority route, knock + mail
Approaching service life 23% Secondary route, mail-first
Mid-life 41% Hold unless storm trigger
Likely new / recently reroofed 14% Suppress
Unknown / low confidence 11% Cheap test mail, learn from response

That top 11% is roughly 1,770 roofs out of 16,100. A canvasser who works only those doors is having a completely different day than one walking the whole tract.

How to read confidence alongside the range

The confidence level attached to a roof-age range is as important as the range itself, and it changes how you act. Treat the two as a grid. A high-confidence "past service life" range earns an immediate knock. A low-confidence "past service life" range earns a cheap test — a postcard rather than a truck roll — because the underlying signal is shakier. Low confidence usually traces to one of three causes: imagery for that roof is old, the imagery resolution is poor, or the roof's appearance did not change cleanly enough between captures to bracket a reroof. Knowing the cause tells you whether to wait for a fresher capture or to spend a cheap touch and learn from the response. The worst move is to treat a low-confidence guess as a fact and burn a knock on it, then conclude "the data is bad" when the real problem was ignoring the confidence flag.

Validate the model against your own jobs

The fastest way to trust roof-age data is to back-test it against roofs you have already replaced. Pull your last 100 completed jobs, look up what the age signal said for those addresses before you sold them, and check how often the range bracketed the truth. You will quickly learn your local hit rate and where the model is weak — maybe it under-ages tile, or over-ages a neighborhood with an unusual roof color the imagery misreads. That calibration is yours to keep, and it makes every future score more credible to a skeptical sales manager. Vendors can tell you their general accuracy; only your own back-test tells you what to trust in your market.

Layer 2: storm exposure modeled per roof

Storm data is where roofers either find an edge or get burned. The edge comes from precision. The burn comes from using county-level storm alerts that flag fifty thousand homes when three thousand actually took a hit.

County alerts are not targeting

The NOAA Storm Events Database and the NWS Storm Prediction Center publish hail and wind reports, and they are excellent for understanding what happened in a region. But a storm report is a point or a county-wide entry, not a footprint over each roof. Hail is intensely local. A supercell can drop 2-inch hail on one neighborhood and nothing damaging a mile away. If your "storm targeting" is "this county had a hail report," you are knocking thousands of intact roofs.

What you want is exposure per roof: for this specific address, what is the largest hail and strongest wind that has plausibly passed over it, and when. That requires overlaying modeled storm footprints — radar-derived hail size grids and wind swaths — onto the geocoded address point. Several commercial sources model these footprints; the underlying observations trace back to NWS radar and the SPC and Storm Events archives.

Storm is a probability, not proof

Same honesty rule as roof age: a storm model tells you the odds that a roof was exposed to damaging hail or wind, not that damage exists. "Radar suggests 1.5-inch hail likely passed over this address on a date" is a reason to inspect. It is not a finding of damage, and you do not get to tell a homeowner their roof is damaged before anyone climbs it. The model points your truck; the inspection finds the facts.

Combining age and storm — the matrix that ranks the list

The real power shows up when you cross the two layers. An old roof with a recent significant storm is your best target. A new roof with no storm is your worst. Map every address into a simple matrix:

No notable storm Moderate exposure Significant recent exposure
Past service life Knock now (age play) Top priority Top priority
Approaching life Mail nurture Strong knock target Top priority
Mid-life Skip Inspect on demand Inspect target
Likely new Suppress Suppress Low-priority inspect

The top-right cells are where urgency and demand stack. The bottom-left is where chasers waste their season. Your enriched CRM should be able to filter to any cell on demand — "show me past-service-life roofs with significant exposure in the last 18 months within 20 minutes of the yard" should be one saved view.

Storm recency decays the trigger

A storm's value as a targeting trigger fades with time, and your scoring should reflect that. A hail event from last month is a live reason to inspect; the same event from three years ago is mostly background — the roofs that were going to react to it have largely already been worked by someone. A practical decay: full points inside 12 months, half points at 12–24 months, and after that treat the storm as historical context that supports an age play rather than an urgency trigger on its own. The exception is an older storm over a roof that has since aged into the past-service-life bucket; there, the combination is fresh even if the storm is not, because the roof only recently became a strong target.

Don't double-count one storm system

A single weather system can generate several reports across consecutive days as it tracks. If your storm append records each as a separate event, you can accidentally inflate a roof's exposure score by counting one system three times. Collapse events from the same system and date window into a single exposure record per roof, keeping the largest hail and strongest wind observed. The signal you want is "the worst this roof has plausibly seen and when," not a tally of how many radar sweeps clipped it.

Where RoofPredict fits

This is the layer where doing it yourself gets hard, because you are stitching imagery-derived roof-age ranges to modeled per-roof storm footprints to your own address list. That is the specific job RoofPredict does: you bring your list (or a target area), and it returns a roof-age range per address plus storm physics modeled per roof, then ranks the addresses so you get a route instead of a spreadsheet. It enriches the list you already own and feeds the result back into your CRM or mailing workflow — it is not a lead-buying service handing you shared leads, and it does not knock doors for you.

The honest limits matter, so state them the way the data actually behaves. Roof age comes back as a range with a confidence level, not an install date — because that date usually does not exist to be known. Storm exposure is modeled odds that hail or wind passed over a roof, not a guarantee of damage — the inspection still decides. Coverage and confidence vary with imagery recency and storm-data density in your area. Used for what it is — a way to sort thousands of addresses into the few hundred worth a truck roll — it does the sorting far faster and more consistently than a human reading aerials one at a time. Used as a crystal ball, it will disappoint you, the same as any model would.

Layer 3: property and ownership facts

These attributes do less to predict demand than age and storm, but they shape how you reach a prospect and whether the contact even lands.

Owner-occupied vs. rental

This single flag changes everything downstream. An owner-occupant makes the roof decision and lives under the consequences. A rental's decision-maker is a landlord or property manager who may not live in the area, has a different motivation, and often a different appetite for replacement. Many residential roofers suppress or separately bucket rentals entirely. At minimum, tag them so a door-knocker is not pitching a tenant who cannot say yes.

Length of ownership and life-stage cues

Length of ownership correlates loosely with roof-replacement readiness. Someone who has owned a home for 18 years has likely been through one roof already and understands the cost. A recent buyer may be cash-strapped from the purchase, or may have negotiated a roof credit at closing and be primed to spend it. Neither is a hard rule, but both are useful nuance for the script.

Year built, square footage, material, HOA

  • Year built anchors the maximum roof age and helps validate the imagery-derived range.
  • Square footage and footprint let you ballpark roof area for rough capacity planning — useful when you are deciding how many of a given tract you can actually service in a season.
  • Roof material, when available, changes the whole conversation. Tile, metal, and slate have different service lives and different sales motions than asphalt. Do not run an asphalt-replacement script at a standing-seam metal roof.
  • HOA presence flags color and product approval friction. It is not a disqualifier, but it changes timeline expectations.

Much of this comes from public county assessor and parcel records, which most jurisdictions maintain and many publish. The U.S. Census American Community Survey is also a useful free overlay for neighborhood-level age-of-housing-stock and owner-occupancy rates when you are choosing which tracts to target in the first place.

Layer 4: contact data and skip tracing

An address tells a canvasser where to walk. To call, text, or email, you need contact data tied to the current owner — and that is where skip tracing comes in.

What skip tracing is and is not

Skip tracing matches a name and address to current phone numbers and email addresses using consumer and public-record data. It is standard practice in real estate and collections, and roofers borrow it to make their address lists callable. The accuracy reality:

  • Match rates of 60–80% on a clean owner-occupied list are typical; expect lower on rentals and recently transacted properties.
  • Phone accuracy decays over time as people change numbers. A phone appended two years ago is meaningfully staler than one appended last week. Refresh before a calling push.
  • Multiple numbers per person are common; the "best" number is a guess, and you will hit wrong numbers and disconnects.

The compliance you cannot skip

The moment you append phone numbers and start dialing or texting, you are in regulated territory, and the rules have teeth. This is not legal advice — get your own — but the landmarks every roofer should know:

  • The federal Do Not Call Registry. Telemarketing calls to registered numbers are restricted under the FTC's Telemarketing Sales Rule. Scrub appended phone numbers against the registry before a cold-calling campaign, and honor your own internal do-not-call list.
  • TCPA constraints. Federal law governs autodialed and prerecorded calls and texts and carries statutory damages per violation. The conservative posture: do not use an autodialer or send mass automated texts to numbers you skip-traced without consent. Manual dials and one-to-one texts are a different risk profile than blasting.
  • State rules stack on top. Several states have their own calling-time windows, registration requirements, and mini-TCPA statutes that are stricter than federal law. Know the rules in every state you dial into.

Mail is the low-compliance-friction channel — there is no Do Not Mail registry equivalent — which is one reason an enriched mailing list is often the safest first activation of new data. Phone and text are higher-yield but higher-risk; treat them accordingly.

Layer 5: your own history — the cheapest, most ignored enrichment

Every touch your company has ever made is enrichment data you already own and usually fail to use. Bolting your own activity history back onto the list does two things competitors cannot copy: it suppresses waste and it surfaces warm re-engagement.

Suppression that pays for itself

Match your historical records against the enriched list and tag:

  • Already roofed by us — suppress from replacement campaigns; move to a maintenance/referral track instead. Knocking a roof you installed last year is an own-goal.
  • Lost bids — do not re-knock cold, but a roof you bid 3 years ago that is now past service life and took a storm is a strong warm re-engagement, not a cold knock.
  • Active opportunities — never let canvassing or mail double-touch a door a rep is already working. Few things kill trust like a postcard arriving for a deal that is mid-negotiation.
  • Do-not-contact — honor every opt-out, complaint, and "never come back" permanently.

Re-engagement timing

The sharpest move is recycling old no's at the right moment. A homeowner who said "my roof is fine" four years ago may now be sitting on a roof that aged into your priority bucket. When your enrichment refresh moves an old contact from mid-life into past-service-life — or a storm passes over a lost-bid address — that is a trigger to reach back out with new, specific context. That context ("we noticed the storms that came through your area recently") is the legitimate reason for a follow-up that does not feel like spam.

Putting it together: a step-by-step enrichment workflow

Here is the end-to-end sequence, in the order that minimizes wasted spend.

  1. Consolidate every source into one file. County exports, CRM contacts, old canvass sheets, referral lists, trade-show scans. Add a source field to each row so you can measure which sources produce.
  2. Standardize and validate addresses. CASS-style normalization, drop undeliverable, attach geocodes. Target 95%+ valid.
  3. Dedupe. Address as primary key, name+address composite as secondary. Keep your own record_id.
  4. Append roof-age range + confidence. From imagery-derived signals, permits where available, and year-built as a ceiling.
  5. Append storm exposure per roof. Overlay modeled hail/wind footprints on the geocoded points; record largest hail, strongest wind, and date.
  6. Append property/owner facts. Owner-occupied flag, length of ownership, year built, material, HOA.
  7. Skip-trace contacts for the channels you will actually use, then scrub against DNC before any calling.
  8. Overlay your own history. Tag already-roofed, lost-bid, active, and do-not-contact.
  9. Score every record. Combine the layers into a single priority score (model below).
  10. Sort into routes and segments. Top scores become canvass routes; mid scores become mail; everyone gets the right channel.
  11. Activate, then measure by segment. Track response and close rate by score bucket so the model improves.
  12. Refresh on a cadence. Re-enrich quarterly so aging roofs move up and new storms get captured.

A simple, transparent scoring model

You do not need a black box. A weighted additive score you can explain to your sales manager beats a model nobody trusts. One workable starting point, on a 0–100 scale:

Factor Points Logic
Roof past service life (high conf.) +35 Strongest demand signal
Roof approaching service life +20 Building demand
Significant storm exposure < 18 mo +30 Urgency trigger
Moderate storm exposure +15 Worth an inspection
Owner-occupied +10 Decision-maker on site
Valid appended phone +5 Reachable by more channels
Already roofed by us −50 Suppress
Active opportunity / do-not-contact exclude Never campaign

Run the math, sort descending, and draw lines: 70+ is a knock-now route, 45–69 is mail-first with a knock if nearby, below 45 sits in nurture. Revisit the weights every quarter against actual close data — if approaching-service-life roofs are closing as well as past-service-life ones in your market, raise their weight.

Worked economics

Numbers make the case. Take a 16,100-record enriched list and compare spray-and-pray to a scored route, using conservative round figures you can swap for your own:

Approach Doors worked Inspection rate Inspections Close rate Jobs
Unsorted canvass 4,000 1.5% 60 30% 18
Scored top-bucket route 1,770 5% 88 35% 31

Same crew hours, fewer doors, more jobs — because the doors had a reason. The inspection rate climbs because age and storm pre-qualify the door; the close rate climbs modestly because reps walk in with relevant context instead of a cold pitch. The exact numbers will be yours, but the shape of the result — fewer doors, more work — is the whole point of enrichment.

Storm, claims, and the lines you do not cross

When storm data enters your CRM, the conversation drifts toward insurance fast, and this is where good roofers stay sharp and bad ones get into trouble. Enrichment data tells you which roofs likely qualify for a closer look based on age and storm exposure. What you do with that at the door has hard legal boundaries in most states.

What you can do

You can use the data to decide where to inspect. You can climb a roof, document its condition thoroughly with photographs and measurements, and identify storm-related damage. You can write an accurate repair estimate for your own scope of work — aligned to standard estimating practice such as Xactimate line items — and hand that documentation and estimate to the homeowner. You can state facts about what you observed and what your scope would cost. That is being a thorough, professional roofer.

What you cannot do

In most states, the following is unlicensed public adjusting or deceptive advertising, and it is exactly the behavior that gets storm roofers fined or shut down:

  • Do not negotiate, adjust, or "handle" the claim for the homeowner for a fee. That is the licensed public adjuster's role, not the contractor's.
  • Do not interpret the policy or coverage. You do not tell a homeowner what their policy covers or whether a given loss is covered. That is the insurer's determination.
  • Do not promise a specific payout, approval, or that the claim will be "approved." You do not know, and promising it is a misrepresentation.
  • Do not promise to waive, absorb, eat, or make the deductible "disappear." Insurance is the homeowner's responsibility to pay; offering to cover it is illegal in many states and an insurance-fraud red flag everywhere.
  • Do not advertise a "free roof." It is deceptive and a regulatory magnet.
  • Do not represent the homeowner against the insurer. You document your scope; the homeowner files; the insurer decides.

The clean mental model: enrichment and inspection produce documentation. The homeowner files the claim. The insurer decides coverage. Your job ends at handing over an honest, well-documented estimate of what it costs to repair the damage you found. State departments of insurance — the Texas Department of Insurance is a frequently cited example because of how active hail states are — publish guidance on these contractor boundaries, and they enforce them. Teach your reps the do-not-say list explicitly; one rep promising a free roof at the door can create liability for the whole company.

Used inside these lines, storm enrichment is simply a smarter way to decide which roofs deserve an inspection. It never becomes a claims-handling tool, and it never makes promises about coverage.

Data hygiene and keeping the file alive

Enrichment is not a one-time purchase. A list decays the moment you buy it — people move, roofs get replaced, storms keep happening — and a stale enriched list is barely better than a raw one.

Refresh cadence

Different layers decay at different speeds, so refresh them on different clocks:

Layer Refresh cadence Why
Storm exposure After every significant event + quarterly sweep New storms create new urgency targets
Roof age Quarterly to semi-annually Roofs age into priority; competitors reroof yours out
Ownership / occupancy Quarterly Sales change the decision-maker and reset contact data
Contact (phone/email) Before each calling push Numbers decay fastest
Your own history Continuously Every touch should write back to the record

Write-back discipline

The most common failure is one-directional data flow: you enrich the list, work it, and never write the outcomes back. Every knock, every inspection, every bid, every no — those have to land back on the record, or your next refresh re-knocks a door you already lost. Make outcome write-back non-negotiable in the field workflow. A canvasser who cannot mark a door as "reroofed last year — suppress" from their phone is feeding garbage into the next campaign.

Suppression lists are sacred

Maintain a permanent, append-only suppression list: do-not-contact requests, completed jobs, and any address where someone asked you never to return. Suppression entries never expire and never get overwritten by a refresh. This protects your brand and keeps you on the right side of opt-out obligations.

What pros get wrong

A short list of the mistakes that show up again and again, even at sophisticated shops:

  • Treating roof age as a date. It is a range with a confidence level. Building a campaign that assumes precision you do not have leads to suppressing real targets and chasing dead ones.
  • Using county-level storm data as targeting. It massively over-counts exposed roofs. Per-roof footprints are the only storm data worth routing on.
  • Skip-tracing, then dialing without scrubbing DNC. A fast way to collect complaints and regulatory attention. Scrub first, every time.
  • Never overlaying their own history. Re-knocking sold and lost addresses is the single most common waste, and it is free to fix.
  • Enriching once and never refreshing. The list decays; the model goes stale; aging roofs and new storms get missed.
  • No write-back from the field. Outcomes never reach the database, so every campaign repeats the last one's mistakes.
  • Letting storm framing drift into claims promises. The fastest way to turn a data advantage into a legal problem. Document and estimate; do not handle claims or promise payouts.
  • Buying "leads" instead of enriching their own list. Shared leads get called by four companies. Your enriched list of roofs nobody else has ranked is an asset you own.

A 30-day rollout you can actually run

If this feels like a lot, here is a month-long sequence to go from raw list to first scored route without boiling the ocean:

Week 1 — Foundation. Consolidate all sources into one file with source and record_id. Standardize addresses, validate, geocode, dedupe. Establish your permanent suppression list. You now have a clean enrichable universe.

Week 2 — Core signals. Append roof-age range + confidence and per-roof storm exposure. Overlay owner-occupancy and your own history. Do not skip-trace yet — prove the age/storm signal first, because it is the cheapest to act on via mail and walking.

Week 3 — Score and route. Build the weighted score, sort, and cut your first knock-now route (top bucket) and mail segment (mid bucket). Brief the crew on the do-not-say compliance list before anyone walks. Drop the first mail batch.

Week 4 — Activate and instrument. Work the route. Capture every outcome back to the record. Track inspection and close rate by score bucket so you can see the top bucket outperform. Schedule the quarterly refresh and the after-storm sweep.

By the end of the month you have a living, scored CRM instead of a dead address dump — and a measurement loop that makes every future campaign sharper.

The bottom line

The list you already own is worth far more than it is producing, and the gap is signal. Append a roof-age range, model storm exposure per roof, layer in ownership and your own history, score the result, and route your crew to the roofs that are actually due. Keep it honest — age is a range, storm is odds, the inspection finds the truth, and you document and estimate rather than handle claims. Refresh it, write outcomes back, and the same crew hours produce more jobs.

That is the whole play: stop buying everyone's shared leads, and start ranking the roofs only you can see in your own data. If you want the age-and-storm layer done for you — a roof-age range and per-roof storm physics appended to your list and ranked into a route — that is what RoofPredict is built to do, with the limits stated plainly so you know exactly what the data can and cannot tell you.

FAQ

What is roofing CRM data enrichment, in plain terms?

It is appending the facts that make an address actionable to the list you already own. For a roofer that means an estimated roof-age range, per-roof storm exposure, owner and property details, current contact data, and your own touch history. The result is a list you can score and sort into a route, instead of a pile of addresses with no reason to knock one over another.

How accurate is roof-age data, and can I get an exact install date?

You almost never get an exact install date, because no national registry of reroof dates exists. Honest roof-age data is a range with a confidence level — for example, 18 to 24 years, high confidence — inferred from aerial imagery over time, permits where they are digitized, and year-built as a ceiling. A range is enough to decide which doors to prioritize, which is all you need it for.

Why can't I just use county hail alerts for storm targeting?

Because hail is intensely local and county alerts over-count exposed roofs by a huge margin. A hail core can be a few miles wide while the county entry covers everything. Effective targeting overlays modeled hail and wind footprints onto each geocoded address so you know the largest hail and strongest wind that plausibly passed over that specific roof, rather than only that the county had a report.

How do I combine roof age and storm data into a priority?

Cross them in a matrix. Old roofs with significant recent storm exposure are top priority because urgency and demand stack. New roofs with no storm are suppressed. Mid-life roofs are worth inspecting only when a real storm hit them. A simple weighted score — points for past-service-life age, points for recent significant exposure, penalties for already-roofed — turns the matrix into one sortable number per address.

Skip tracing to append phone and email is a standard, legal practice, but dialing and texting the results is regulated. Scrub appended numbers against the federal Do Not Call Registry before any cold-calling campaign, understand TCPA limits on autodialers and automated texts, and check the mini-TCPA and calling-time rules in every state you dial into. Mail carries far less compliance friction, which is why it is often the safest first use of newly enriched data. This is not legal advice — confirm with your own counsel.

How often should I re-enrich my list?

Refresh layers on different clocks. Sweep storm exposure after every significant event plus a quarterly pass. Refresh roof age quarterly to semi-annually as roofs age into your priority buckets. Refresh ownership quarterly and contact data right before any calling push, since phone numbers decay fastest. Your own touch history should write back continuously. A stale enriched list is barely better than a raw one.

Can I use storm data to help homeowners with insurance claims?

You can use it to decide which roofs to inspect, then document damage thoroughly and write an accurate repair estimate for your own scope, which you hand to the homeowner. You cannot negotiate or handle the claim, interpret what the policy covers, promise a payout or approval, offer to waive or absorb the deductible, or advertise a free roof — those cross into unlicensed public adjusting or deceptive advertising in most states. The homeowner files; the insurer decides coverage; your job ends at honest documentation and an estimate.

How is enrichment different from buying roofing leads?

Bought leads are usually shared — the same homeowner gets called by several companies the same week. Enrichment adds signal to addresses you already control, producing a ranked list that nobody else has scored the way you have. You own it, it does not get resold, and it produces work in quiet months from aging roofs, not only in the rush after a storm.

Where does RoofPredict fit in this workflow?

RoofPredict handles the hardest two layers: it appends a roof-age range per address and storm physics modeled per roof, then ranks the addresses into a route you feed back into your CRM or mailing workflow. It enriches the list you already own rather than selling shared leads, and it does not knock doors for you. The limits are stated plainly — age is a range with confidence, storm is modeled odds not proof of damage, and coverage varies with imagery and storm-data density in your area.

What is the single most overlooked enrichment layer?

Your own history. Overlaying which addresses you have already roofed, bid, or been told never to return to costs nothing and prevents the most common waste — re-knocking doors you already won, lost, or were asked to leave alone. It also surfaces warm re-engagement: a lost bid from years ago whose roof has now aged into your priority bucket is a far better contact than a cold address.

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.

By signing up, you agree to receive The Roofline by RoofPredict. Unsubscribe anytime.

Sources

  1. National Roofing Contractors Association (NRCA)nrca.net
  2. NOAA Storm Events Databasencdc.noaa.gov
  3. NWS Storm Prediction Centerspc.noaa.gov
  4. Insurance Institute for Business & Home Safety (IBHS)ibhs.org
  5. FTC National Do Not Call Registrydonotcall.gov
  6. FTC Telemarketing Sales Ruleftc.gov
  7. FCC Telephone Consumer Protection Act (TCPA) Rulesfcc.gov
  8. USPS Address Quality & CASS Certificationpostalpro.usps.com
  9. U.S. Census Bureau American Community Surveycensus.gov
  10. Texas Department of Insurance — Roofers and Public Adjusterstdi.texas.gov
  11. OSHA Fall Protection in Construction (Roofing)osha.gov
  12. International Code Council — International Residential Code (IRC)codes.iccsafe.org
  13. U.S. Bureau of Labor Statistics — Roofers Occupational Outlookbls.gov
  14. RoofPredictroofpredict.com

Related Articles