Roofing · Marketing

Storm Season Marketing for Roofers: The Playbook

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.

Why storm season breaks normal marketing math

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:

  • Click costs spike — sometimes 3–5×. Every roofer in the area is bidding harder on the same keywords.
  • Conversion rates also spike — homeowners who can see daylight through their attic don't browse. They click and call. Conversion rates of 25–35% are normal for the first two days.
  • Branded search erupts — if your brand has any local presence at all, people will Google "[your company name]" directly. If they can't reach you instantly, they go to the next ad.
  • Local Services Ads (LSA) traffic explodes — Google's LSA inventory in storm-impact zones can carry 60% of total roofing demand for 48 hours.

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.

The pre-storm checklist (run this BEFORE the season starts)

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.

1. Google Ads campaigns paused but loaded

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.

2. Negative keywords — the unsexy work that saves the budget

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.

3. Local Services Ads (LSA) live and verified

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.

4. Storm-specific landing pages built (and noindex'd until needed)

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.

5. Call tracking, every channel, no exceptions

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.

6. Google Business Profile prepped for surge

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.

7. Review request workflow tested

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.

Real example

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.

The 72-hour storm window

When a major storm hits, the rules change for three days. Here's what happens hour by hour.

Hour 0–6: Activate everything, throttle nothing

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).

Hour 6–24: Adjust as data comes in

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.

Hour 24–72: Capture the second wave

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.

Post-storm: the part everyone forgets

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.

The cheat-sheet checklist

If you run a roofing company and you want to prep for the next storm season, this is the short list:

  1. Two Google Ads campaigns: everyday + storm. Storm campaign paused, fully loaded.
  2. Local Services Ads verified at least 8 weeks before season.
  3. Negative-keyword list with ~200 entries plus a process for adding storm names in real-time.
  4. City-specific landing pages built and ready to flip from noindex to indexed.
  5. Dynamic number insertion + offline conversion import wired into Google Ads.
  6. Google Business Profile updated, posting cadence established.
  7. SMS review-request workflow tested end-to-end.
  8. Bid scripts that auto-pause when daily budget hits, so you don't bleed into the next day's allocation.
  9. Post-storm campaign-pause discipline documented. (This is where most contractors lose money.)

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.

If you'd rather not build this yourself

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.

Ready to talk?

Storm season is already coming.

Most of the work above takes 4–8 weeks to set up properly. Don't wait until there's a hurricane on the radar.

Prefer the full form? Go to contact page →