Tech Turtle — Growth systems for local business
HomeAbout UsIndustriesServicesResources
Resource Center/Cost per booked job

Measuring lead quality

Cheap leads or good jobs? Cost per booked job

You're paying for ads, a directory listing, or a lead service, and every month someone tells you how many leads it produced. The number that matters is how many of those leads turned into jobs you wanted, finished, and got paid for. This guide shows how to track that without fancy software and how to compare sources fairly.

By Logen Doiel, founder of Tech Turtle and former painting business owner · 6 min read

The short version

  1. 1Track six stages for every inquiry: inquiry, qualified, estimate sent, booked, completed, and paid.
  2. 2Divide a source's ad spend by its booked jobs, not just by its leads.
  3. 3A lower cost per booked job still doesn't prove a source is more profitable. Job size, costs, and cancellations matter.
  4. 4Log spend once per source per month, not on every inquiry, so you don't count it twice.
  5. 5Don't judge a source on last week's leads. Many of them haven't decided yet.

In this guide

  • Define the numbers in plain terms
  • A worked comparison
  • What that comparison leaves out
  • Build a simple source tracker
  • Compare sources fairly
  • A practical monthly review
  • Common mistakes and better alternatives

Define the numbers in plain terms

The six stages of a lead
StageWhat it means
InquiryAnyone who called, texted, or filled out a form about work.
Qualified inquiryAn inquiry that fits your business by your own written definition (below).
Estimate sentYou gave them a price.
Booked jobThey said yes and you scheduled it.
Completed jobThe work is done.
Collected revenueMoney actually received, not the estimate amount.

Write your own definition of "qualified"

"Qualified" means whatever is true for your business, so write it down once and use it every time. Answer these four questions:

  • Is it a service we actually offer?
  • Is it inside our service area?
  • Is the timing something we could schedule?
  • Is the job big enough to be worth an estimate? Name your minimum.

A concrete coatings company might write: "Garage, patio, or basement floor; within 40 miles; wants it done in the next six months; at least 300 square feet." If an inquiry answers yes to all four, it's qualified.

A worked comparison

These numbers are made up. They illustrate the math. They aren't Tech Turtle client results or industry benchmarks.

Hypothetical comparison of two campaigns with the same spend
Campaign ACampaign B
Advertising spend$900$900
Leads3010
Booked jobs24
Advertising cost per lead$30$90
Advertising cost per booked job$450$225

If you only looked at cost per lead, Campaign A wins: $30 against $90. But Campaign A's 30 leads produced two jobs, and Campaign B's 10 leads produced four. Per booked job, B cost $225 and A cost $450. A also took more of your time, since every lead needs a call back.

In this example, Campaign B has the lower advertising cost per booked job. That still doesn't prove B is more profitable. For that you'd need to know what the jobs were worth and what they cost to do.

What that comparison leaves out

  • Job size. If Campaign A's two jobs were $12,000 each and B's four were $1,500 each, A brought in far more work.
  • Direct job costs. Materials, labor, and travel. Booked revenue isn't profit.
  • Cancellations. A booked job that cancels before you start shouldn't count as booked.
  • Whether the work got done. Count completed jobs separately from booked ones.
  • Whether the customer paid. Collected revenue is what you actually have.
  • Other costs of getting the customer. Agency fees, lead-service fees, software, and your own time. Keep those apart from ad spend so "advertising cost per booked job" means just that, and add them up separately when you want the total cost of getting a customer.
  • Time to decide. A source that sends bigger jobs may also take longer to close. Two weeks of data can make it look worse than it is.

Build a simple source tracker

You need one row per inquiry and one consistent label for where it came from. Pick a short list of source names and use them exactly the same way every time: "Google Ads," not sometimes "Google" and sometimes "AdWords."

Always have an Unknown option and use it honestly. Ask "How did you hear about us?" and write down what they say. Some people found you three ways and only remember one. No tracker captures every step of a customer's decision, and an honest "Unknown" is more useful than a guess.

Completed hypothetical inquiry tracker with fictional records
Inquiry dateSourceService requestedQualified?Estimate dateEstimate amountCurrent outcomeBooked dateCompleted dateCollected revenueReason lostNext action
2026-09-02Google AdsGarage floor coatingYes2026-09-05$3,200Completed2026-09-092026-09-23$3,200Ask for a review
2026-09-04Google AdsBasement floorNo (outside area)Not a fitOutside service areaNone
2026-09-08ReferralPatio coatingYes2026-09-10$2,400Booked2026-09-18Install 2026-10-14
2026-09-11Facebook postGarage floor coatingYes2026-09-15$2,900Open estimateFollow up 2026-09-29
2026-09-15Directory listingGarage floor coatingYes2026-09-17$3,100LostChose a lower bidNone
2026-09-20UnknownPool deckYesWaiting on photosText for photos
Fictional records. Swipe sideways on a phone to see every column.

Keep spend in a separate monthly summary

Don't put ad spend on each inquiry row. If you write "$600" next to both Google Ads leads, it looks like you spent $1,200. Record spend once per source per month in a summary sheet, then count the rows from the tracker.

Hypothetical monthly source summary
SourceSpend this monthInquiriesQualifiedBookedCompletedCost per inquiryCost per booked job
Google Ads$6002111$300$600
Directory listing$1501100$150Not available yet
Referral$01110No paid spendNo paid spend
Facebook post$01100No paid spendNo paid spend
Unknown$01100No paid spendNo paid spend
When a source has zero bookings, cost per booked job shows "Not available yet" instead of dividing by zero. Unpaid sources show "No paid spend" instead of a misleading $0 cost.

Free resource

Get the tracker and summary sheet, with formulas ready to go

  • —An inquiry tracker with all 12 fields and fictional example rows
  • —A separate monthly source summary so spend is never double-counted
  • —Cost formulas that show "Not available yet" instead of dividing by zero
  • —Step-by-step instructions

No phone number needed. We won't add you to any list unless you check the box.

Compare sources fairly

  • Recent inquiries may still be deciding. Mark them "Open estimate" instead of counting them as lost.
  • Compare like with like. Compare full months against full months, and if your work is seasonal, compare against the same season.
  • Call out open estimates. A month with five open estimates isn't finished yet. Note that next to its numbers.
  • Don't cut a source after one bad lead. One wrong-number call says almost nothing. Look for a pattern over a few months.

A practical monthly review

Once a month, sit down with the tracker and summary and work through these questions in order:

  1. 1Which sources sent qualified inquiries?
  2. 2Which ones turned into booked and completed work?
  3. 3What's still undecided, and when will you know?
  4. 4What information is missing, like an unknown source, a blank outcome, or revenue not entered?
  5. 5What do you need to look into before you change what you spend?

Common mistakes and better alternatives

Judging a source by cost per lead alone
Instead: Track it through to booked and completed jobs before deciding.
Treating estimate amounts as revenue
Instead: Log collected revenue when the money arrives.
Calling booked revenue "profit"
Instead: Profit is what's left after materials, labor, and all your costs of getting the customer.
Repeating spend on every inquiry row
Instead: Record spend once per source per month in the summary.
Guessing the source
Instead: Use "Unknown" when you don't know. It's still useful data.

Do this todayWrite your four-line definition of "qualified" and tape it next to wherever you take calls. Starting tomorrow, mark every new inquiry yes or no against it.

Where your website fits

Tracking falls apart when inquiries arrive through a dozen places. A website form that sends every request to one dashboard gives you a clean starting list for the tracker.

Tech Turtle's $50/month contractor website includes an estimate request form, instant lead notifications, and a private dashboard where those requests are kept. It doesn't track offline sales, job costs, or collected revenue, and it doesn't do the rest of this worksheet. That part stays in your tracker.

See the $50/month contractor website

Get the ready-to-use version

Free resource

Get The Contractor Job-Source Tracker

  • —An inquiry tracker with all 12 fields and fictional example rows
  • —A separate monthly source summary so spend is never double-counted
  • —Cost formulas that show "Not available yet" instead of dividing by zero
  • —Step-by-step instructions

No phone number needed. We won't add you to any list unless you check the box.

Related guides

  • Better estimate requestsBefore You Drive Out to an Estimate: Six Questions Your Contractor Website Should Ask8 min read
  • A contractor's follow-up decision treeWhat to Text After an Estimate Goes Quiet9 min read
Tech Turtle — Growth systems for local business

Contractor websites

  • Contractor Home
  • About Us
  • Industries
  • Services
  • Resources

Contact

(715) 409-8775

Wausau, Wisconsin

Tech Turtle Marketing LLC · Wausau, Wisconsin · Serving contractors nationwide

$50/month subscription, billed automatically. No setup fee, no long-term contract. Websites are built, hosted and owned by Tech Turtle and go offline if the subscription ends. Tech Turtle doesn't guarantee leads, jobs, revenue or rankings. Portfolio sites shown are custom client projects.

Subscription termsPrivacy PolicyTerms of Service