Which Ads Are Actually Working? Attribution for Home Service Companies
Most contractors can't say which channel produced last month's jobs. Here's how to set up tracking that answers it, without a data team.
Ask a contractor which marketing channel produced their best jobs last month and you usually get one of two answers: a guess, or "word of mouth mostly."
Both mean the same thing. Nobody is tracking it.
That's expensive in a specific way. You are not just wasting money on the channel that isn't working β you are underfunding the one that is, because you cannot see it.
Why "how did you hear about us?" doesn't work
Most companies ask the customer. It feels like tracking. It isn't, for three reasons.
People genuinely don't remember. They saw your van, then googled you two weeks later, then clicked an ad. They'll say "I found you on Google." Which google? The map pack, the ad, or the organic result you spent months earning?
The office forgets to ask. On a busy day, when the phone is ringing and someone's roof is leaking, the source field gets skipped. Your data ends up with a large "unknown" bucket that quietly makes everything else meaningless.
Last touch gets all the credit. The yard sign started it. The Google search finished it. If you only record the last step, you'll cancel the yard signs and wonder why leads dropped.
What to track instead
Capture the source automatically, at the moment the lead arrives, without anyone having to remember.
Call tracking numbers. A different phone number per channel β one for Google Ads, one for the map pack listing, one for van wraps and yard signs, one for direct mail. Calls route to the same place, but you know which number they dialed. This is the single highest-value change for home services, because most of your leads are phone calls.
UTM parameters on every link. Any link you control β ads, email, social, your Google Business Profile β gets tagged so the source travels with the visitor to your form.
Hidden fields on your forms. The form quietly records the source, the landing page, and the first page they visited, then passes all of it into the CRM with the lead. No one has to type anything.
One field: how it was booked. Not where it came from β you're capturing that automatically now. Just phone, form, or walk-in. It tells you where to put effort.
Connect it to money, not to leads
Here's where most tracking setups stop short and become useless.
Knowing that Google Ads produced 40 leads and direct mail produced 12 tells you almost nothing. You need to know what those leads became.
The chain has to run all the way through: source β lead β quoted β booked β revenue.
That means the source has to survive the whole journey. It gets attached at first contact and stays attached to the job through to the invoice. If it gets lost when the lead becomes a job β which is exactly what happens when leads live in one system and jobs live in another β you're back to guessing.
Once it's connected, you can answer the only question that matters: what did a booked job from this channel actually cost, and what was it worth?
You will usually find that the channel with the most leads is not the channel with the most revenue. Cheap leads that never book are not cheap.
Numbers worth watching monthly
Five, per channel:
- Cost per lead. Useful, and the most overrated number on this list.
- Lead-to-quoted rate. Are these real jobs or tire-kickers?
- Quoted-to-booked rate. Is this channel bringing people who actually buy?
- Cost per booked job. This is the real one. It's cost per lead divided by how many convert.
- Average job value by channel. Some channels bring small repairs, some bring full replacements. A higher cost per job can still be the better channel.
That last pairing catches the most common mistake. A channel with a $60 cost per lead and $12,000 average jobs beats one with $15 leads and $700 jobs, every time. Judging on cost per lead alone gets that exactly backwards.
Be honest about what you can't track
Some things genuinely resist measurement, and pretending otherwise leads to bad decisions.
Word of mouth is real and mostly invisible. Someone recommends you at a barbecue, the neighbor searches your name three weeks later, and it shows up as "organic β branded search." Branded search volume going up is usually a sign your reputation is working, not your SEO.
Brand awareness from vans and signs works the same way. It rarely gets the click, and it often starts the journey.
The practical approach: measure what you can, watch branded search as a proxy for the rest, and don't cancel something with a long payback just because the dashboard can't see it.
A realistic setup
You don't need a data team. In about a week:
- Call tracking numbers on each channel
- UTM tags on every link you control
- Hidden source fields on your forms
- The source field carried through to the job record in your CRM
- One monthly report with the five numbers above
Then leave it alone for ninety days before you change your spend. One month of data will mislead you β seasonality and small numbers make everything look like a trend.
We build the call tracking, form capture, and CRM reporting that makes this work end to end. See the full build.