Most roofing leads die quietly. A homeowner fills out a form, you sell or work the lead, nothing closes, and by month six it's a dead row in a spreadsheet. The acquisition cost is sunk. The lead is "worthless."
It isn't worthless. It's waiting for weather.
The single best predictor of whether a roof gets replaced this year isn't intent, income, or roof age. It's whether a storm crossed the insurance-claim threshold over that exact address. RoofTap turns that fact into a product: every address you enrich gets watched for 24 months, and the moment NOAA flags a qualifying storm nearby, a webhook fires and your dead lead is suddenly the warmest lead you own.
The problem with how leads decay
A roofing or solar lead has a half-life. Day one, the homeowner is engaged. Day thirty, they've stopped answering. By the time you give up, the lead looks like a loss.
But nothing about that homeowner changed except timing. The roof is still aging. The house is still standing in a hail belt. What's missing is a reason to act now — and storms manufacture that reason on a schedule no marketer can match. A 1.5" hail core that drops over a neighborhood resets every dead lead in its footprint from "not interested" to "calling their insurer this week."
The trick is knowing the instant it happens. That's the gap RoofTap fills.
How the 24-month storm watch works
Every address that runs through the /v1/enrich API is automatically enrolled in a storm watch for 24 months. No extra call, no separate upload, no per-month fee for the watch itself. Enrich an address once and it's monitored for two years.
We score against 5 years of storm history, so when something new lands we know whether it's a routine event or the worst hail that address has seen. When NOAA flags a qualifying storm within a 10-mile radius, a webhook fires to your endpoint within minutes.
"Qualifying" isn't a marketing adjective. We use the same thresholds an insurance adjuster uses to approve a claim:
- Hail of 1 inch or larger
- Wind of 60 mph or greater
- An EF1 or stronger tornado
- A hurricane warning
If the storm clears one of those bars, the address is claim-eligible territory and the webhook fires. If it's a half-inch hail nuisance event, it doesn't — because a lead you can't help a homeowner file on isn't a lead, it's a phone call that wastes everyone's afternoon.
A worked example: one lead, two sales, zero new acquisition cost
Run the timeline.
Month 1. A roofing aggregator buys a raw lead for $45, enriches it for $3.95, and resells the enriched lead to a restoration roofer. The roofer quotes, the homeowner stalls, and the job doesn't close. By month 6 the roofer has written the lead off. Dead.
Except the address has been under storm watch the whole time.
Month 9. A supercell drops 1.25" hail four miles from the property — well inside the 10-mile radius, well over the 1" hail threshold. Within minutes, RoofTap fires a webhook to the aggregator: this address, this event, claim-eligible.
The aggregator doesn't go buy a new lead. They already own this one. They re-package it as a storm-response lead — "verified 1.25" hail event, claim window open" — and resell it to the same restoration roofer at restoration-lead rates. The roofer calls a homeowner who is now actively worried about their roof, references the exact storm, and books an inspection.
The second sale carried zero new acquisition cost. The only marginal cost was the original $3.95 enrichment, already paid in month 1. That's the entire economic argument for storm-triggered re-engagement: you're monetizing inventory you already own at the exact moment it's worth the most.
The same loop drives demand on the buy side, which is where the margin math on enriched leads gets interesting.
Reactivating the leads you already gave up on
The storm watch handles every address going forward. But most operators have a graveyard of old addresses — years of cold leads, dead CRM rows, expired lists. Those are sitting on storm history too. You just never checked.
Lead reactivation lets you check all of them at once. Upload a list of old or cold addresses and RoofTap matches each one against storm history. It's free for up to 1,000 addresses, then $0.01 per address beyond that — pennies to find out which of your dead leads are sitting on a fresh claim.
Each matched address comes back with the fields you need to triage and prioritize:
- matched — did we find a storm-history match
- last_event — the most recent qualifying event date
- max_hail_in — largest hail size on record
- events_5yr — count of qualifying events in the last 5 years
- days_since_last_storm — recency, for sorting hot from stale
- claim_window_days — how long the claim window stays open
- within_claim_window — the field your dispatchers actually sort on
- priority — a ready-made ranking so reps work the hottest first
And here's the part that compounds: every matched address auto-enrolls in the 24-month storm watch. So reactivation isn't a one-time scan — it pulls your entire dead-lead archive into the same always-on monitoring as your new enrichments. One upload, and your back catalog starts firing webhooks too.
Why webhooks beat dashboards
Storm leads are a speed game. The roofer who calls the day after the hail books the inspection; the one who calls next week is third in line behind two door-knockers. A dashboard you have to remember to log into loses that race every time.
A webhook doesn't wait for anyone to log in. It pushes the event into your system — your CRM, your dialer, your dispatch queue — within minutes of NOAA flagging the storm. Your team works a queue that the weather builds for them automatically, ranked by claim window and severity. No one watches radar. No one pulls reports. The storm fills the pipeline.
That's the difference between storm data as a report and storm data as a storm-response engine.
Built for volume, priced for it
This is built for operators moving real volume — lead brokers, aggregators across roofing and solar, and large roofing companies sitting on big lead databases. The storm watch rides on every enrich call at the standard rate — $3.95 per call, dropping to as low as $1.95 at 30k+ calls a month — and the reactivation scan is free up to 1,000 addresses. There's no separate "storm product" line item to negotiate. Enrich the address, and the 24-month watch comes with it.
The reason RoofTap moved into this space, instead of staying a contractor CRM, is exactly this kind of leverage: the data layer sits under everyone's pipeline, and storm re-engagement is what makes that data keep paying out long after the first sale.
Stop letting good leads die on a calendar
Your dead leads aren't dead. They're un-triggered. The roof is still aging, the house is still in the hail belt, and the only thing missing is the storm — which is coming, and which RoofTap is already watching for.
Upload your cold list to [storm response and lead reactivation](https://www.rooftap.app/integrations/storm-response) and scan your first 1,000 addresses free. Every match auto-enrolls in the 24-month storm watch, so the next qualifying hail or wind event over those addresses fires a webhook to your team in minutes — and the lead you wrote off becomes the job you book.