[ Case study ]
The account reported 90 leads a month; the office counted 22. Form spam, double-counted calls, and unverified conversion actions made the dashboard fiction — and bidding algorithms were optimizing toward the fiction at rising cost.
CLIENT a regional roofing contractor — FOCUS Rebuild conversion actions from the office's truth
Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.
A regional roofing contractor books work through an office of four — phones answered by people who know the difference between a leaking roof and a curious browser. Estimates are scheduled from those calls, crews run from two depots, and storm season can double the phones inside a week. Google Ads had run for years under a previous agency that reported leads monthly; the office knew the numbers were wrong the way anyone who answers the phones knows, but had no mechanism for proving it.
The account reported 90 leads a month; the office counted 22. Form spam, double-counted calls, and unverified conversion actions made the dashboard fiction — and bidding algorithms were optimizing toward the fiction at rising cost.
We proposed starting at the office, not the dashboard. First we wrote down what the office actually counts — a call that books an estimate, a form that's a real homeowner — then rebuilt each conversion action to match that definition with consent settings applied correctly. Spam filtering went in ahead of the conversion column so junk never reached the numbers. Only then did smart bidding restart, with target cost per action set from the office's real close economics rather than the platform's fiction.
Just as important is what we ruled out, and why:
Each conversion action was redefined to match what the office actually counts — qualified calls booked to estimate, verified form fills — and consent settings applied correctly.
Form submissions gained verification and call tracking gained qualifying prompts, so junk stops reaching the conversion column.
Smart bidding restarted on the verified data with target CPA set from the office's actual close economics.
Delivered by the growth pod — paid search specialist over 5 weeks, with working increments reviewed with the client every week.
Obstacle
The consent banner on the site blocked conversion cookies for a sizable share of visitors, which the old setup had quietly ignored — the rebuilt tracking showed fewer conversions than expected from day one.
Handled: We configured Consent Mode properly so modeled conversions covered the consented gaps, and compared a week of tracked-versus-booked estimates before accepting the new baseline as real.
Obstacle
The office pushed back on the qualifying prompt — 'press one for a roofing estimate' — worried that panicking customers would hang up rather than press anything.
Handled: We softened the wording, watched a week of call logs with the office listening in, and kept it once the junk-call share dropped without losing genuine callers.
Obstacle
A storm cell crossed the service area during the re-bid transition, tripling call volume and making any before-and-after read worthless for that stretch.
Handled: We excluded the storm week from the baseline, set bid caps that held during the surge, and the office — not the algorithm — stayed the record of what that week booked.
The headline: reported leads per month — down on paper, up in reality: office-confirmed qualified estimates rose from 22 to 31 — 90 → 38, read from CRM booking records vs platform conversion report. A second check: cost per office-confirmed estimate at −41%.
The office trusts the dashboard because it finally describes their week. They stopped keeping the grudge list — spam dies in the prompt now, not in their memory. Bid changes get explained in their counting language, and the office manager forwards the weekly summary to the owner without translating it first. When storms hit, everyone knows the surge week is excluded from the baseline rather than pretending it proves anything. The relationship between the ads and the office switched from adversarial to routine.
The result was read from CRM booking records vs platform conversion report against the pre-engagement baseline over the stated window, with a guardrail check on cost per office-confirmed estimate. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.
What we would do differently
We would have interviewed the office about their counting rules on day one — their definition of a 'lead' was the spec document.
[ Related service ]
[ Related builds ]
70% 34%Revenue share of the single best ad, replaced by a portfolio of five proven concepts
0.8s 2.3sAverage 3-second hold rate on ads (proxy for hook survival), cohort over cohort
[ Next step ]
Next case study