Skip to main content
PlaybookRoofing· 15 steps · free to use

Google Ads for roofers: the build order

Written for a roofing company owner or the sales manager who runs inspections. Service area, which calls count, keyword buckets, the negative list to load on day zero, ad groups, ad copy inside Google's character limits, how Local Services Ads changes the auction, and the weekly hour that keeps it honest, in the order you would build it.

Free30 minutesNo obligation

The short answer

To run Google Ads for roofers, optimize toward a signed roofing contract — recorded in your roofing CRM (JobNimbus, AccuLynx, ServiceTitan) — rather than toward form fills or booked appointments. A small number of high-value contracts, a long sales cycle and storm-driven spikes. The costliest mistake is optimizing toward inspection requests. Everything below is the build order, in the sequence you would actually work through it.

Written by Ariful Islam — eight years building Google Ads accounts and the conversion tracking underneath them.

Specific to Roofing

Google Ads for roofers: bid on signed contracts, not free inspections

For a roofing company, run Search split into leak and storm repair, replacement, and material or financing searches, with ZIP targeting drawn from where you have signed work. Optimize toward signed contracts from JobNimbus, AccuLynx or ServiceTitan with contract value attached, using booked inspections only until enough contracts import.

You compete with Local Services Ads at the top of the page, regional roofing brands with large budgets, lead-generation sites that resell the same homeowner, and after every storm, out-of-town contractors bidding on the affected ZIP codes. The searches split into two very different buyers: someone with a leak who wants a roofer today, and someone planning a replacement who will compare three or four companies over several weeks.

Structure around that split. Leak and storm repair gets call-first ads and a tight area. Replacement gets its own campaigns, pages for materials such as architectural shingles and metal, a financing page if you offer financing, and a form that is called back the same day. Storm response sits in a separate campaign you switch on for affected ZIP codes and off again on a date, so a two-week surge never becomes the baseline for the main account.

Roofing accounts go wrong at the inspection. A free inspection is easy to book and easy to count, so bidding learns to find people who want one, including price shoppers and homeowners who need a number for their insurer. Carry the click ID and the caller's number from the enquiry onto the CRM contact, import signed contracts with their value, and judge every campaign on contracts over a full sales cycle.

Search terms to start from

  • roof repair near me
  • roof leak repair
  • roof replacement cost
  • metal roof installation
  • storm damage roof repair
  • roofing contractor near me
  • hail damage roof inspection
  • architectural shingle roof replacement
  • roof replacement financing
  • emergency roof tarp service

Negative keywords

  • roofing jobs
  • roofer salary
  • shingles for sale
  • how to fix a roof leak yourself
  • roofing nails
  • home depot shingles
  • roofing calculator
  • roofing supply
  • roof cleaning chemicals

Symptom and fix

Five problems we get called in to fix

  1. 01

    The campaign books plenty of inspections and the close rate keeps falling.

    What is actually happening

    Inspections are the conversion, so bidding finds people who want a free inspection, including price shoppers and homeowners looking for a number to give their insurer.

    What fixes it

    Import signed contracts with value from the CRM and make them the bidding goal as soon as volume allows, with inspections kept as a secondary signal.

  2. 02

    After a storm the account looked brilliant, and every month since has looked like a failure.

    What is actually happening

    Storm volume went into the same campaign and the same baseline as normal demand.

    What fixes it

    Storm response as its own campaign, and storm weeks flagged in the report.

  3. 03

    Google Ads reports conversions JobNimbus cannot find.

    What is actually happening

    Calls and forms count when they happen, but the CRM contact never received the click or the source, so a contract signed weeks later has no link back to the ad.

    What fixes it

    Capture the click ID and the caller's number at the enquiry, carry them onto the CRM contact, and send the signed contract back as an offline conversion.

  4. 04

    Repair calls are cheap, replacement leads are expensive, and the budget keeps drifting to repairs.

    What is actually happening

    One campaign, one bid strategy and flat conversion values: a repair and a replacement count the same.

    What fixes it

    Separate campaigns, and contract value passed back so the account can see what a replacement is worth.

  5. 05

    Leads arrive from towns the crews will not drive to.

    What is actually happening

    A radius drawn from the office, presence-or-interest targeting, or storm coverage that was never switched back.

    What fixes it

    ZIP targeting from where contracts are signed, presence-only targeting, and a storm campaign with an end date.

Read this before step one

Google Ads does not fail on its own. It fails on top of three things that were already broken.

  1. 01

    Conversion tracking that reports the truth

    If Google is counting form fills rather than a signed roofing contract, every bid it makes is aimed at the wrong outcome. First-party, server-side, joined back to your own system — not a browser tag that a consent banner or a cookie policy can silence.

  2. 02

    A landing page that answers the search

    One page for every ad group means the page answers a general question when the search asked a specific one. Google scores that as poor landing page experience and charges you more per click for it.

  3. 03

    The right campaign for the goal

    Performance Max on a broken signal spends faster and explains less. Search first, on a conversion you trust, then expand — in that order, because the order is not a preference.

Get all three right and the playbook below compounds. Get the first one wrong and everything below is executed perfectly in the wrong direction — which is the single most expensive thing that happens in this channel.

Not sure which of the three is wrong on your account? Send it over and we will tell you what it is actually reporting.

Free Google Ads + call tracking audit

What the free audit covers for roofers

  • The conversion bidding learns from: a signed roofing contract
  • Whether your roofing CRM (JobNimbus, AccuLynx, ServiceTitan) reports back to Google Ads
  • The costliest mistake: Optimizing toward inspection requests
  • Search terms against 9 starter negatives
  • Call tracking: which calls count, and which are counted twice
  • Your account against the 15-step build order below

How it works

  1. 1Pick a 30-min slot
  2. 2Live session with Ariful
  3. 3Written audit in 24 hours
Get my free Google Ads + call tracking audit

Free30 minutesNo obligation

Decide what counts as a conversion before you spend anything

half a dayonceneeds admin access to the system that records the money

For roofers the conversion that matters is a signed roofing contract, and it lives in your roofing CRM (JobNimbus, AccuLynx, ServiceTitan) — not in the ad platform. Google can only optimize toward what you send it, so whatever you pick here decides what the algorithm spends the next ninety days chasing. Pick the wrong one and every later step in this playbook is executed perfectly in the wrong direction.

This is the step we get called about most. If you do not have a developer for it, that is the normal situation rather than the exception — it is most of what we do, and it is worth fixing before the spend rather than after.

Where this stalls

Everyone agrees the real conversion matters and then optimises to form fills anyway, because form fills are the number that is already there. The wrong choice here is invisible for ninety days and then expensive.

Google will spend ninety days chasing whatever you tell it to count. That decision is made here, in five minutes, before any money moves.
WHAT THE BIDDING ALGORITHM LEARNS FROMSearchthe query is typedClickyou are charged hereForm or callwhat Google counts todayroofing CRMwhere money is decidedthe outcome, sent back as the conversionWithout the dashed returnGoogle optimizes toward step three and buys more form fills, cheaper —including every one that never becomes a signed roofing contractIt reports that as an improvement, because by its own measure it is one.
The full path runs through your roofing CRM (JobNimbus, AccuLynx, ServiceTitan). Google sees only as far as step three unless you build the return, and it cannot want what it cannot see.
  1. 01Write down the single event that means money: a signed roofing contract.
  2. 02Find where that event is recorded today. For most of this industry that is your roofing CRM (JobNimbus, AccuLynx, ServiceTitan).
  3. 03Check whether that system can be joined back to a click — a GCLID field, an email, or a phone number captured at the form.
  4. 04If it cannot, fix that before you launch. An account optimizing toward form fills is optimizing toward the wrong thing the moment the form is easy to fill.
  5. 05Set the conversion action to the real one, and mark every softer action as secondary so it reports but does not bid.

Turn off the three defaults before you turn the campaign on

30 minutesonce

Google enables these on every new Search campaign, and none of them are keyword decisions — they are switches on the settings screen that decide where the money goes before a single keyword applies. Everything else in this playbook operates on whatever is left after they have taken their cut, so a reader who skips this step spends the rest of it optimizing a remainder.

For Roofing · Target ZIP codes drawn from where you have signed contracts, not a radius from the office, and keep storm response in its own campaign so it can be switched off on a date.

Where this stalls

Half an hour of switches that decides where a year of budget goes — and it is the screen everyone skips because it looks like boilerplate.

Three switches decide where the budget goes before a single keyword is involved. All three are on.
YOUR DAILY BUDGET, BEFORE ANY KEYWORD APPLIESThe searches you meant to buySearch partnersOn by default. Your ads run on sites that are not Google.Display expansionOn by default. A Search campaign starts buying banners.Presence or interestThe location default. People merely interested in your area.Turn all three off before launch. Add them back later, separately,when you can see what each one contributed on its own.
All three are enabled by default on a new Search campaign, and none of them are keyword decisions — they are switches on the settings screen. The proportions here are illustrative; the defaults are not.
SettingWhat Google defaults it toSet it to
Networks — search partnersIncluded. Your ads run on sites that are not Google.Off at launch. Add it back later, as its own campaign, when you can see what it contributed on its own.
Networks — display expansionIncluded. A Search campaign quietly starts buying banner placements.Off. Display is a different intent and a different campaign; mixing them makes both unreadable.
Locations — targetingPresence or interest — people merely interested in your area count.Presence only. Under Location options, choose people in or regularly in your targeted locations.
AudiencesObservation, which measures without restricting.Leave on observation deliberately, not by accident. If you meant to narrow, you have to switch the mode.
BiddingMaximize clicks, or a target set before any data exists.Maximize conversions on the real conversion action. A target set on day one is a guess the algorithm will honor.

Draw the service area around the jobs that pay, not a circle on a map

1–2 hoursonce, then each season

Roofing contracts are large enough to justify a wide area for replacements, but every inspection is a site visit by a salesperson, and an inspection that never signs costs the drive and the afternoon. Draw the replacement area from where you have signed contracts, keep repair calls closer, and decide in advance how far you will go after a storm, because the storm will not ask.

Where this stalls

The radius gets drawn from the office instead of from where the profitable jobs are, and nobody revisits it once the search terms report starts showing towns the crew refuses to drive to.

  1. 01Map signed contracts from the CRM by ZIP code before choosing targets
  2. 02Exclude areas where your license or permits do not apply
  3. 03After each storm, review clicks by location before widening the area
Replacement campaigns
Counties or ZIP codes where you have signed contracts before, wider than repair.
Repair and leak campaigns
Core ZIP codes a crew reaches within a day or two.
Storm response
A separate campaign for storm-hit ZIP codes, switched on and off on purpose, so storm volume never rewrites the main campaign's targeting or learning.

Decide which calls count before Google counts all of them

2–3 hoursonce, then a monthly listenneeds access to the call tracking account and the job system

Roofing leads split between calls and forms more evenly than in emergency trades: a leak produces a call, a replacement often produces a form at night. Both have to count, and neither is the sale. The call conversion should mark a qualified enquiry, and the signed contract, imported from the CRM, should be what bidding learns from.

Where this stalls

Every call gets counted because that is the default, and by the time anyone listens to the recordings the bidding has spent a quarter learning from wrong numbers and supplier calls.

  1. 01Canvassers and storm-chasing contractors offering subcontract work
  2. 02Lead sellers and marketing agencies calling the ad number
  3. 03Insurance adjusters and suppliers using the number in the ad
  4. 04Out-of-area callers in the days after a storm makes the news
  5. 05Homeowners already in the CRM calling about an open job
Count a call when
The caller has a roof problem or a replacement project at an address inside your service area and books, or tries to book, an inspection.
Minimum duration
Start at 90 seconds. A real roofing enquiry includes an address, the problem and a time for an inspection, which rarely fits in less. Check it against recordings and move it if your booked calls say otherwise.
After hours
Replacement shoppers fill in forms at night, so a fast morning callback matters more than overnight phone coverage. In storm weeks, an answering service that books inspections is worth paying for.
Double counting
When a form and a call create two contacts for the same homeowner, count the person once. Use one call source in Google Ads, and import the contract against the original click rather than every touch.

Build the keyword list in four buckets, not one

4–6 hoursonce, then revisited

One flat keyword list is why most accounts in this vertical cannot tell which half of the budget works. Sorting terms by the intent behind them means you can bid, write and judge each group on its own terms — a problem-aware search and a competitor search convert at rates that have nothing to do with each other, and averaging them hides both.

Where this stalls

The list is easy to build and hard to bucket. Sorted by volume instead of by intent, it produces an account you cannot read six weeks later.

BucketTerms to build on
Leak and storm repairWater coming in or shingles on the lawn: urgent, call-first, and judged on how fast a crew can get there.
  • roof repair near me
  • roof leak repair
  • emergency roof repair
  • storm damage roof repair
  • missing shingles repair
  • emergency roof tarp service
  • hail damage roof repair
ReplacementFewer searches, the highest contract values and a sales cycle of weeks; these deserve their own budget and same-day form follow-up.
  • roof replacement near me
  • new roof cost
  • roof replacement quote
  • shingle roof replacement
  • replace roof before selling
  • full roof replacement
MaterialsBuyers who already know what they want; strong for pages on a single material and for higher-value jobs.
  • metal roof installation
  • architectural shingle roof
  • standing seam metal roof
  • tile roof replacement
  • flat roof replacement
  • impact resistant shingles
Cost, financing and insuranceResearchers weighing the price or the claim; good for financing and claim-process pages, slower to sign.
  • roof replacement cost
  • roof financing
  • does insurance cover roof replacement
  • roof inspection for insurance claim
  • how much is a new roof
  • roof replacement payment plans

Match types, and why exact has not meant exact since 2021

1 houronce

Exact match includes close variants — misspellings, plurals, reordered words, dropped function words. Phrase match now behaves roughly like the old broad-match-modified. Broad match reaches as far as Google judges useful, which with a good conversion signal is genuinely valuable and without one is an open tap. Start narrow, prove the signal, then widen — in that order, because widening is reversible and a mistrained bidding algorithm is not.

For Roofing · Broad match on 'roof' drifts into car roofs, shed kits and shingle prices. Keep replacement and metal terms on exact and phrase until signed contracts are importing.

Where this stalls

Broad match added early, before the conversion signal is trustworthy, teaches the algorithm the wrong lesson faster than any other single decision in the account.

WHAT EACH MATCH TYPE LETS INBroadroof repair near mePhrase"roof repair near me"Exact[roof repair near me]That search, plus plurals, misspellings,reordered words and dropped function words.Not literal. It has not been since 2021.Phrase addswordings you neverwrote, same meaning.Broad addswhatever Google judgesrelated. No ceiling.ALSO IN THE OUTER BANDroofing jobsroofer salarySame cost per click as thesearches you meant to buy.Launch on the inner two. Widen only once the conversion signal is one you trust.
Each match type contains the one inside it and adds a band you did not choose. Exact has included close variants since 2021, so even the innermost box is not literal — and everything in the outer band is bought at the same cost per click as the searches you meant.
  1. 01Launch on exact and phrase only. You are buying data you can read, not volume.
  2. 02Give broad match its own campaign when you add it, so its spend and its search terms are separable from everything else.
  3. 03Keep 5 to 10 tightly themed keywords per ad group. When you want an eleventh, that is usually a signal to build another ad group instead.
  4. 04Do not add the same keyword in three match types in one ad group. Google picks by relevance, not by your match type ladder, and you are only making the report harder to read.

Load the negatives before the first click, not after the first invoice

2 hoursthen 20 minutes weekly, forever

Every vertical has a set of searches that look commercial and are not. In roofers those are job seekers, students, people looking for free help, and DIY researchers. Broad and phrase match will find all of them for you. Add this list at the account level on day zero — the first week of an unfiltered account is the most expensive week it will ever have.

Where this stalls

The starting list is the easy part. The list that matters is the one you build from your own search terms report every week, and that is the habit almost nobody keeps past month two.

Account-level negatives — paste into Shared library
  • roofing jobs
  • roofer salary
  • roofing apprenticeship
  • osha roofing training
  • diy
  • how to patch a roof
  • how to install shingles
  • shingles for sale
  • roofing nails
  • roofing supply
  • abc supply
  • home depot
  • lowes
  • roofing calculator
  • roof cleaning chemicals
  • roofing software
  • roofing business for sale
  • car roof
  • rv roof
  • shed roof kit

One ad group per intent, and no more than you can write ads for

3–4 hoursonceneeds a landing page per intent

Ad groups exist so the ad can match the search. The moment a group holds two intents, the ad has to be vague enough to cover both, and vague ads lose the auction on relevance before budget ever enters the picture. Build these groups, each with its own ads and its own landing page.

Where this stalls

The structure is quick to draw and slow to serve: every ad group you create needs its own ads and its own page, so the build you sketched in an afternoon turns into a fortnight of copywriting.

WHAT TO BUILDSearch campaignbudget · location · schedule live hereRoof leak repair5–10 keywords, one intentits own responsive adits own landing pageStorm and hail dama…5–10 keywords, one intentits own responsive adits own landing pageRoof replacement5–10 keywords, one intentits own responsive adits own landing pageWHAT MOST ACCOUNTS HAVEOne ad group — Roof leak rep… · Storm and hai… · Roof replacem…One ad covering all of them. One page answering none of them.
Each ad group carries its own ad and its own landing page, so both can answer one search. Collapse them and the single ad has to speak to every intent at once — which is the same as speaking to none of them.
  1. AG01

    Roof leak repair

    Urgent calls from water damage; call-first ads, the tightest area, and copy that names the leak rather than the roof.

    • roof leak repair
    • roof repair near me
    • emergency roof repair
    • roof leaking after rain
    • roof leak repair cost
  2. AG02

    Storm and hail damage

    Switched on for affected ZIP codes after an event, with its own budget cap and an end date.

    • storm damage roof repair
    • hail damage roof repair
    • roof inspection after storm
    • missing shingles repair
    • emergency roof tarp service
  3. AG03

    Roof replacement

    The contract the business runs on; quote-first copy, reviews on the page, and same-day callback on every form.

    • roof replacement near me
    • new roof cost
    • roof replacement quote
    • full roof replacement
    • shingle roof replacement
  4. AG04

    Metal roofing

    A distinct product and buyer with higher contract values; its own page and copy.

    • metal roof installation
    • standing seam metal roof
    • metal roof cost
    • metal roofing contractor
    • metal roof over shingles
  5. AG05

    Financing and insurance

    Buyers held back by price or a claim; pages that explain financing or how you work with adjusters.

    • roof financing
    • roof replacement payment plans
    • insurance roof replacement
    • roof inspection for insurance claim
    • how much is a new roof

Responsive search ads that the landing page can actually back up

3–4 hoursonce, then rewritten

Google rewards assets that match the search and the page behind it. It penalizes — and increasingly disapproves — copy that promises something the page does not deliver. Every line below is written to be provable on arrival. Character counts are shown because assets over the limit are rejected at upload, which is where most copied-from-a-blog ad copy dies.

Where this stalls

Copy that is fine everywhere else is a policy problem here. In regulated verticals the claim has to be provable on the page it lands on, and a disapproval mid-flight stops the ad group dead.

Headlines · max 30 characters
  • Roof Leak Repair16/30
  • Roof Replacement Quotes23/30
  • Storm Damage Inspections24/30
  • Metal Roof Installation23/30
  • Written Estimates Provided26/30
  • Ask About Roof Financing24/30
  • Licensed in [STATE]19/30
  • We Work With Your Adjuster26/30
  • Local Roofers in [City]23/30
  • Book a Roof Inspection22/30
Descriptions · max 90 characters
  • Roof leaking? Call to schedule a repair visit from a local roofing crew.72/90
  • Planning a new roof? Get a written replacement estimate and compare materials.78/90
  • Hail or wind damage? Book an inspection and get a written report of what we find.81/90
  • Metal and architectural shingle roofs installed by our own crews. Financing available.86/90

What Local Services Ads takes from this auction, and when to run both

1 hourthen monthly

Local Services Ads take the urgent end of roofing searches, leaks and storm damage, and charge per lead. Search is where you reach the replacement buyer who compares several roofers, reads about materials and financing, and wants a page before calling. After storms both channels fill with the same homeowners, so match leads to contacts in the CRM before deciding which channel earned the contract.

Where this stalls

LSA and Search are reported in two different places, so the same customer gets counted twice and both channels look better than the bank account does.

Leak and storm repair
LSA often wins these first. Keep Search narrow here and judge it on contracts LSA did not already produce.
Replacement
Where Search is strongest: material, financing and replacement pages with forms, followed up the same day.
Storm weeks
Cap both channels at what the crews can inspect, or the budget buys calls the schedule cannot take.

Budget to the demand curve, and only bid on hours someone answers

1 hourthen before each season

Roofing demand follows the weather twice. Storms create urgent repair and claim work in bursts, and the installation season, roughly spring through fall in much of the country, decides when replacements go on. Buyers still research replacements in the quiet months, which is when the schedule has room to book next season's work.

Where this stalls

Budgets get raised the week demand arrives, which is the week the account has the least room to learn and the office has the least capacity to answer.

Ramp
Keep replacement campaigns running through the off-season at a budget the sales team can follow up on, raise budgets ahead of the installation season, and treat storm response as its own campaign with its own cap.
Dayparting
Forms arrive at night and calls during the day. Bid for calls on the hours the office answers, and keep form-driven replacement campaigns running around the clock with a next-morning callback rule.

Why the advertiser bidding the most is often third

1 hourto understand, then ongoing

Position is not bought, it is earned and then paid for. Google ranks you on your bid multiplied by how good it expects your ad and landing page to be, plus your assets — so a relevant advertiser at half the bid outranks a vague one, and then pays less per click at the same position. This is the mechanism underneath everything above: tight ad groups and honest ad copy are not tidiness, they are the discount.

For Roofing · After a storm, out-of-town contractors and lead sellers bid on the affected ZIP codes and prices jump. Your price in those weeks is set by them; in quiet months it is set by regional brands.

Where this stalls

Quality is treated as a score to chase rather than a diagnostic to read, so people optimise the number instead of the mismatch it is pointing at.

Position is not bought. A relevant advertiser at half the bid outranks a vague one — and then pays less for the click.
AD RANK = BID × AD QUALITY27303636AD RANK$4.00bid9/10qualityAdvertiser ATop of page30AD RANK$6.00bid5/10qualityAdvertiser BSecond27AD RANK$9.00bid3/10qualityAdvertiser CThirdQuality wins the position and then discounts the click — you pay the rank below you ÷ your own quality.
Height is where the ad lands. Width is what the advertiser bid. C bids more than twice what A bids, and comes third — then pays more per click for the worse position, because price is set by rank divided by your own quality. The numbers are illustrative; the reversal is the point.
  1. 01Read Quality Score as a diagnostic, not a target. The 1 to 10 number is not what runs the auction; the three components underneath it tell you which of ad copy, keyword grouping or landing page is dragging.
  2. 02Ad relevance low? The ad group holds more than one intent. Split it.
  3. 03Landing page experience low? The page is not answering the search — usually because one page is serving every ad group.
  4. 04Expected CTR low? Your ad is not the one being clicked. Rewrite the headlines against the actual search terms, not against the keyword.

Bidding, and the point at which you are allowed to change it

2 hoursthen monthly

Start on Maximize Conversions with booked inspections as the primary conversion, because signed contracts are too few at first for bidding to learn from. Import signed contracts with their value from the CRM as soon as they can be sent, inside the 90-day import window, and move replacement campaigns to value-based bidding once enough have imported. Insurance and retail jobs close on different timelines; tag them so each value arrives against the right click. Smart bidding is a data problem before it is a strategy problem: with thin or wrong conversion data it will confidently optimize toward noise, and it does that faster than a manual account can lose money.

For Roofing · Bid on booked inspections only until signed contracts import from JobNimbus, AccuLynx or ServiceTitan, then move replacement campaigns to value-based bidding and judge them over a full sales cycle.

Where this stalls

A target set before the data exists is a guess the algorithm will honour to the letter.

What to judge, and when you are allowed to judge it

2 hoursmonthly review

Most accounts are killed or rescued on evidence that could not have meant anything yet. The bidding algorithm is fitting a model, and a model fitted on two weeks of data is fitted on noise. This is the shortest honest schedule: what to look at each stretch, and — more usefully — what to ignore.

For Roofing · Expect few signed contracts in the first month even when the campaigns are right. Judge month one on qualified inspections and month three on contracts.

Where this stalls

Accounts get killed on week-three evidence that could not have meant anything yet — and the replacement starts its own learning phase from zero.

The first month buys data. The second corrects for it. The third is the first one worth judging.
  1. 01Weeks 1–2 — watch search terms and nothing else. Add negatives daily. Cost per conversion at this stage is not a number, it is a rumor.
  2. 02Weeks 3–4 — the first real read on which ad groups get impressions. Pause nothing on conversion volume yet; fix relevance where the ad and the query disagree.
  3. 03Weeks 5–8 — conversion data starts to mean something. If you are near thirty conversions in thirty days, a target becomes an option. If you are not, the answer is a narrower footprint, not a lower target.
  4. 04Weeks 9–12 — the first period worth judging on cost per outcome. Compare against your own system, not the Google column, and expect the two to disagree.
  5. 05Only now: consider broad match, Performance Max, or a second market. Each of them needs the signal you spent the quarter building.

The weekly hour that decides whether this works

1–2 hoursevery week, forever

An account left alone drifts toward the cheapest clicks it can find, because that is what the system is built to do when nobody corrects it. This is the shortest routine that keeps it honest. It takes about an hour and it is the difference between an account that compounds and one that plateaus at month three.

For Roofing · Compare inspections booked with inspections that happened, by campaign. A campaign that books many inspections that never happen is buying the wrong searches.

Where this stalls

This is the one that decides whether any of the above compounds, and it is the first thing to go the week you get busy. An account left alone drifts toward the cheapest clicks it can find, because that is what it is built to do when nobody corrects it.

  1. 01Search terms: roofing jobs, shingle prices, DIY patching and supply-house searches
  2. 02Inspections booked by campaign, and how many actually happened
  3. 03Contracts signed and average contract value by campaign, from the CRM
  4. 04Calls and forms from outside the service area, especially in the week after a storm

When Google Ads is the wrong answer here

Three situations where running this playbook will lose money. Read them before you fund the account, not after.

  • Your crews are booked out for the season. Leads you cannot inspect for weeks go to the roofer who can come this week.
  • You cannot follow a lead past the inspection in your CRM. Without signed contracts the account will optimize toward inspections, which is the expensive mistake this page is about.
  • You mainly do commercial or new construction work. Residential search demand is the wrong audience for bid work.

Questions this raises

Should roofers optimize Google Ads to inspections or signed contracts?
Signed contracts, as soon as you have enough of them importing from the CRM. Inspections are a reasonable starting signal, but a campaign optimized to inspections finds people who want free inspections, not people who sign.
How should roofers handle storm season in Google Ads?
Run a separate storm campaign for the affected ZIP codes with its own budget cap and an end date, keep the main campaigns steady, and flag storm weeks in reporting so they do not become the baseline.
How much should a roofing company spend on Google Ads?
Start from the contracts the sales team can close in a month, the average contract value in your CRM, and the cost per signed contract you can afford. Fund enough to produce that many inspections at your current close rate for a full sales cycle, and cap storm campaigns separately.
How long before we know whether roofing Google Ads work?
Longer than in emergency trades, because contracts sign weeks after the click. Read inspections in the first month, inspection-to-contract rates in the second, and signed contracts by campaign from the third, comparing against the CRM rather than the Google Ads column.
Should roofers use Performance Max?
Only after Search campaigns are judged on signed contracts. Optimized to inspections, Performance Max finds the cheapest inspection requests across placements you cannot separate. With contract values importing, it can be tested on replacement and judged on contracts it adds.

What this costs you, in hours

Every step above is doable. Together they are a project with a tail. Nobody tells you this part, so here it is before you start rather than in month three.

WHAT RUNNING THIS YOURSELF COSTSSetup, once25–32 hrsEvery week, forever3–4 hrsThat weekly hour, over a year156–208 hrsNone of that is the ad spend. That is only the time.Estimates from our own builds — your first pass will take longer than your fifth.
Added up from the steps above, at the pace someone who has done it before works. Your first pass will be slower. These are estimates from our own builds, not a benchmark — but the shape is not in question: the setup is a project and the upkeep never stops.

So what should you actually do with this?

Three honest options. The first one is genuinely fine for a lot of businesses, and we would rather you picked it knowingly than drifted into it.

Run it yourself

Good if you have the hours and someone technical

  • 25–32 hours to build, then 3–4 every week
  • You end up understanding your own account, which is worth real money later
  • The measurement step still needs a developer
  • Your mistakes are paid for at auction prices while you learn

Hire a general agency

Good if you want it off your desk this month

  • Fast to start, and most are competent at the campaign work
  • Usually optimizes toward whatever is easy to count — the form fill, the booked call
  • Reports come from the ad platform's own numbers
  • The measurement problem stays yours, because it lives in your systems

Work with us

Good if the reporting has stopped matching reality

  • We build the measurement first — first-party, server-side, joined back to your roofing CRM (JobNimbus, AccuLynx, ServiceTitan)
  • Then we run the account on a conversion we can both check
  • Reporting is against your numbers, not the Google column
  • Eight years of this, and the tracking and the media are the same team

We are not going to promise you a number. Anyone who quotes you a return before seeing what your account currently reports is guessing, and the guess is always flattering. What we will tell you, for free and before any of this becomes a conversation about money, is what your account is actually measuring today.

Or we run it for you

Eight years of Google Ads, on top of tracking that reports the truth.

Everything above is doable, and none of it is the hard part — the hard part is doing it every week for a year while running the business it is meant to fill. That is the 3–4 hours a week you just read about, on top of the 25–32 to build it.

Most agencies will run the campaign and take your word for what a conversion is. We build the measurement first — first-party, server-side, joined back to your roofing CRM (JobNimbus, AccuLynx, ServiceTitan) — and then manage the account on a signal we can both trust. It is the same reason the playbook above starts with the conversion rather than the keywords.

  • Account build or rebuild, structured the way this page describes
  • Conversion tracking wired to your roofing CRM (JobNimbus, AccuLynx, ServiceTitan), not to form fills
  • Server-side, first-party tagging so the signal survives the browser
  • Landing pages that answer the ad, one per intent
  • Monthly reporting against your own numbers, not the Google column
  • The search terms report worked every week, not quarterly

The first conversation is a read of what your account is actually reporting. No deck, and nothing to sign to get it.

  • Agency since 202210-person team
  • 300+ clients1,000+ projects
  • CertifiedGoogle Ads · GA4 · Meta