Key takeaways
- Cost per lead is the number Google can see. Cost per booked inspection and cost per signed roof are the numbers that decide whether ads pay.
- Join the ad account to your roofing CRM, or the report you get is one nobody can check.
- Measure over 90 days, because insurance jobs often sign weeks after the first call.
- Have a storm campaign ready before spring, so you are not bidding blind against every crew that arrives after hail.
Google Ads cost per lead tells a roofing company what a phone call cost. It does not tell you what a booked inspection or a signed roof cost, and those are the numbers that pay the crews. Work them out from your own ad account and CRM, because no published benchmark knows your market, your close rate or your storm year.
Cost per lead vs cost per booked inspection
Cost per lead counts everyone who called or filled in a form. Cost per booked inspection counts only the homeowners who agreed to put a ladder against the house. The gap between the two is where most roofing ad budgets leak, and it is invisible in a standard ads report.
That gap is the verification problem. Google records a conversion when a call passes the length you set or a form is submitted (conversion tracking). It cannot tell a homeowner with a stained ceiling from a supplier, a current customer asking about a warranty, or a crew looking for work. An agency that reports "cost per conversion" may be reporting all of them.
| Stage | Who records it | What it can hide |
|---|---|---|
| Lead | Google Ads | Spam forms, repeat callers, vendors, current customers |
| Booked inspection | Your office, in the CRM | Renters, no-shows, out-of-area addresses |
| Completed inspection | Your inspector | Damage too light for a claim, price shoppers |
| Signed job | Your CRM and the contract | Weeks of delay while a claim works through the adjuster |
Only the last three rows tell you what you bought.
From cost per lead to cost per booked inspection
- Leads you pay for Where it leaks: Spam and wrong numbers
- Real inquiries Where it leaks: Calls nobody answers
- Conversations Where it leaks: Quoted, never followed up
- Booked inspection Your real number: cost per booked inspection
Calculating your number
- Choose a 90-day window. Retail repairs sign in days. Insurance replacements can wait weeks for an adjuster meeting and a scope. A shorter window undercounts the jobs your ads actually won.
- Pull spend by campaign. Keep repair, replacement and storm campaigns separate, because each has a different job value.
- Count booked inspections from the CRM, by lead source. Use JobNimbus, AccuLynx or whatever roofing CRM you run, not the conversion column in Google Ads. If source is not recorded on every lead, fix that before anything else.
- Count signed jobs and the gross profit on each. Split retail from insurance work if your margins differ.
- Divide spend by each count. That gives cost per lead, cost per booked inspection and cost per signed job.
- Set a ceiling from your own margin. Multiply the gross profit on a typical signed job by the share of inspections you close. That is what a booked inspection is worth to you. Decide how much of it you will spend to win one.
A worked example, with made-up round numbers. These figures are hypothetical, chosen for easy math. They are not a benchmark for any market.
| Line | Example |
|---|---|
| Ad spend over 90 days | $9,000 |
| Leads | 90, so $100 per lead |
| Booked inspections | 45, so $200 per booked inspection |
| Signed jobs | 12, so $750 per signed job |
| Gross profit per signed job | $4,000 |
| Close rate from inspections | 12 of 45, a little over one in four |
In this example a booked inspection is worth roughly $1,070 in gross profit, so paying $200 for one leaves plenty of room. Cut the close rate to one in eight, and the same $200 inspection eats far more of the profit. That is why the close rate matters as much as the click price.
Why costs rise around spring and summer storm seasons
Costs rise in storm season because more advertisers bid on the same homeowners at the same moment. After hail or high wind, local roofers raise budgets, crews from outside the area arrive and start bidding, and lead sellers buy the same searches to resell. Search volume climbs too, and so do the junk searches that ride along with it.
Two habits make it worse. Owners turn on automated bidding with no booked-inspection data behind it, so the system chases the cheapest calls, not the best ones. And they add ZIP codes far outside their normal map because the storm hit there, then pay for leads they cannot serve well.
Plan budgets by month instead. Keep a storm campaign and a storm landing page built and paused, ready to switch on for the areas you actually serve within hours of an event, and let search, reviews and referrals carry more of the slower months.
Lowering cost per booked inspection
The cheapest booked inspection usually comes from fixing what happens after the click, not from a lower bid.
- Answer every call. A missed call from a paid click is the most expensive lead you buy. An instant text-back while the crew is on a roof saves many of them. See missed-call text-back for roofing companies.
- Cut the waste. Block job seekers, material shoppers and car-roof searches with a roofing negative keyword list.
- Send each campaign to its own page. A leak search should land on a repair page with a phone number at the top, and a hail search on a storm page that explains your inspection and the claim process. The landing page guide shows the layout.
- Feed outcomes back to Google. Import booked inspections and signed jobs from your CRM as conversions, so bidding learns from roofs, not calls (importing conversions).
- Track calls by campaign. Use Google's call reporting or a tracking number per campaign, so you know which search brought each homeowner (call tracking).
How VETS Growth Marketing helps
We connect your Google Ads account to your roofing CRM, so every booked inspection and signed job is counted against the campaign that produced it. Then we work through the fixes in priority order, each with a date. The account stays in your name, and our reports show cost per booked inspection and cost per signed roof, the numbers you can check against your own job board. Bring last season's ad spend to a growth consultation and we will work out your real numbers together.
Sources
- About conversion measurement, Google Ads Help
- Set up tracking calls to a phone number on a website, Google Ads Help