A multi-location contractor in Illinois, running Google Ads and Meta across several markets over twelve months.

The interesting part is not the totals. It is that the account scaled from a quiet winter into peak season without the cost per lead running away, which is the point at which most contractor accounts come apart.

The problem

Contracting demand is seasonal and multi-location contracting is seasonal several times over, because each market peaks slightly differently. The usual failure is to budget flat across the year — which overspends against low intent in winter and caps exactly when every click is worth most.

Scaling into that peak is where efficiency normally breaks. More budget chasing the same keywords pushes you up the auction and into looser matches, and cost per lead climbs faster than volume does.

What we did

  • Split Google Ads and Meta by the job they do rather than running them as one blended spend: search to capture intent that already exists, Meta to build familiarity ahead of it in the neighbourhoods that matter.
  • Tracked calls as conversions alongside form fills. For contracting the phone is the majority of the enquiry volume, and an account measuring only forms is optimising against a minority of its own results.
  • Held the structure stable through the seasonal ramp and added budget into what was already converting, rather than widening match types to spend it.
  • Reported monthly on leads and calls rather than impressions, so scaling decisions were made against enquiry volume.

What the numbers show

Over the twelve months the account produced more than 3,800 leads and calls in total, split across more than 1,300 Google Ads leads, more than 1,500 calls from Google Ads, and more than 950 leads from Meta.

The split matters more than the total. Calls outnumbered form fills on the search side, which is what you would expect for contracting and exactly what an account measuring only forms would have missed.

Monthly calls grew roughly fivefold from the winter baseline to the seasonal peak, and Meta held a cost per lead of about $58 through that ramp rather than inflating as volume rose.

Why efficiency held while volume grew

The instinct when a season opens is to widen: more keywords, looser match types, higher bids. It spends the budget, and it is also the most reliable way to watch cost per lead climb.

What worked here was the opposite. The structure stayed where it was and the additional budget went into the segments already converting, so the extra spend bought more of what was working rather than a wider pool of what was not.