A roofing company's 12 months of revenue hinges on what happens in 72 hours. Here's the storm-season marketing playbook we run for roofers — pre-storm setup, in-storm execution, and the follow-up window most contractors miss.
May 9, 2026 · BY JOHN POTTER
If you run a roofing company, you already know the math: a single 90-minute hailstorm can deliver more revenue than the previous six months of normal operations combined. The question isn't whether storms create demand. It's whether your marketing is set up to capture that demand the moment it appears, or whether the leads end up at the competitor across town who happened to bid on the right keyword that morning.
We've built and run storm-season marketing systems for roofing contractors across Massachusetts and North Carolina for almost three decades. Most of what separates the roofers who close storm-season jobs from the ones who don't isn't budget — it's preparation. The window from "storm forecasted" to "homeowner books an estimate" is measured in hours, not days, and the marketing infrastructure has to be assembled before the storm shows up on the radar.
This is the playbook we hand to roofing clients. None of it is theoretical. All of it is what we've seen actually move cost-per-lead, booked-job rate, and post-storm review velocity for real businesses on real campaigns.
In a normal week, a roofing company might pay $40–$80 per Google Ads click and convert 8–12% of those clicks into estimate requests. Cost per booked job runs $300–$600 in healthy markets.
Inside a 48-hour post-storm window, every one of those numbers moves:
The economics work because conversion rates rise faster than click costs. But only if you're set up to spend the money the moment it counts. Showing up two days late means you ate the click-cost spike on the first day and missed the conversion-rate spike on the second.
Storm season prep happens in March and September, not the morning of the forecast. By the time the National Weather Service is broadcasting warnings, every one of these items has to already be live.
We run two parallel Google Ads campaigns for storm-season clients. The "everyday" campaign is what runs Monday through Friday in normal weather — modest budget, focused on long-form keywords like "roof inspection [city]" and "asphalt vs metal roof". The "storm" campaign is paused 360 days a year. It carries 3× the budget of the everyday campaign, bids 50% higher, and uses keywords like "storm damage roof [city]", "emergency roof repair", "hail damage roofing", "wind damage roofing claim". When a storm is forecast, the everyday campaign goes to a half-budget and the storm campaign comes online with one button click.
The first 48 hours after a major storm flood Google with searches like "[storm name] track" and "[storm name] news". If your campaign is bidding on broad-match "storm" terms, you'll burn through the budget on news-readers in the first three hours. Every storm campaign we run has a permanent negative-keyword list of about 200 entries — news, tracking, weather forecasts, FEMA, insurance lookups — and we add storm-name negatives the moment a named storm is announced.
Google's LSA program for roofers takes 4–8 weeks to fully activate (background checks, license verification, insurance docs). Trying to set it up in the week before a storm is too late. If you're not LSA-verified by the time the wind hits, you're forfeiting roughly half the local lead inventory to the competitor who is.
Generic homepage traffic doesn't convert at storm-season rates. We build dedicated landing pages — one per major storm-prone city in the service area — that lead with "Did the storm damage your roof?" instead of "Welcome to [Company Name]." These pages are pre-built and sit on the domain marked noindex,nofollow until activated. The form on each one is tied to dedicated call-tracking so we know exactly which campaign delivered each lead.
If you can't tell the difference between a Google Ads call, an LSA call, an organic call, and a Facebook call, you can't tell which budget to scale. Every storm-season program we run has dynamic number insertion (DNI) on the website and unique tracking numbers on every print piece, yard sign, and door-hanger. The data feeds back into Google Ads as offline conversions so the bidding algorithm learns what's working.
The week before storm season, we update GBP photos, post a "We're ready for storm season" announcement, and verify business hours match what the office team can actually answer. During a storm event, we post a GBP update every 12 hours showing the team in action — these posts visibly outrank stale competitor profiles in the local pack.
The post-storm review wave is what carries you into the next storm season ranking-wise. Every project — even emergency tarping jobs — gets a review request via SMS within 24 hours of completion. The workflow has to be tested before storm season because if it breaks during the surge, you've lost dozens of reviews you can't recreate.
Our roofing case study client (North Shore Roofing Company) finished a recent 12-month storm cycle with +280% organic traffic year-over-year, a 41% reduction in paid-search cost per lead, and 140+ post-engagement reviews. The work above is exactly the playbook we ran with them.
When a major storm hits, the rules change for three days. Here's what happens hour by hour.
The moment a storm warning crosses your impact zone, the storm campaign goes live with full budget. We push the daily budget to a number that lets the campaign spend through the entire surge without throttling — typically 3–5× the everyday spend. Geo-targeting tightens to a polygon that matches the actual storm track, not the entire service area. Bid adjustments add another +30% on mobile (everyone's calling from their phone in the front yard).
The first six hours of storm-cycle data tells us which keywords are actually converting. We pause the underperformers and pour budget into what's working. Negative keywords get added in real-time as we see junk searches show up in the search-terms report. Landing pages get tweaked if the form isn't submitting cleanly on mobile.
The first 24 hours are emergency-driven — visible damage, water inside, "I need someone NOW" calls. Hours 24–72 are insurance-driven — homeowners who've talked to their adjuster and now need a contractor for a documented claim. The keyword mix shifts ("insurance claim roofing", "roof inspection insurance"). The form copy shifts too. We update the landing pages mid-surge to lead with insurance-friendly language.
Five to ten days after a storm, the surge ends. Click costs stay elevated for another 2–3 weeks (every other roofer is still hopeful) but conversion rates collapse back to baseline. This is when undisciplined campaigns burn through what's left of the budget chasing leads that aren't there anymore.
The discipline: pause the storm campaign on day 7 unless data clearly shows demand still elevated. Restart the everyday campaign at full budget. Push the office team to fire the post-job review-request sequence on every closed estimate. Keep the GBP posting active for another 30 days documenting the work — those posts rank in image search forever and become permanent lead-gen assets.
One job-site photo posted to GBP today might be the image that wins a click two storms from now. That's how compounding works for local marketing.
If you run a roofing company and you want to prep for the next storm season, this is the short list:
None of it is glamorous. All of it is the work that separates the roofers who book 30 jobs in a storm week from the ones who book three.
This is what we do. John Potter Media manages storm-season marketing for roofing contractors as a managed service — the campaigns, the LSA, the landing pages, the GBP, the review program — with monthly reporting in plain English. If your roofing business has a storm season coming up and the marketing infrastructure isn't where it needs to be, the time to fix it is now, not the day a hurricane forms.
You can reach the team here for a no-obligation conversation, or call directly: 910-359-4700.
Most of the work above takes 4–8 weeks to set up properly. Don't wait until there's a hurricane on the radar.