How to Tell Which Leads Became Jobs: Closing the Loop From Call to Contract

To tell which leads became jobs, give every call a lead ID, carry that ID onto the estimate and the invoice, and match them on a fixed schedule. A spreadsheet is enough. This is the second half of measuring cost per job: tracking labels the call, and matching connects it to the contract.

The problem

Here's how attribution usually breaks. A homeowner calls from a tracked number on a Tuesday. Your office books an estimate for Friday. The estimator writes the quote under the husband's name. The wife calls back two weeks later from her own cell phone to accept. The job is invoiced under a third record.

Three systems hold three versions of one person. Nothing links them, so the job gets credited to "referral" or "unknown," and the source that earned it looks like it failed.

Closing the loop means building the link on purpose.

The chain you're building

Call  ->  Lead  ->  Estimate  ->  Signed job  ->  Paid invoice

Each stage needs a shared identifier. The cleanest option is a lead ID that you assign when the call is logged, such as 2026-10-0042 (year, month, count). It travels with the customer through every later record.

If you don't have a system that assigns IDs, create them in a spreadsheet.

Step 1: Log every call as a lead

Use one row per lead with these columns:

Column Example
Lead ID 2026-10-0042
Date and time Oct 6, 9:14 am
Source Pay-per-call, roofing
Caller phone (555) 010-0142
Name Maria Alvarez
Service address 118 Elm Ct
Answered or missed Answered
Call length 7 min
Outcome Estimate booked

Your tracking tool exports most of this. The name and address come from your office. See call tracking for contractors for the setup.

Use plain outcome choices: no-answer, no-fit, spam or wrong number, price shopper, estimate booked, and booked-and-no-show. Keep the list short, so everyone uses it the same way.

Step 2: Put the lead ID on the estimate

When the estimate is booked, write the lead ID on the job ticket or in a field in your quoting tool. If your software has a "lead source" field, fill it with the tracked source, and add the ID to the notes if there's no ID field.

If that sounds like a burden, consider the cost of skipping it. You'll spend an afternoon matching names later.

Step 3: Carry it to the signed job and the invoice

When the estimate is accepted, copy the ID to the work order and the invoice. The point is that anyone looking at the invoice can trace it back to the call.

At this stage, record two more things on your log row: the estimate amount and the invoiced amount, if you want revenue by source. Gross profit by source is better; it requires job costing, which not every shop has.

Step 4: Match monthly

Once a month, take the list of signed jobs and match each to a lead. Work in this order:

  1. Lead ID, where it was carried over.
  2. Phone number, comparing the customer's primary and secondary numbers against your call log.
  3. Service address, because the same house is the same house even when two spouses call.
  4. Name and date, as a last resort.

Anything still unmatched, ask. A one-line text to the customer ("Quick question for our records: how did you first find us?") settles most of them. Don't guess.

Record unmatched jobs as unmatched, and keep that number visible. If 30% of your jobs have no source, any cost-per-source figure is soft, and you should say so when you act on it.

Step 5: Apply an attribution window

How long after a call can a signed job still count for that source? A same-day plumbing repair and a fall roof replacement don't have the same sales cycle. See lead attribution windows explained for how to choose.

Pick one window per trade, write it down, and use it for every source. The rule matters more than the exact number. Changing windows source by source is how comparisons get skewed.

When a customer called two sources, such as a directory listing and a pay-per-call number, decide in advance whether credit goes to the first call, the last call, or the one that led to the appointment. Any consistent rule is better than ad hoc choices.

Step 6: Compute the rates

With the log matched, count per source:

Then compute the rates between each stage. Call-to-estimate rate is the one most owners have never calculated, and it points at your intake. Then compute cost per job: spend divided by signed jobs.

Here's a small hypothetical sample. These figures are illustrative.

Source Leads Estimates Signed jobs Spend Cost per job
Source A (calls at $60) 50 20 7 $3,000 $428.57
Source B (form leads at $30) 100 22 5 $3,000 $600

Same spend, different results. Source B generated more leads but fewer jobs. Cost per lead would have said the opposite, since $60 is double $30, and only the matched log shows it. Check: $3,000 / 7 = $428.57, and $3,000 / 5 = $600.

What to do about gaps

Missed calls. Calls with no answer have no outcome, but they have a cost. Count them, because every missed call from a paid source is spend with no chance of return.

Walk-in and referral jobs. Keep a "referral/repeat" source for jobs that didn't come from any marketing call. Leaving them in a paid source flatters it.

Customers who won't say. Record "declined to say" and move on. A small unknown pile is normal.

Long sales cycles. Roofing, siding and similar jobs can take weeks to sign. Review leads from two months ago, and expect recent months to look worse than they'll end up.

Using recordings to fill the holes

When the log says "no-fit" or "price shopper," listen to a few. Recordings show whether the outcome was the caller's doing or your intake's. A caller who said "just getting quotes" and was handled well is different from one who was told "we'll call you back" and never was. See how to score contractor sales calls.

Tools

You can run this on a spreadsheet for as long as volumes are modest. When you're logging dozens of leads a week, a CRM that stores the source on the customer record and syncs with your tracking tool saves hours. CRM for contractors: what to look for lists the criteria.

The monthly routine

Block an hour at month-end.

  1. Export calls and signed jobs.
  2. Match them using the order above.
  3. Compute rates and cost per job by source.
  4. List unmatched jobs and chase five of them.
  5. Pick one decision: add budget, cut budget, or fix intake.

Do it for three months before moving large amounts of budget. If you're comparing exclusive inbound calls with your other sources, apply at RankLocal and give them the same matched log as everything else. See how pay-per-call works if you want the billing mechanics first.

Frequently asked questions

How do I know which lead source a job came from?

Give each source its own tracking number, log every call with a lead ID, and carry that ID onto the estimate and the invoice. When a job closes, the ID tells you the source.

What if the customer signs under a different name or number?

Match on more than one field. Phone number, service address and estimate date together catch most mismatches, and a short question at booking, such as how did you hear about us, covers the rest.

How long after a call should a signed job still count for that source?

It depends on the trade. A drain clog closes the same day, while a roof or a fence can take weeks, so set a window per trade and apply it the same way to every source.

Do I need a CRM to do this?

No. A spreadsheet with one row per lead works if you update it weekly. A CRM makes the matching faster and keeps the history, but the routine matters more than the tool.

More in this guide

Contractor Lead Cost Per Job: From Cost Per Lead to Cost Per CustomerMinimum Call Length for Billable Calls: 30, 60 or 90 Seconds?Marketing Budget for Home Service Contractors: A Gross Profit and Capacity FrameworkGross Margin and Lead Cost for Contractors: How Much Can a Job Carry?Break-Even Close Rate Calculator for Contractor CallsThe Hidden Costs of Shared Leads: What Racing Competitors Costs YouCost Per Call vs Cost Per Job: Why the Cheaper Lead Often Costs More

Related resources

/Contractor Lead Cost Per Job Guide//Call Tracking For Contractors//Cost Per Call Vs Cost Per Job//Lead Attribution Window Explained//What Is Call To Estimate Rate//Crm For Contractors What To Look For/

Want exclusive inbound calls routed to your phone? You pay only for qualifying calls.

Apply for a territory