Here is a conversation we have had more times than we can count. We ask a contractor which of his marketing is working. He says the Google stuff seems good. We ask how many jobs it booked last month. There is a pause, and then some version of "a few, I think."
That pause is expensive. It means every budget decision for the next year is going to be made on a feeling, and feelings systematically favour whatever happened most recently or made the most noise. Meanwhile the channel quietly producing the best work gets cut because it never announced itself.
This is fixable, and it does not require a full-time analyst or an expensive platform. It requires a chain of four links that most contractors have broken in exactly one place.
The chain that has to hold
For you to say "this channel booked me $40,000 of work last month" and mean it, four things have to connect:
- The click gets identified. Somebody arrives on your website and you record where they came from.
- The lead carries that identity with it. When they call or fill in a form, the source travels with the lead rather than getting dropped.
- The outcome gets written down. Somebody records whether that lead became a booked job and what it was worth.
- The outcome gets fed back. The channel finds out which leads turned into money, so it can go find more people like them.
Most contractors have link one and nothing else. A few have one and two. Almost nobody has four, which is a shame, because four is where the compounding happens.
Link 1: identify the click
When somebody arrives from a Google ad, Google attaches a click identifier to the URL. Same for Meta. Alongside that, a properly built campaign carries UTM tags naming the source, medium and campaign. Together they answer "where did this person come from" precisely rather than approximately.
The mistake here is assuming this happens automatically. It does not. Your website has to capture those parameters when the visitor lands and hold onto them, because the person almost never fills in the form on the first page they see. They land on an ad page, wander to your gallery, read an article, and come back three days later. If the identifier was only read on the landing page, it is long gone by the time they convert.
There is a specific trap on Apple devices worth knowing about, because it silently ruins a lot of contractor tracking. Click identifiers stored in the browser the simple way get expired after 24 hours in Safari, regardless of the expiry you set. So you look at your data, see that almost nothing is attributed beyond a day, and conclude the ads are not producing. What actually happened is that the record of the click evaporated while the customer was still deciding. Storing the identifier properly, server-side or in a form that survives, is what fixes it.
Link 2: keep the identity attached to the lead
This is where the chain breaks most often, and it breaks invisibly.
A contractor has a nice website with a quote form. The form emails him. The email says a name, a phone number and a message. It says nothing about where that person came from, because the form was never built to pass that along. The information existed on the page and was thrown away at the moment of submission.
Fixing it means the form submits the stored click identifier and UTMs as hidden fields alongside the visible ones, and whatever receives the lead stores them. On the sites we build, every lead lands in one dashboard with its source attached, which is less about the software and more about the principle: the lead and its origin have to be the same record. If they live in two places, nobody will ever join them up under pressure in a busy month.
Phone calls need their own version of this. A call is invisible to your website analytics, and for most trades the phone is the main way people get in touch, so a setup that only tracks forms is measuring the minority of your leads. Call tracking numbers solve it by giving different sources different numbers, so the phone itself tells you where the caller came from. If you go this route, keep your main business number consistent everywhere it appears publicly, because your local SEO depends on that number being identical across your website, your Google Business Profile and your directory listings.
Link 3: write down what happened
This is the least technical link and the one contractors skip. No software can tell you whether a lead turned into a job. Only you know that, and only if somebody writes it down.
It does not need to be elaborate. Every lead needs a status and a value:
- Junk — wrong number, spam, someone selling you something.
- Real but not a fit — outside your area, wrong service, no budget.
- Quoted — you went out and gave a price.
- Booked — and what the job was worth.
Four statuses and a dollar figure. That is the whole discipline. Do it weekly, in fifteen minutes, on Friday. The reason it matters so much is that lead volume and lead quality are different things, and a channel can look excellent on volume while producing nothing but price shoppers. Without this step, you would keep funding it. This is the same distinction we drew in why your phone rings without producing good jobs.
Once you have a few months of this, you can answer the only question that matters: what does a booked job cost me from each channel? Not cost per click, not cost per lead. Cost per job, against the value of that job.
Link 4: feed the outcome back
This is the one almost nobody does, and it is where the advantage is.
Google Ads decides who to show your ads to based on what it thinks a good outcome looks like. By default, the best it knows is that somebody submitted a form. It cannot tell the difference between the tyre-kicker who filled in a form at midnight and the homeowner who booked an $18,000 job, so it goes looking for more of both equally.
If you send the booked jobs back to Google — the click identifier, the fact it converted, and the value — the system starts optimising toward the people who actually hire you. That is the difference between buying leads and buying customers. The mechanism is called offline conversion import, and it exists precisely because the sale happens days or weeks after the click in service businesses.
You need links one through three working before this is possible, which is why it goes last. But it is the payoff that makes the rest worth doing, and it is a large part of why our Google Ads work for home services looks different from an account that is only counting form fills.
What to look at once it works
Resist the urge to build a dashboard with forty numbers on it. For a contractor, four are enough:
- Leads by source. Where they came from, this month against last.
- Cost per lead by source. Spend divided by leads, per channel.
- Booked rate by source. What share of each channel's leads turned into work. This is the number that exposes a channel producing volume and nothing else.
- Cost per booked job, against average job value. The one that tells you whether to spend more or stop.
Look at them monthly, not daily. Contractor sales cycles run in weeks, and a week of data will make you cancel something that was about to work. Give any channel a fair run before you judge it, and judge it on the fourth number rather than the first.
The order to build it in
If you are starting from nothing, this is roughly a two-week job, most of which is deciding rather than building:
- Get your website capturing and storing click identifiers and UTMs in a way that survives a few days and survives Safari.
- Make every form pass those along and make sure whatever receives the lead keeps them.
- Get every lead into one list. Forms, calls and messages. One place.
- Start the Friday habit of marking each lead junk, not a fit, quoted, or booked with a value.
- After a month, calculate cost per booked job by channel. Make your first budget decision on it.
- Then wire the booked jobs back into your ad platforms so the bidding learns from real outcomes.
Steps three and four are free and produce most of the value. Do not let the technical parts of one, two and six stop you from starting the parts that only need a habit.
The contractors who get this right stop having the argument about whether marketing works. They have a number instead, and the conversation moves on to what to do with it. If you would like a look at where your chain is currently broken, that is a free conversation and it usually takes twenty minutes to find.