← Back to Blog
Roofing10 min read

Bulk Lead Reactivation: Mine Your Dead Roofing Database for Storm-Exposed Leads

RoofTap Team·

Every roofer and every broker is sitting on a graveyard. Thousands of old addresses — leads that went cold, quotes that never closed, lists you bought two seasons ago and gave up on. You paid for those addresses once. Most people treat them as a sunk cost and never look at them again.

That's a mistake, because the one thing that changed since those leads went dark isn't the homeowner's mood. It's the weather. A roof that had no reason to get replaced in 2024 may have taken a 1.5-inch hail core last spring — and if it's still inside the claim window, that's not a dead lead. That's a warm, claim-ready job hiding in a CSV you forgot about.

Bulk lead reactivation is how you find those addresses. Here's the mechanic, the returned fields, and a worked example.

What reactivation actually does

You upload a list of old addresses. RoofTap matches every address against five years of storm history and tells you which ones had a qualifying event, how bad it was, and whether the insurance claim window is still open. You get back a scored, filterable list — the storm-exposed addresses separated from the dead weight.

The pricing is built so you can run your whole database without thinking about it: free up to 1,000 addresses, then $0.01 per address beyond that. A penny. Running a 50,000-address list costs about $490, and most of that list you'll archive — you're paying to *find* the slice that's worth working.

Walk the flow

  1. Upload a CSV of old addresses. Cold leads, lost quotes, an aged purchased list — anything with a street address.
  2. Match against 5-year storm history. Every address is checked for qualifying hail and wind events going back five years.
  3. Get back a scored list. For each matched address you receive:

- `matched` — whether the address resolved

- `last_event` — the most recent qualifying storm

- `max_hail_in` — the largest hail size recorded at that address

- `events_5yr` — how many qualifying events in five years

- `days_since_last_storm` — recency

- `claim_window_days` — days left in the insurance claim window

- `within_claim_window` — the boolean you sort on first

- `priority` — a ranking so you work the hottest addresses first

  1. Free up to 1,000, then $0.01 each. Run the whole graveyard.
  2. Matched addresses auto-enroll in the 24-month storm watch. This is the part that keeps paying.

The fields that decide who you call

Most of these fields exist to answer one question: *call now, or wait?*

`within_claim_window` is the first filter. An address with serious hail damage but a closed claim window is a harder sell — the homeowner missed the insurance money. An address that's inside the window is a homeowner who can still file, which is the difference between a cold pitch and a same-day appointment.

`max_hail_in` and `events_5yr` tell you how strong the damage case is. `days_since_last_storm` and `claim_window_days` tell you how much time you have. `priority` rolls those into one number so your callers work top-down instead of guessing. You're not dialing 5,000 dead leads — you're dialing the 200 the data says are claim-ready, in the order the data ranks them.

A worked example: 5,000 dead leads

Say you're a roofer or a broker with 5,000 cold addresses rotting in a spreadsheet. You upload the list.

First 1,000 addresses: free. The remaining 4,000: 4,000 × $0.01 = $40. Total cost to screen 5,000 dead leads: forty dollars.

The list comes back. Most of it is exactly as dead as you thought — archive it. But a meaningful slice matched a qualifying event. Suppose 600 addresses took a hail event in the last five years, and of those, 180 are still inside the claim window (`within_claim_window: true`) with `max_hail_in` of 1 inch or greater. You sort that 180 by `priority` and hand it to your callers.

That's a warm, claim-ready call list for $40 — leads you already paid to acquire once, revived at near-zero cost. Even if a single one of those 180 closes, the reactivation paid for itself a few hundred times over. The full re-engagement playbook, including the scripts and the timing, is in re-engage roofing leads with storm data — the companion piece to this one.

The part that keeps paying: the 24-month watch

Here's why reactivation isn't a one-time cleanup. Every address that matched is auto-enrolled in a 24-month storm watch. From that point on, you don't have to remember to re-run the list. When a qualifying storm hits — 1" hail, 60 mph wind, an EF1+ tornado, or a hurricane warning within 10 miles — a webhook fires, and that address goes from dormant to claim-ready in your system, with the 5-year history attached.

So the addresses that *didn't* match today aren't gone — they're being watched. The next hail core that lands over that neighborhood turns them into warm leads automatically, no re-upload, no new acquisition cost. You cleaned the graveyard once and turned it into a standing pipeline. The mechanics of the watch and the webhook live on the storm-response integration page.

Why this beats buying fresh leads

Fresh leads cost real money per address and arrive cold — you still have to qualify them. Your old database is the opposite: you already paid for the addresses, and storm history qualifies them *for* you. Reactivation flips a sunk cost into a screened, prioritized, self-updating asset. A penny an address to find the storm-exposed ones, free for the first thousand, and a 24-month watch that keeps surfacing more.

This is the same data layer the rest of RoofTap runs on, pointed backward at the leads you already have instead of the ones you're about to buy.

Start with your worst list

Pull your deadest, oldest CSV — the one you were never going to call again — and run it. The free reactivation tool is in the dashboard after signup, so create an account on the RoofTap homepage and upload it. First 1,000 addresses are free, the rest are a penny each, and every match goes on the 24-month watch. The storm-response integration explains exactly what fires and when. Your graveyard has warm leads in it. Go find them.

Ready to try ServiceTap?

Start free. No credit card required. No contracts.

Get Started Free