The challenge
The contractor was spending steadily on Google Ads but couldn't connect that spend to revenue. Leads were coming in, but too many were price-shoppers and out-of-area requests, and the bulk of real inquiries arrived by phone — none of it tracked back to specific campaigns.
On top of that, demand swung hard with the weather. A flat budget meant overspending in slow weeks and missing the rush during heat waves and cold snaps, while well-funded competitors and national lead-aggregators pushed up the cost of every click.
Our strategy
We treated the account as a pipeline accountable to booked jobs, not clicks.
- 01
Fixed tracking first
We implemented call tracking and clean conversion tracking so every lead — form or phone — was attributed to a campaign, keyword, and ad.
- 02
Launched LSAs alongside Search
We added Google Local Services Ads to capture pay-per-lead demand above the search results, and disputed invalid leads to protect spend.
- 03
Tightened targeting & negatives
We focused budget on the contractor's most profitable job types and service area, with disciplined negative-keyword hygiene to cut price-shoppers.
- 04
Optimized to booked jobs by season
We optimized toward cost per booked job and flexed budget with seasonal demand, scaling into peaks and pulling back when demand softened.
The results
With tracking and structure in place, the program shifted from generating clicks to generating booked work. Headline figures below are placeholders pending the client's verified numbers.
- Clear attribution from ad click or phone call through to booked jobs
- A lower, more predictable cost per booked job
- Improved lead quality from tighter targeting and lead disputes
- Budget that flexed with seasonal demand instead of fighting it
