Roofing Google Ads: Storm-Season Campaigns and Negative Keywords With AI

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Roofing Google Ads: Storm-Season Campaigns and Negative Keywords With AI.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Roofing Google Ads: Storm-Season Campaigns and Negative Keywords With AI.

Plan three campaign states in advance (baseline, surge, cooldown), each with its own budget, hours and landing page. Have AI sort your search-terms report into negative keyword lists for jobs, DIY, vehicles and other kinds of roof. Write the triggers for switching state after hail, tied to how many inspections your crews can book.

A hail event lifts search demand for a few days. What limits a roofing company is crew capacity and honest wording, not budget. Spending hard while the inspection calendar is full buys calls you cannot serve. AI is good at sorting hundreds of search terms and drafting variants. You own the triggers, the caps and the claims.

Follow me on Instagram@sagnikteaches

Three campaign states instead of one always-on campaign

An always-on campaign is either too small for a storm or too expensive for a quiet month. Three states, prepared in advance and switched by rules, avoid both. The figures below are illustrative starting points for a six-person firm.

Connect on LinkedInSagnik Bhattacharya
StateKeyword focusDaily budgetAd hoursLanding pageExit trigger
BaselineRepair, replacement and inspection searches$407:00 to 19:00Service pagesA storm trigger fires
SurgeHail, wind and storm-check searches, plus baseline$1207:00 to 21:00, phones staffedStorm-check page with bookingA pause rule fires, or storm enquiries tail off for three days
CooldownBaseline plus the tail of storm terms$60, tapering over ten daysBaseline hoursStorm page stays, with next free dateTen days without a new storm trigger

Budget numbers need one caution. Google's help page on average daily budgets says Google can spend up to two times your average daily budget on a given day, and caps monthly charges at 30.4 times the average daily budget for most campaigns. A $120 surge budget can therefore cost $240 in one day, and a full month at $120 could reach $3,648. The baseline's $40 has a monthly ceiling of $1,216. Set your real cap from the worst case, which is the busiest days stacking up, and not from the average the campaign screen shows.

Subscribe on YouTube@sagnikteaches

Build the surge and cooldown campaigns before they are needed, and leave them paused. Switching state then means enabling something that has already been reviewed, with ads and pages approved, rather than building a campaign at seven in the morning with the phones already ringing.

The Complete Excel Course with AI Integration thumbnail

The Complete Excel Course with AI Integration

From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.

By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner

Buy now

A storm calendar the office can read at a glance

Seasons differ by climate, so build your own from your own records. Pull the last three years of job dates, inbound call logs and Search Console or ad impressions, and mark the weeks that spiked. The calendar below is a template with invented example weeks, not a claim about when hail falls anywhere.

PeriodStatePrepareSwitch on or off when
Eight weeks before your usual storm windowBaselineDraft surge ads, storm page and booking form; test call forwarding; refresh negative listsNothing yet
Storm window, no eventBaselineAlerts on for hail reports in your radius; crew leave limitedHail alert for your service area
From the event daySurgePhones staffed to 21:00, daily search-terms check, ads reviewed for claimsA pause rule fires, or storm enquiries tail off for three days
The ten days after surge endsCooldownBudget tapers, storm page shows the next free dateAnother event restarts surge
Quiet monthsBaselineReview negatives monthly, test one new ad per monthNone

The first row is the easy one to skip. Eight weeks is enough time to write and approve ads, build the storm page and train whoever answers the phone, all of which is hard to do once a storm has passed through.

Surge and pause rules after a hail event

Write the triggers as numbers, not feelings. An office manager can follow a number at six in the morning. A mood-based rule gets overridden by the first excited phone call.

RuleTriggerAction
Surge onA hail report confirmed in your service radius and your inspection calendar has fewer than [X] days bookedEnable the surge campaign and set the daily budget to the stated figure
Pause on capacityBooked inspections reach [Y] days, or the next free slot is more than [Z] days outPause the storm keywords, keep baseline running and show the next free date on the storm page
Pause on answer rateMore than [N]% of calls in a day go unansweredPause the storm keywords until the phones are covered
Cost checkCost per call over [M] times the baseline for two days runningReview search terms; trim the budget if the terms are clean
Cooldown onSurge has ended: a pause rule fired, or storm enquiries have tailed off for three daysStep the budget down from the surge figure to baseline over the next ten days

The brackets are yours to fill from your own history. Here is how it might be filled for a firm whose crews complete six inspections a day between them. Surge turns on when fewer than 4 days of inspections are booked ahead (24 inspections), pauses when 7 days are booked (42 inspections) or the next free slot is more than 5 days out, and pauses on answer rate if more than 20% of calls in a day go unanswered. The cost check triggers at three times the baseline cost per call for two days running. These numbers are illustrative, and the habit they show is real: a number per rule and a person named to apply it.

Google offers automated rules and scripts that can switch campaigns on a schedule or a condition, and an agency can wire your triggers into them. For a firm this size, a laminated card at the front desk and a named owner does the job with fewer failure modes. The weekly checks and rules in automating Google Ads with AI: rules, alerts and weekly checks cover the automated route in more depth.

Negative keywords: what they block and what they miss

A negative keyword stops your ad showing on searches that contain it. Google's help page on negative keywords describes three match types on Search, and the differences decide whether a list works.

Match typeBlocks a search whenExample with the negative "roof rack"
Broad (the default)It contains all the negative terms, in any orderBlocks "rack for roof" and "best roof rack"; does not block "roof racks" or "roof storage"
PhraseThe terms appear together in the same order, with other words allowed around themBlocks "best roof rack"; does not block "rack for roof"
ExactThe search is exactly those terms and nothing elseBlocks "roof rack"; does not block "best roof rack"

Two points catch people out. First, negatives do not match close variants: the same page says you must add synonyms and singular and plural versions yourself, so "roof rack" and "roof racks" are two entries (casing and misspellings, it says, are handled automatically). Second, a broad negative with two or more words only blocks searches that contain every word, so "roofing jobs" will not stop "roofer wanted". Short single-word negatives such as "jobs" block more, and risk more: Google warns that too many negatives can reduce the customers you reach.

Google's help pages put the limits at 20 negative keyword lists per account with up to 5,000 keywords each, a separate account-level set of up to 1,000, and 10,000 per campaign. Search and Shopping use these match types. Display and Video campaigns handle negatives differently: Display treats a set of negatives as a topic to avoid, so pages on that topic are excluded even when the exact words are absent. If you run AI Max or Performance Max, Google's help pages say negatives are respected, and the Performance Max page advises using them only for essential brand safety or for completely irrelevant terms. The detail is in AI Max negative keywords: how PPC agencies control spend.

Sorting a search-terms report with AI

The raw material is Google's search terms report: the terms people used that triggered your ads, with clicks and cost. It is not complete. Google's help page says terms without enough query activity are left out for privacy, so a clean-looking report still hides a tail. Export about 30 days of the report from your baseline campaign, with search term, clicks, cost and conversions. An illustrative extract of ten rows:

Search termClicksCostCalls or forms
roof hail damage repair18$131.403
car hail damage repair9$58.500
roofing jobs hiring7$41.300
how to patch a roof leak11$62.700
roofer wanted4$23.200
roof rack for suv6$29.400
free roof inspection5$31.001
roofing nailer3$14.100
roof storm damage assessment12$96.602
roofing software2$12.800

Of these ten rows, $501 was spent in total on 77 clicks, and $242 (about 48%) went on 42 clicks that produced no call or form. That number is the point of the exercise, but it is also a warning: a term with no conversion in 30 days is not automatically a bad term. "How to patch a roof leak" is a DIY search, which is a good reason to block it. "Roof storm damage assessment" has produced calls, so keep it.

You are helping a roofing company clean up Google Ads search terms. I will paste a search-terms export (term, clicks, cost, conversions) and my service list.

My services: roof inspections, roof repairs, roof replacement, storm and hail damage inspection, gutter repair.
I do NOT do: commercial flat roofs, solar installation, roof racks, car or vehicle work, employment.

For each term, classify as KEEP, NEGATIVE or CHECK and give a category from this list: DIY, JOB SEEKER, VEHICLE OR OBJECT, OTHER TRADE OR SERVICE, SUPPLIES OR TOOLS, FREE OR PRICE ONLY, SOFTWARE OR COURSE, UNCLEAR.

Then propose negative keywords as separate lists by category. For each proposed negative, state the match type (broad, phrase or exact) and why. Add singular and plural versions as separate lines. Never propose a negative that would block any term marked KEEP. If a term could belong to a customer, mark it CHECK instead of NEGATIVE.

SEARCH TERMS:
[paste export]

An illustrative first answer proposed these lists, and four of the lines needed attention:

DIY: "how to" (phrase), "diy" (broad), "tutorial" (broad), "patch a roof" (phrase)
JOB SEEKER: "jobs" (broad), "hiring" (broad), "wanted" (broad), "careers" (broad)
VEHICLE OR OBJECT: "roof rack" (phrase), "car" (broad), "suv" (broad)
SUPPLIES OR TOOLS: "nailer" (broad), "nails" (broad)
SOFTWARE OR COURSE: "software" (broad), "course" (broad)
FREE OR PRICE ONLY: "free" (broad)
  • "free" (broad) would block "free roof inspection", which produced a lead. Delete it, or add it only as an exact negative for specific junk like "free roofing materials".
  • "car" (broad) would block "car port roof replacement", which is a real roofing job. Make it a phrase negative: "car hail damage".
  • "jobs" (broad) is right for job seekers, but it would also block a customer typing "small roof repair jobs". Accept that loss for the first month and watch the report.
  • "nails" and "nailer" are single forms. Negatives do not match close variants, so "nail" and "nailers" need their own lines. The model did not follow the singular and plural rule in full, so check for it every time.

Review is the whole value of the exercise. A model proposes lists quickly and misses the words that also appear in real customer searches, which is why the prompt makes it mark customers as CHECK rather than NEGATIVE. Add negatives in small batches, wait a week and watch for a drop in calls before adding more.

Storm-season negatives: lists to build before the first hail

Baseline negatives handle the year-round junk. Storm season adds its own, because demand for hail and storm terms attracts people who are not your customers. Build these as separate named lists so you can attach or review them by theme. Every entry below is a candidate to check against your own search terms, not a list to paste in blind.

ListCandidatesWhy it is thereCheck first
DIYhow to, diy, tutorial, youtube, patch a roof, repair kitSearchers who want to do it themselves"how much" is a customer phrase; do not block it
Job seekersjobs, hiring, careers, salary, apprentice, wanted, applicationPeople looking for work, not a roof"jobs" can hide small-job searches; watch calls for a month
Vehicles and objectscar hail, vehicle, windscreen, roof rack, skylight blindsHail searches from drivers, and objects with "roof" in the name"car port roof" is a real job; use phrase matches
Hail productshail net, hail guard, hail coverPeople buying protection, not inspectionsRarely hurts; confirm in your own search terms
Supplies and toolsnailer, shingles wholesale, roofing felt price, toolsTrade or DIY buyers"shingles" alone is risky; use longer phrases
Claims and adjusting servicespublic adjuster, claims adjuster jobs, insurance adjusterSearchers who want an adjuster, not a roofer"insurance" alone is a customer term; keep it out of the negatives
Other trades and servicesgutter cleaning only, window repair, solar panels, commercial flat roofWork you do not doOnly block what you really refuse
Software and coursessoftware, course, certification, training, license exam, licence examLearners and software buyersRarely affects customers

The claims row deserves a note. A searcher typing "public adjuster" wants someone else, and sending your ad to them wastes money and implies a service you should not offer. A searcher typing "insurance roof inspection" is a different person: they may be a customer who is thinking about a claim and wants a roofer's photo report. Keep the second kind of search and write honest copy for it, as the next section does.

The same lists feed other campaign types. Account-level negatives apply across Search and Performance Max and the other campaign types Google's help page names, up to 1,000 of them, so the short, safe entries (job seekers, software and courses) are good account-level candidates. The longer, riskier ones stay in campaign-level lists you can review. For how a tradesperson in another sector approaches the same job, plumbing Google Ads: what to bid on, what to block is a close sibling.

Landing pages that match the search

A person who typed "hail damage roof inspection" should land on a page that answers that exact phrase, not a homepage with a slider. Build one storm page and keep the baseline service pages separate. Match the page to the ad group, in this order:

  1. Headline echoes the search: "Roof inspection after hail" for the hail group, "Roof leak repair" for the repair group.
  2. The offer and its limits, plainly: what the inspection includes (photos, a written report, an estimate) and what it does not (opinions on what a policy covers).
  3. Booking in one step: a tap-to-call button and a short form, both visible without scrolling on a phone.
  4. The next free date: updated daily during surge, so a visitor can see what to expect.
  5. Proof you actually have: your licence and insurance status if you hold them, and your own photos only.
  6. Insurance wording that stays inside the line: "If you decide to make a claim, you can give your insurer our photo report and repair estimate. Your policy decides what is covered."

Test the page on a phone with your data connection, not office wifi. A storm page that takes six seconds to load costs you the visit before anyone reads a word. If your storm page borrows photos from the job, roof damage reports for insurance claims shows what to caption and what to leave out, and the wording rules there apply to ads as much as to reports.

Storm ads written with AI, and the claims it adds

Google's help page on responsive search ads sets the frame: up to 15 headlines of 30 characters each (at least 3) and up to 4 descriptions of 90 characters each (at least 2). AI can fill that frame quickly, and it fills it with the claims roofing ads are known for unless you fence it in.

Write responsive search ad assets for a roofing company's storm-response campaign. Headlines: 12, each 30 characters or fewer. Descriptions: 4, each 90 characters or fewer. Count characters and show the count after each line.

Facts you may use: we inspect roofs, photograph and measure them, send a written photo report within [two] working days and give a repair estimate. Next free inspection date: [date]. Phone and online booking.

Rules: no claims about insurance, claims handling, coverage or deductibles beyond this exact sentence: "Your policy decides what is covered." No awards, ratings, years in business, guarantees, "best", "top-rated", "experts" or "specialists". Use "free" only for the inspection, and only if I say there is no charge. No urgency or time promises I have not listed. If you need a fact I have not given you, write ASK.

An illustrative first draft contained these lines, and I would handle them as shown:

Draft lineCountProblemFix
We Handle Your Insurance Claim30Promises adjusting, which a roofer should not offerRoof Inspection, Photo Report
Hail Damage Experts19Claim of expertise nobody can checkRoof Check After Hail
Top-Rated Roofers17An invented credentialDelete
Same-Day Roof Repair Guaranteed31Over the 30-character limit, and an unmade guaranteeRepairs From $[price]
Free Inspection, Free Estimate, Free Report43Over the limit, and "free" repeated three timesFree Roof Inspection (only if true)
Next free inspection: [date] (in the description)n/aNone, but it must be updated dailyKeep, with a daily check

The corrected pool for the surge campaign, with counts, looks like this. Placeholders change the length once real values go in, so recount after filling them.

AssetTextCount
HeadlineRoof Check After Hail21
HeadlinePhoto Report You Can Share26
HeadlineInspection With Written Report30
HeadlineBook Your Roof Check20
HeadlineBooking From [Date]19
HeadlineRoof Leak Repair16
DescriptionWe inspect, photograph and measure your roof, then send a written report.73
DescriptionYour policy decides what is covered. We document what we find and quote the repair.83
DescriptionNext available inspections from [date]. Call or book online in two minutes.75

Because the ad assembles headlines and descriptions from the pool, write each one so that it can sit beside any other without contradicting it. The "your policy decides" sentence appears in only one description, so some impressions will not show it. If your rules require a disclaimer in every ad, put the sentence in every description. Models also like to add a second, softer promise ("peace of mind", "hassle-free"). Cut these, because they claim a result you cannot guarantee. The same wording rules apply to your landing page, and to Facebook creative if you run it.

Call tracking: count the calls that matter, and answer them

Most storm leads arrive by phone, so the phone is where the account is judged. Google's help page on tracking calls to a website number describes dynamically generated Google forwarding numbers that replace your number on the page and show which keywords, ads and campaigns led to calls, at no cost, in eligible countries. A call counts as a conversion only if it lasts longer than a minimum length you set, and the page gives no default for that figure, so you pick one. It can also take up to an hour for ads to be enabled for the conversion action, so set this up well before a storm.

Choose the minimum length from your own calls. Listen to twenty recent ones, or read their notes, and find the duration that separates a wrong number or a salesperson from a real enquiry. If real enquiries run over about 60 seconds in your log, 60 is a reasonable starting threshold, and anything shorter is not counted. Call tracking services such as CallRail list plans from $50 a month, though CallRail's pricing page contradicts itself on minute overage and some allowances, so confirm both with the vendor before buying. Whichever you use, give the office one rule that never changes: a missed call gets a callback within 15 minutes during surge hours.

Answer rate belongs on the same sheet as clicks, because ad spend turns into inspections only at the phone. The first hours after a storm are also when your own receptionist is most stretched. The tutorial on AI receptionists for roofing companies on storm days covers covering the overflow, and roofing storm leads: triage and follow up after hail covers deciding who gets booked first once the calls come in.

One related change to watch: Google's help page says Local Services Ads are moving into Performance Max campaigns with pay-per-lead goals in phases from August 2026, with service-area businesses without storefronts expected in late 2026 and remaining categories in 2027, and that historical performance reports do not carry over. If you buy leads that way too, export your lead and call records before your account moves.

A surge week on paper: what the numbers say

Say the firm from the rules above runs the surge campaign for seven days after a hail event. The figures below are invented to show the arithmetic. The highest single day cost $188, inside the $240 ceiling that twice a $120 budget allows, and the week came to $812.

MeasureSurge week (illustrative)How it is worked out
Spend$812Seven days at a $120 daily budget
Clicks148From the campaign report
Average cost per click$5.49$812 divided by 148
Phone calls31Forwarding numbers on the storm page
Calls answered24 (77%)From the office call log
Form enquiries8Storm page form
Cost per enquiry$20.82$812 divided by 39 calls and forms
Booked inspections1712 from answered calls, 5 from forms
Cost per booked inspection$47.76$812 divided by 17
Crew days committed2.817 inspections at 6 a day

Three readings follow. First, 2.8 crew days is well under the 7-day pause point, so surge stays on. Second, 7 of 31 calls went unanswered, 22.6%, which crossed the 20% rule on at least one day. Answered calls booked an inspection half the time (12 of 24), so the 7 missed calls were worth about 3 or 4 inspections, roughly $167 of the week's spend at $47.76 each. That leak is cheaper to fix than any search-term trimming, so the callback rule is the first thing to enforce. Third, the cost per booked inspection is a number to compare against your own target from the lead-value sum, not against a benchmark. A storm may push costs either way where you work, and the sheet will show you which.

The AI's part in the weekly review is a summary, not a decision. Paste the sheet and ask:

Here is this week's campaign sheet (spend, clicks, calls, calls answered, forms, booked inspections, crew days committed) and my rules card. Report: cost per enquiry, answer rate, cost per booked inspection, and which rules on the card were triggered, quoting the rule. Do not recommend budget changes beyond what the rules say. If a number looks inconsistent with another, say which.

The last sentence earns its keep. Models spot a sheet that says 17 inspections but 24 answered calls and 8 forms and no explanation of the gap. A person then checks the log. They should not take the summary on trust, but it is a quick second pair of eyes at the end of a long day.

A negative that cost more than it saved

Picture a firm that asks an AI for a negative list, pastes all of it in on a Monday morning and does not look at the report again for two weeks. The list contained "free" as a broad negative. Before the change the account booked about 9 inspections a week from baseline searches. Two weeks later it books 4. The search terms report, compared with the month before, shows what vanished: "free roof inspection", which had made up the largest share of calls, no longer appears.

The fix takes minutes. Remove "free", and add exact-match negatives for the specific junk phrases that prompted the idea, such as "free roofing materials". Then add negatives in small weekly batches, with a note of the date and the terms in the sheet, so a drop in calls points at a short list. That is the whole discipline. The other half is the one Google's own help page raises: too many negatives can shrink the customers you reach, so each line needs a reason you can state in a sentence.

A routine for the weeks around a storm

WhenTaskTime
Each surge morningCheck the calendar against the rules card, the answer rate from yesterday and the new search terms; add obvious junk as phrase or exact negatives10 minutes
Each surge eveningUpdate the next free date on the storm page and note any rule triggered5 minutes
Weekly in baselineExport search terms, run the sorting prompt, review the CHECK rows, add a small batch of negatives30 minutes
MonthlyRead every list against converting terms; drop negatives that now block customers; refresh the ad pool45 minutes
Eight weeks before storm seasonRebuild the calendar from last year's jobs, test forwarding numbers, check the storm page on a phone2 hours

Checking the plan before the first hail

  1. Surge and cooldown campaigns are built, reviewed and paused, with their ads approved.
  2. Ceiling costs are worked out from the two-times daily rule and the 30.4-times monthly rule, and you can afford the worst case.
  3. The rules card has real numbers in every bracket, sits at the front desk and names an owner.
  4. Negative lists are separate and named, with singular and plural lines and a match type on every line, and each entry has been checked against your converting terms.
  5. Only the short, safe negatives are at account level.
  6. Every headline is 30 characters or fewer and every description 90 or fewer, after the placeholders are filled, and none promises claims handling, coverage or a result.
  7. A test call to the storm page's forwarding number reaches the office and appears in your tracking.
  8. The storm page loads quickly on mobile data and shows a date that is true today.
  9. Any Local Services Ads data is exported.
  10. The weekly sheet exists, with the lead-value target written at the top.

After your first storm window, ask four questions. Did cost per booked inspection land near your target? Did the answer rate stay under your line? Did the share of spend on terms that never produced a call fall from the 48% in the sample extract? And did the surge switch off before the calendar overflowed? If the answer to any of them is no, the sheet shows which rule to rewrite for next season. Keep that sheet, because it is the nearest thing to a trained account manager the firm owns.

Questions roofers ask about storm-season Google Ads

Should I use Performance Max or Search campaigns for storm response?

This plan uses Search because keyword and negative control are tighter. Performance Max does accept negative keywords, but Google's guidance is to use them only for essential brand safety or for completely irrelevant terms. If you run it, set account-level negatives and watch the placements and search categories it reports.

Do negative keywords still work with AI Max?

Yes. Google's help page says negative keywords are respected with AI Max turned on. Its search term matching needs an automated bidding strategy and finds queries relevant to your campaign beyond your listed keywords, which makes the weekly search-terms review more important, not less.

How many negative keywords can I add?

Google's help pages allow up to 20 negative keyword lists per account with 5,000 keywords each, 1,000 account-level negatives and 10,000 negatives per campaign. Limits matter less than reach: Google warns that too many negatives can shrink the customers you reach, so add them for reasons you can name.

Can I advertise storm damage work honestly?

Yes, if you describe what you do: inspections, photo reports, repair estimates and repairs. Avoid claiming to handle claims, to be a claims expert, or that damage will be covered. Rules on what a roofer may say about insurance differ by place, so have an adviser read your landing page once.

Further reads

Sources: Google Ads Help pages on negative keywords, negative keyword lists, account-level negative keywords, account limits, average daily budgets, location targeting, the search terms report, responsive search ads, AI Max for Search, call conversion tracking and the Local Services Ads transition; CallRail pricing page.

Want a storm-season plan ready before the first hail?

On a 1:1 call we'll look at how your campaigns, phones and crew calendar work together in a busy week, set the triggers for switching campaigns on and off, and decide where AI sorts search terms for you. You leave with a rules card your office can follow.

Book a 1:1 call with me