Call Tracking and Attribution for Contractors, Without Overbuilding It

Updated · Published September 4, 2026 · 8 min read · By James Leary


Ask most contractors which channel produced last month’s booked jobs and the honest answer is a shrug and a theory.

That is not carelessness. It is that home-service leads mostly arrive as phone calls, phone calls are the hardest thing to attribute, and the tools that report confidently — ad platforms — only see the part that happened on a screen. So the dashboard says forty conversions, the office says the phone was busy, and nobody can connect either to the jobs that were actually sold.

Every measurement idea on this site assumes you can attribute: cost per lead, cost per booked job, acquisition cost, whether your agency is working. This is the layer underneath all of them, and it is usually missing.

Aim for directional, not perfect

The most common failure here is not doing nothing. It is attempting a complete attribution model, discovering it is expensive and contradictory, and abandoning the whole thing.

You do not need to know precisely which touch produced each job. You need to know whether Google, Meta, LSA, your map listing and referrals are roughly earning their keep, so that you can move budget without guessing. That is a much lower bar, and it is reachable in an afternoon.

If a channel is obviously producing and another obviously is not, you have what you needed. Precision beyond that costs more than it returns at contractor volumes.

Start with the question your office can ask

Before any software: ask every caller how they heard about you, and write it down in a field that can be counted.

This is unfashionable advice and it remains the highest-return thing most contractors can do, because it catches what no tracking software sees — the neighbour’s recommendation, the yard sign, the truck, the review page read three weeks ago.

Two conditions make it work. It has to be asked every time, which means it is on the intake script rather than left to judgement. And it has to land somewhere structured — a dropdown in your CRM, not a note field — because free text nobody can total is the same as no data.

It is imperfect. Homeowners misremember, and “Google” covers ads, the map and organic alike. Combined with the tracking below, it gets you most of the way.

Call tracking numbers, one per channel

The mechanism is simple: a distinct phone number per channel, forwarding to your real line, so the number dialled tells you where the caller came from.

The sensible split for most contractors:

  • One number on Google Ads
  • One on Meta and paid social
  • One on Local Services Ads, if not already reported separately
  • One on direct mail, yard signs, vehicle wraps or anything else offline
  • Your real number everywhere organic — directories, citations, your website by default — and on Google Business Profile as the additional number (below)

Recording those calls is usually worth it as well, subject to your state’s consent rules — some require all-party consent, and that is worth checking rather than assuming. The value is not surveillance; it is that you will hear how the phone is actually answered, which in most companies is a bigger problem than the advertising.

The mistake that damages local rankings

Here is the part that gets contractors into trouble, and it is genuinely counterintuitive.

Google’s local ranking relies partly on consistency of your name, address and phone number across the web. If you replace your published number with a tracking number in some places and not others, you fragment that consistency and can undermine the map pack visibility that produces free leads. People do this while trying to measure better, and end up with better measurement of a smaller total.

Two rules keep you out of it:

On your website, use dynamic number insertion. The page shows your real number by default and swaps in a tracking number only for visitors arriving from a specific campaign. Crawlers and organic visitors see the consistent one.

On Google Business Profile, use both phone slots. The profile takes a primary number and an additional one. Put the tracking number in the primary slot — that is the number the call button dials, so it is the only way calls from the profile get counted — and your real number in the additional slot, so Google can still match the profile to the number on your website and directories. It is the standard approach among local search specialists, and it measures the profile without breaking consistency.

Never scatter different numbers across directories, citations and your footer. That is the version that costs more than it measures.

What clicks cannot tell you

Ad platforms report what they can see, which is why their numbers are both confident and incomplete.

Form fills are attributable; phone calls mostly are not unless you have done the above. For most contractors calls are the majority of leads, so the platform is reporting the minority and calling it the total.

Retargeting is the clearest case, because it appears last almost by construction.

Last click takes the credit. A homeowner who saw a Meta ad in March, read two guides, then searched your name in May is recorded as a branded search win. The Meta ad did the work. In long-cycle trades — pool, siding, cabinets — this systematically undervalues everything that happens early.

Some channels are invisible by construction. Referrals, reviews, the truck, word of mouth. They appear as “direct” or as nothing, and they are frequently the largest source in an established company.

The practical implication is a bias to correct for, not a problem to solve: paid search flatters itself, and awareness channels understate themselves. Weight your reading accordingly before you cut the thing that appears to produce nothing.

Attribute to jobs, not to leads

The layer almost nobody builds is the one that matters most.

Knowing a channel produced thirty leads tells you very little if you do not know how many became appointments, how many were attended, and how many were sold. A channel producing cheap leads that never close is worse than one producing expensive leads that do, and cost per lead cannot see the difference — the difference between ROI and ROAS rests on exactly this.

So the source has to travel with the job. When a lead enters your CRM, its source field is set and never overwritten; when the job is sold, the revenue attaches to the same record. That single discipline turns cost per lead into cost per booked job, which is the only number worth making decisions on.

Give it enough time and volume to mean anything

A month of contractor data is usually too thin to support a confident conclusion, particularly in trades with long cycles or seasonal demand.

Two failure modes follow. Cutting a channel after three weeks because it produced two leads, when two leads was within normal variation. And crediting a channel for a good month that was actually weather. How to know if your ad test actually won covers why small numbers reverse themselves, and the same caution applies to attribution: look at a quarter, and compare like seasons rather than consecutive months.

Frequently Asked Questions

How do contractors track which marketing produced a job?

With three layers. Ask every caller how they heard about you and record it in a countable field rather than free text. Use a distinct call tracking number per paid channel so the number dialled identifies the source. Then carry that source through your CRM to the sold job, so you can measure cost per booked job rather than cost per lead. The first layer alone catches referrals and offline sources no software can see.

Do call tracking numbers hurt local SEO?

They can, if used carelessly. Local ranking relies partly on consistent name, address and phone details across the web, so scattering different numbers through your site, footer and directory listings fragments that consistency. The safe approach is dynamic number insertion on the website — the real number shows by default and a tracking number appears only for campaign visitors — plus, on Google Business Profile, a tracking number in the primary phone slot with your real number kept as the additional number, so Google can still match the profile to your citations.

Why do my ad platform numbers not match my actual jobs?

Because the platform only sees what happened on a screen. Phone calls, which are most contractor leads, are largely invisible to it unless you set up tracking, so it reports the minority as though it were the total. Last-click credit also misassigns long journeys — a homeowner who saw a Meta ad in March and searched your name in May is recorded as branded search — which systematically undervalues early-stage channels in long-cycle trades.

What is the simplest attribution setup for a contractor?

A required “how did you hear about us” dropdown on the intake script, a separate call tracking number for each paid channel, and a source field in the CRM that follows the lead through to the sold job. That is an afternoon of work and answers the real question, which is whether each channel is roughly earning its keep. Attempting a complete multi-touch model first is the usual reason contractors end up with no attribution at all.

How long before attribution data is trustworthy?

Generally a quarter rather than a month, and longer for seasonal or long-cycle trades. Contractor volumes are low enough that a few weeks of data sits inside normal variation, so channels get cut for producing two leads when two was unremarkable, and credited for months that were really weather. Compare like seasons rather than consecutive months before concluding anything.


You do not need perfect attribution. You need to stop moving budget on the basis of a dashboard that cannot see your phone.

See what our campaigns produce, or book a call and we will look at what your reporting is missing.

25 client cap

Want this handled for you?

20 qualified appointments in 30 days, guaranteed in writing. Twenty minutes tells you whether your market can support it.

Book a Free Call →