Insights

Cost per lead for trades: how to connect calls and forms to booked jobs

You probably know what you spend on marketing but not what each job cost to win. A week's setup that traces enquiries back to their source.

Topic
Lead Generation
Published
18 Sept 2026
Reading time
4 min read
An electrician in his van ticking off which calls became booked jobs

Ask most tradespeople what their marketing costs and they can tell you to the pound. Ask what a job costs to win and the answer is usually a shrug. That gap is where money disappears.

The fix is not complicated. It is a handful of tools, wired together once, so that you have a usable source record for your enquiries and know whether each one turned into work. Some will always arrive with no traceable source, so keep an 'unknown' category rather than guessing. Once that is in place you stop arguing with your gut about whether the ads are working, and start moving budget to whatever is bringing in jobs.

Here is the setup, in the order it is easiest to build.

Decide what counts as a lead

Before tracking anything, write down what a lead is. For most trades it is one of four things: a phone call that lasts long enough to be a real enquiry, a completed quote form, a WhatsApp message, or a live chat conversation. Wrong numbers, sales calls from suppliers and people asking if you sell parts are not leads.

This matters because if you count everything, your cost per lead looks great and means nothing. If you count only real enquiries, the number is honest and you can act on it.

A minimum call duration, say 30 to 45 seconds, works as a first filter. Don't stop there. Listen to a sample of the short calls, and check the missed ones before you exclude them. Keep missed calls as unqualified contact attempts until you establish who called and why.

Track calls by source with dynamic numbers

Call tracking works by showing a different phone number to visitors depending on where they came from. Someone who clicked a Google ad sees one number. Someone who found you in the map pack sees another. Someone who typed your website address directly sees a third. Your real number is never lost: every tracked number forwards to it.

The tool swaps the number on your website automatically, records which source each call came from, and logs the duration. Most can also record the call, which is useful for training and for checking whether enquiries are being handled well. If you record, tell callers at the start of the call.

Keep your main number consistent on directories and your van. A different number everywhere confuses customers and muddies the business details Google holds about you.

Website number swapping can't see calls made straight from your Google Business Profile, because those callers never visit the website. Either give the profile its own tracking number as the primary number and list your main number as an additional number, which Google's guidelines allow, or use the call figure in the profile's performance report, which counts taps on the call button rather than connected calls. Without one of those, profile calls belong in 'unknown'.

Track forms and messages the same way

Every quote form should fire a conversion event when it is submitted successfully, not when the page loads. That sounds obvious, but counting views of the form page as leads is an easy mistake to make and an easy one to miss, because the numbers look healthy.

WhatsApp click-to-chat buttons and live chat widgets should fire events too, but be clear about what they measure. A click on a WhatsApp button is an attempted contact. It doesn't tell you a message was sent, let alone that it was a real enquiry. Record the click as a contact attempt in analytics, and count it as a lead only when the message arrives and passes the same test as a phone call.

Analytics (GA4) and Google Ads are where you report on acquisition: which campaigns and sources produce contacts, and what they cost. They are not the record of who enquired. That lives in your lead log or job management system, where a person has checked that each enquiry is genuine.

Cost per won job is what pays the mortgage.

Close the loop with won jobs

Cost per lead is useful. Cost per won job is what pays the mortgage. The difference is closing the loop: recording which leads turned into booked, completed work.

At the simplest level this is a spreadsheet with the lead source, the date, whether it became a job and what it was worth. If you use a job management or CRM tool, the lead source can be captured on the record and exported later.

Once you have a few months of this you can see things like: ads bring in more leads but the map pack brings in bigger jobs, or Sunday evening enquiries rarely convert. That is the information that changes decisions.

What good looks like

A trades business with this in place can answer four questions every month:

  • How many real enquiries did we get, by source?
  • What did each source cost per enquiry?
  • What proportion became jobs, and what were they worth?
  • Where should next month's budget go?

The setup takes about a week the first time. After that it needs steady upkeep rather than a rebuild: qualifying each lead as it comes in, recording which ones became jobs, removing duplicates when the same customer calls and fills in the form, and checking the tracking still fires after any change to the website.

How we help: PPC Management · SEO

Want to talk this through for your own business? Dax reads every message personally and usually replies within a day.

Tell us what you need

Or get the next article by email, every couple of weeks.

Let's find a way forward

Dax reads every enquiry personally.

Step 1 of 4

What would you like to improve?

Choose the closest fit. We’ll help you turn it into a useful brief.