AI Marketing for Roofing Companies: A Worked Storm-Season Content Plan

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for AI Marketing for Roofing Companies: A Worked Storm-Season Content Plan.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for AI Marketing for Roofing Companies: A Worked Storm-Season Content Plan.

Plan storm-season content in three layers before the season starts: a trigger rule that decides when content goes live, a pre-approved pack of posts, emails and landing-page copy that AI drafts in the calm months, and a review step that checks every claim. After a storm, the first message should help; the offer comes second.

The layers exist because speed and honesty pull in opposite directions. Within hours of a hailstorm homeowners are searching and competitors are posting, so writing from scratch loses the week. But storm marketing is where a wrong promise costs most: about insurance, about free work, about what a roof "needs". Writing the pack in advance lets you check it when nobody is in a hurry.

Follow me on Instagram@sagnikteaches

The example firm is invented: twelve people, two inspection crews, 900 past customers, a service area of eight neighbourhoods and one lender it works with. Every number is illustrative, and the neighbourhood names are placeholders.

Connect on LinkedInSagnik Bhattacharya

AI's job is drafting inside rules you write. It never decides that a storm happened, never states what an insurer will pay and never writes a financing figure. Those three come from a weather record, from the insurer and from the lender.

Subscribe on YouTube@sagnikteaches

The trigger plan: three levels, each with an approver and a stop rule

A trigger is a fact that someone can point to, not a feeling that "it looks bad out there". Good triggers are an official severe-weather alert covering your service area and your own inbound volume. Bad triggers are anything an assistant tells you about the news.

LevelTrigger (the example firm's rule)What goes liveWho approvesStop rule
WatchA severe-weather alert covers part of the service areaNothing public. Confirm crews, check the booking page, load the packOwnerAlert lapses
EventAlert confirmed and 10 or more storm-damage enquiries in 24 hours, or a verified damage report from a customerSafety post within 24 hours; check-in email to affected neighbourhoods; landing page bannerOwner and office managerBacklog over 10 working days
MajorDamage across most of the area and enquiries holding for three daysFull pack: local pages, texts to consenting customers, extra reminders, paid adsOwnerReassess on day 14 and day 30

The stop rule is the part most firms leave out. Suppose two inspection crews finish six inspections a day each, which is 12 a day. With 130 requests in the queue the wait is 130 / 12, about 10.8 working days, which is over the 10-day limit, so promotion pauses and the landing page banner changes to "we are booking inspections [N] working days out". A storm campaign that fills the diary and then makes people wait three weeks creates the complaints the review reply tutorial has to clean up later.

The pack AI drafts in the calm months

Ten assets cover most of a storm response. All of them are drafted before the season and sit in a shared folder marked "approved on [date]".

AssetReleased atWhat it needs from you
Safety-first post (no offer)Event, hours 0 to 24Owner's safety wording; the storm fact
Guide: documenting damage from the groundEvent, day 1Photo tips you would give on a phone call
Past-customer check-in emailEvent, days 1 to 3Install year per customer; backlog figure
Text version of the check-inEvent, days 1 to 3Text consent flag
Storm landing pageEvent, day 2Booking link; warranty terms; licence and cover details
Local pages (only where earned)Major, week 2Fact sheets per neighbourhood
Business profile postEvent, day 1Dates and times for the post
Phone and chatbot answersEvent, hours 0 to 24Claims table; inspection wait
Inspection follow-up emailAfter each inspectionThe report; a repair or replace summary written by the inspector
Review requestAfter each finished jobSent to every customer, not only the happy ones

One prompt builds the first five. The rules at the top do most of the work, because they are what keeps the drafts honest.

You are drafting the storm-season content pack for a twelve-person roofing company.
Rules that apply to everything you write:
1. Never state what an insurer will pay or approve. Never say we handle, negotiate or settle claims.
2. Never offer to pay, waive or rebate a deductible. Never say "free roof".
3. Do not state a storm date, place or severity. Write [STORM FACT] for a person to fill in.
4. Do not state a financing payment, rate or term. Write [LENDER TERMS].
5. Use only the facts below. Mark any gap as [NEEDS FACT].
6. Calm and practical. Safety first. No fear language, no countdown pressure.
Facts: free written inspection with photos, no obligation; inspection wait [N] working days;
workmanship warranty [terms]; licence number [number]; insurance cover [details].
Write: (A) a safety-first post under 80 words; (B) a guide post on documenting damage from the
ground; (C) a past-customer email under 150 words; (D) a text under 160 characters;
(E) landing page copy with headings; (F) a list of every claim you made.

Here is item (A) as it came back in an illustrative run, with the two changes the owner made.

After a storm, stay safe first. Stay off the roof and away from fallen branches, power lines and any ceiling that sags. If water is coming in, move belongings away and put a container under the drip. Take photos from the ground and note the date. When you are ready, we can inspect your roof and send a written report with photos at no charge and with no obligation. Our current wait for an inspection is [N] working days.

The first change was cutting a closing line the assistant added about "unlicensed storm chasers". Naming other contractors in a safety post turns help into a sales pitch. The second was tightening "no charge" into the wording the firm's inspection policy actually uses. The sag-in-the-ceiling line stays only because the owner has told customers the same thing over the phone, and the post never goes out without that check.

Honest-claims rules an assistant will break unless you stop it

Left alone, an assistant writes what storm marketing usually sounds like. Keep a claims table in the same folder as the pack and paste it into every prompt.

The draft saysThe problemSay instead
"We'll handle your insurance claim"Implies you act for the homeowner against the insurer."We inspect, document the damage and give you a written report you can send to your insurer."
"Your insurance will cover a full replacement"You do not decide that, and neither does the assistant."Whether your policy covers the damage is for your insurer to decide."
"No out-of-pocket cost" or "we'll cover your deductible"In many places paying, waiving or rebating a deductible is unlawful, and it can expose the homeowner too.Delete it. Ask a lawyer what applies to you.
"Free roof"Nobody gives one, and the phrase invites suspicion.Delete it.
"Hail hit [neighbourhood] on [date]"The assistant cannot know. A wrong date is a false statement.Use a date and area you verified from a weather record.
"Licensed and insured"Only true with the actual licence and cover behind it.State the licence number and the cover you hold.
"Lifetime warranty"Whose warranty, covering what, and what voids it?State the provider, the term, the coverage and the main exclusions.
"Same-day inspections"Only true while capacity allows it.State the current wait and update it daily.
"100% of claims approved"Invented, and impossible to prove.Delete it.

On deductibles in particular, insurance and trade sources describe rules in many places that make it unlawful for a roofer to pay, waive or rebate a deductible, with consequences for the homeowner as well. The rules vary, so treat any wording in this area as a question for your lawyer, not for an assistant.

The same table applies to photos and quotes. Use real roofs, with the owner's consent and without a name or house number. Quote a review only with the reviewer's permission, word for word.

Storm-call answers the phone team and the chatbot share

The pack lists phone and chatbot answers for the first 24 hours, and they come from the claims table, not from a fresh prompt on the day. The office drafts them with the assistant in the calm months, the owner approves them, and the same sheet goes to whoever answers the phone and into the website chatbot's instructions. The example firm's sheet, illustrative like every figure here, has six rows.

Caller asksApproved answerNever say
"Will my insurance pay for this?""That is for your insurer to decide. We can inspect and give you a written report with photos to send them.""Hail damage is always covered."
"Can you come out today?""Our current wait for an inspection is [N] working days. If water is coming in now, [the firm's arrangement for active leaks].""We'll be right over."
"Do I need a new roof?""We can't say until we have inspected. The report will say whether repair or replacement makes sense, and why.""Every roof on your street will need replacing."
"Can you cover my deductible?""No, we can't help with that. Your insurer can explain how your deductible works."Anything that sounds like a yes.
"Are you licensed?""Yes. Our licence number is [number], and it is printed on every quote.""Fully certified", with no number.
"Is the inspection really free?""[The inspection policy wording]: no charge and no obligation.""Free roof."

The chatbot gets one extra rule: any question about a claim, a payment, a complaint or a dispute goes to a person, with the caller's name and number taken. Before the season, test it by asking each question on the sheet in two or three different ways. "Can you just add the deductible to the invoice?" is the deductible question in disguise, and a chatbot that answers the plain version correctly can still agree to the disguised one. If it drifts from the approved answer even once, tighten the instruction and test again; storm night is not the time to find out.

Neighbourhood pages built from finished roofs, not place names

Google's spam policies describe scaled content abuse as many pages generated mainly to manipulate rankings, and the examples include using generative AI to produce many pages without adding value for users. They describe doorway abuse as pages made to rank for similar queries that send people on to a page that is less useful. A page for each of eight neighbourhoods with only the name swapped fits both descriptions, and it tells a homeowner nothing about their own street.

So a neighbourhood gets its own page only if you have something true to say about it. The example firm's rule is five finished jobs there. Five of the eight neighbourhoods meet it; the other three share one "also serving" page. Each local page starts from a fact sheet that you fill in, not the assistant.

  1. Neighbourhood name and the number of roofs finished there, with years.
  2. Typical roof type and age, from your own job records.
  3. Verified dates of recent storms that affected it, with the source you checked.
  4. Findings from inspections, as a table of roof ID, age and finding.
  5. Materials and approaches you used there, and why.
  6. Permit or approval notes you know to be true.
  7. Two or three photos from finished jobs, with consent.
  8. Questions neighbours asked, and your answers.
  9. Reviews you may quote, with permission.
  10. Current inspection wait and how to book.

The assistant turns the sheet into a page. For the findings table, ask it to cite roof IDs and then count the findings yourself; assistants are unreliable at counting and can state a confident, wrong total. Here is how an acceptable page might open, with placeholders where your facts go.

Roofing in [neighbourhood]: what we have found on [number] roofs since [year]. Most roofs we have worked on here were built between [year] and [year] and use [material]. The finding we see most often is [finding from your table], on [number] of [number] inspected roofs. Hail passed through on [verified date], according to [source]. If you would like us to inspect, the current wait is [N] working days.

Everything in that paragraph comes from your own records or from a weather record you checked. A set of forty pages produced by looping one prompt through forty place names contains none of it, which is the pattern Google's policy is written to catch.

Financing: the lender writes the numbers, you write the sentences

Do not let an assistant calculate or phrase a payment. Ask the lender for the wording it has approved for marketing, paste that into the prompt as fixed text, and have the assistant write only the sentences around it. Have a lawyer look at the final version, because advertising credit is closely regulated in many places.

A typical first draft reads "Get a new roof for just $99 a month!" A quick sum shows why that cannot stand. On a $12,000 roof, $99 a month takes 12,000 / 99, about 121 months, which is ten years at zero interest. At an illustrative 9.99% APR over 120 months the payment on $12,000 is $158.51, and the total repaid is about $19,022. At the same rate over 60 months it is $254.91. In a spreadsheet the PMT function gives those figures; the lender's own calculator is the version you publish.

Draft wordingProblemWording that holds up
"A new roof for just $99 a month!"Needs a zero-interest, ten-year loan to be true."From $[payment] a month over [term] months with [lender], subject to credit approval. Example: $[amount] financed at [APR]% APR."
"Everyone qualifies"Credit decisions are the lender's."Subject to credit approval. Other terms are available."
"0% interest"Promotional terms have conditions and an end date.Use the lender's wording, including the period and what happens afterwards.

For the wider limits on what an assistant should explain to a customer about credit, the contractor financing tutorial goes further.

The 45 days after a hailstorm, day by day

Take a hailstorm that crosses three of the eight neighbourhoods on a Tuesday evening. The owner has checked a weather record, the call log shows 14 damage enquiries by Wednesday afternoon, and the Event trigger is met. This is what the plan releases.

WhenReleaseChannelApprover
Day 0 (first 24 hours)Safety-first post, no offer; phone and chatbot answers updatedProfile, social, phoneOwner
Day 1Guide to documenting damage from the ground; dated profile post with the inspection offerSocial, profileOwner
Days 1 to 3Check-in email to customers in the three neighbourhoods; text to those who agreed to textsEmail, textOwner and office manager
Day 2Storm landing page banner: verified date, areas, current waitWebsiteOffice manager
Days 3 to 7Short post on what an inspection involves and what the report containsSocialOwner
Days 7 to 14Reminder email to anyone who did not book; local page updates for neighbourhoods that qualifyEmail, websiteOwner
Day 14Reassess: backlog, complaints, whether to continue to MajorNoneOwner
Days 14 to 30Proof posts from finished inspections and repairs, with consent; honest explainer on repair versus replacementSocial, emailOwner
Days 30 to 45Wind down: update banner, send review requests for finished jobs, archive the packEmailOffice manager

The plan also names what is not released. Nothing from the Major level goes out unless the backlog is under the limit. Paid ads follow the same stop rule, and the storm-season ads tutorial covers keyword and budget choices. When the calls start, the storm-day receptionist tutorial and the storm lead triage tutorial pick up where the marketing ends.

Who gets the check-in, and what each group hears

Pull the customers whose address sits in the three affected neighbourhoods from your job software. In the example firm that is 310 of the 900 past customers, and they are not one audience. Sort them by what you did for them, using the install year and job type already on file, so the opening line is true for each group.

GroupRecordsWhat the first line says
Roof installed by you in the last 5 years120Warranty first: "call us, and we will inspect under your workmanship warranty"
Roof installed by you 5 to 12 years ago140"We installed your roof in [year] and would be glad to check it"
Repair customers (you did not install the roof)50"We repaired [item] for you in [year]; we can check that repair and the roof around it"

The groups add up to 310. Sending all three the same email wastes the one thing you know about them. The group with a workmanship warranty is the most important, because a call from a customer whose roof is covered should reach someone who can open the file, not a general enquiry line.

A first-week email, drafted and then corrected

The check-in email goes only to the customers sorted above, in the affected neighbourhoods. Here is a typical first draft from an assistant with no rules.

Subject: Your roof may have hidden storm damage!

Hi [first name], the recent hailstorm may have caused serious hidden damage to your roof that could cost thousands if ignored. Our storm specialists will work with your insurance company to get your repairs covered. Book your free inspection today before slots run out!

It has a fear subject line, an invented cost, a promise about insurance and a made-up shortage. This is what ships after the owner applies the claims table.

Subject: Storm in [neighbourhood]: a roof check from [Company]

Hi [first name], hail passed through [neighbourhood] on [verified date], according to [source]. We installed your roof in [year], so we would be glad to check it. We inspect, take photos and send you a written report. There is no charge and no obligation, and you can share the report with your insurer if you decide to make a claim. Our current wait for an inspection is [N] working days; book here: [link]. If your roof is under our workmanship warranty, call us first on [phone].

Nothing in the second version predicts damage, promises an outcome or invents scarcity, and the warranty line is a service customers appreciate. This is the version for the middle group in the table; the other two groups differ only in the second sentence.

The review: two keys, one hour

When a trigger fires, nobody has time for a long approval chain. The example firm uses two keys. The owner approves anything that makes a claim, and the office manager approves anything with a date, a wait or a link.

  1. The storm fact (date, area, source) is copied from a weather record, not written by the assistant.
  2. The claims table has been applied to every line, including the subject line.
  3. The inspection wait and booking link are current today.
  4. No insurance outcome, deductible offer or "free" claim appears anywhere.
  5. Financing text is the lender's own, unchanged.
  6. Every photo and quote has consent, and no name or address is visible.
  7. Every message to a customer goes only to someone who agreed to hear from you on that channel.

Once a year, before the season, your lawyer reads the claims table and the consent wording. The assistant can then redraft the pack from the updated table in an afternoon.

Counting what the season did

Tag every channel with its own code, put the code in the booking form and record it on each inspection. The table below is invented, to show the layout.

SourceInspection requestsInspections doneJobs signedComplaints
Check-in email4641120
Profile post191530
Landing page383071
Phone, no code272251

The column to watch is complaints, because it is where over-promising shows up first. If two complaints say "you said the wait was three days", the wait figure in the banner was stale, and the fix is a daily update, not better copy. After the season, keep the pack, the claims table and this table together, and use them to decide which triggers were set too low or too high.

Storm-season questions roofing owners ask

Is it all right to knock on doors after a storm?

Rules on door-to-door selling vary by place, and some add permits or waiting periods after a storm, so ask a lawyer before sending crews out. Whatever the rules say, a visit works better as an invitation than a pitch: leave a card with your company details, licence number and inspection offer, and never ask to go on the roof.

Do I need a new landing page for every storm?

No. Keep one storm page that stays live all year, with a banner you update for each event: the verified date, the neighbourhoods affected and the current inspection wait. New pages for each storm tend to be thin, and the old ones keep any links and history the page has earned.

Can I quote customer reviews in storm emails?

Only with the reviewer's consent. A review belongs to the person who wrote it, so ask before using their words in an email or on a page, and quote it exactly. Never rewrite a review with AI to make it sound stronger, and never offer a reward in exchange for one, which Google's review policy does not allow.

Can the same plan run my paid ads?

Yes. Ads follow the same trigger levels, the same claims table and the same stop rule. Pause them the moment the inspection backlog passes your threshold: ads that book inspections you cannot deliver waste money and goodwill. Keep the ad copy to the facts in the claims table too.

Further reads

Sources: Google Search Central spam policies (page updated 28 August 2026); Google Business Profile Help on adding posts; Google's review content policy; trade and insurance sources describing deductible-waiver rules, which vary by place.

Want a storm plan ready before the next hail season?

On a 1:1 call we'll map your trigger levels, your inspection capacity and your claims rules, then decide which parts of the content pack are worth drafting with AI first.

Book a 1:1 call with me