Issue #4 · October 12, 2026

Someone Answered. So Why Isn’t It on the Board?

Answering a call isn’t the same as booking it. A paper reason log for small HVAC and plumbing shops: two piles, ten codes, filled in at hang-up, read once a week.

The phone got answered. Someone talked to the caller for three minutes. There’s no job on the board.

Ask why, and you usually get a shrug. “Price shopper.” “They’ll call back.” “I don’t know, it was busy.”

This post is about that call. Not the one nobody picked up. The one somebody did.

Issue #2 covered what to write down at night. Issue #3 covered what has to be true before a truck leaves. This one is what to write when a call doesn’t turn into a job, at any hour.

Answered isn’t booked

There are two different failures here, and they belong in two different logs.

A missed call is one nobody answered. An unbooked call is one where somebody answered, talked to a real person, and no job went on the board.

The software companies keep these apart too. ServiceTitan’s help page on call classifications (updated July 11, 2026) says it flat out: “An abandoned call is not the same as an unbooked call.” As of October 2026, Housecall Pro’s Voice call log has separate tabs for Missed and Inbound.

Missed calls need a callback list. Answered calls that didn’t book need a reason. Don’t add them together. This post is only about the answered ones.

The fraction nobody finishes

Your booking rate is a fraction:

booked ÷ calls that could have booked

Most shops know the top number. Jobs booked is easy to count. The bottom number is the hard part, because it only means something if every answered call that didn’t book gets labeled.

ServiceTitan’s docs show how this works. I’m not saying buy it. It just spells out what most systems leave vague. As of October 2026 (help pages updated July 10–11, 2026), any answered call over 60 seconds counts as a lead by default. When a CSR closes out a call that didn’t book, ServiceTitan asks for a call reason. Each reason has an “Is Lead” checkbox. Checked, and the call counts as booked-or-lost. Unchecked, and it’s excused: it was never a job.

So the reason list basically is your booking rate. Their own page says that if you skip setup, “any call longer than 60 seconds will be classified as a lead,” and your reports “may be unreliable.”

ServiceTitan’s write-up of a May 2026 episode of its own podcast tells one operator’s version. Sydney Biancardi is COO of Iceberg Home Services in Central Florida, a shop that grew from nine to sixty employees, so bigger than most readers here. Calls that no CSR claimed or labeled were counting as leads by default. With about 80% of those calls unclassified, the recap says, their booking rate read “something like 17%,” and the team stopped watching it. The fix was a habit, not new software: every CSR labels every one of those calls, and the recap’s rule is “by end of shift, the count should be zero.”

That’s one company’s number, not a benchmark. The point is that an unlabeled rate is a guess.

You don’t need their software to do this. You need a fixed list and a pen.

Two piles: never yours, and yours to fix

Every answered call that didn’t book goes in one of two piles.

Never bookable. It was never a job. These don’t count against you.

  • A. Not a customer call. Wrong number, spam or telemarketer, a vendor or supplier, a job seeker, staff, a personal call.
  • B. Existing job or bill. Status check, reschedule, confirming a time, a question about an invoice. The job is already on the books.
  • C. Outside our area. A real person with a real problem, but you don’t go there. That’s a service-area decision, not a lost job.
  • D. Work we don’t do. Wrong trade, or a job type you’ve decided not to take.

Bookable, and lost. A real job you could have done, and it didn’t go on the board.

  • E. Fee declined. They heard your dispatch, diagnostic, or after-hours fee and said no.
  • F. Wanted a price first. They wanted a repair price over the phone, or said the price was too high.
  • G. No slot that worked. They needed sooner than you had, or nothing you offered fit. This is usually a capacity call, so it’s on the owner, not whoever answered.
  • H. Calling back / thinking it over. “I’ll call you back.” “Let me think about it.” Sub-note: if they chose to wait for regular hours and nothing was booked, write “wants regular hours” here. If a morning slot did go on the board, the call was booked. It doesn’t get a code.
  • I. Needs spouse, owner, or landlord. The person on the phone can’t say yes.
  • J. Getting other quotes. Calling around.

Other: write one line. In the caller’s words. Read every one each week.

This list is our suggestion, not an industry standard. I built it from codes that show up across several vendors’ docs. ServiceTitan’s examples of “not a lead” include wrong numbers, UPS, vendors, and customers outside the service area. Its “Is Lead” examples include “wanted price over the phone” and “no one available (could not assign a technician).” As of October 2026, Housecall Pro’s call conversion reporting for Voice users counts only “your customer calls (i.e. not vendors, spam, etc)” as opportunity calls (help page dated July 9, 2026). Workiz’s beta AI call filters, also as of October 2026, list “pricing, scheduling, out of service area, or service not offered” as common objections (help page updated June 26, 2026).

A few codes I left off on purpose. “Chose another company,” “doing it themselves,” “hung up on the AI,” and “we never asked to book” had thin support. Each turned up only once or twice, and only in other contexts: declined quotes, canceled jobs, or AI-answered lines, not regular answered calls. If they happen, they go under Other. “We never asked to book” is better caught by listening back to the call than by asking the person who answered to label their own miss.

The vendors disagree on edge cases, so you decide once. ServiceTitan’s call-reasons page lists “customer called to cancel” as a lead, and a customer who wants a callback with an estimate as not a lead. Its roofing page uses “Wants to Think About It” as a lead and marks only out-of-area and wrong-number calls as “typically not marked as a lead.” Neither is wrong. Pick where cancels and callbacks go, write it on the sheet, and don’t argue it call by call. A ServiceTitan staffer put it well on their podcast (March 2025): set each reason as lead or not-a-lead up front, “and then when your CSRs go to select what happened, they don’t have to make that decision. They just pick it from the drop-down menu.”

The ten-code log

This is a sheet of paper by the phone. Or a notebook in the truck, or a tab in a spreadsheet. It doesn’t need software.

Columns (our suggestion, kept short on purpose):

  1. Date and time
  2. Who answered
  3. Caller number, or name if you have it
  4. Pile: Never bookable / Bookable, lost
  5. Code: one letter, A through J, or Other
  6. One line in the caller’s words (required for Other)
  7. Next step, bookable-lost only: callback date and who owns it

Only unbooked calls go on this sheet. Booked calls go on the board. Don’t give a booked call a code, or your Friday count mixes the two. Missed calls go on their own callback list.

When it’s filled: at hang-up, before you pick up the next call. Nothing blank by end of day.

Who fills it: whoever answered. That might be the owner on a truck, a spouse, the office manager, or an answering service that sends you notes. The owner sets the codes once. The person on the phone just picks one.

A filled example:

Date / time Answered by Caller Pile Code Their words Next step
Tue 8:14 aOffice(555) 014-2271Never bookableA“Is this the pizza place?”—
Tue 9:40 aOfficeRamirezNever bookableB“What time is the tech coming today?”—
Tue 11:02 aOwner (truck)(555) 019-8830Never bookableC“We’re out past the county line.”—
Tue 1:25 pOfficeChenBookable, lostE“I’m not paying just for you to show up.”—
Tue 3:50 pOfficePatelBookable, lostG“Needs it today. Nothing open until Thursday.”Owner: look at Wed capacity
Tue 6:45 pOn-call techBrooksBookable, lostH“Will call in the morning.” Sub-note: wants regular hoursOffice calls Wed 8:30 a
Wed 10:10 aOfficeOkaforBookable, lostI“Have to ask my landlord.”Office calls Thu 10 a
Wed 2:30 pOffice(555) 017-6604Bookable, lostOther“Asked if we do mini-split installs. Said they’d look online.” (We do them.)Read Friday

There are no booked calls on that sheet, and no dollar amounts. Every row has a letter.

If you already run software, these are optional extras. Plans and features change, so check your own account. As of October 2026, per the vendors’ help pages:

  • Housecall Pro. With the Voice add-on, each answered call can carry a call reason, and you can group reports by it. Custom reasons were still in Alpha for select accounts (Voice Settings page, updated July 22, 2026). Without Voice, leads can be marked Lost, but the pages fetched in October 2026 don’t show a lost-reason field. Putting the code in a lead tag is our workaround, not an HCP feature (lead reports need Pipeline).
  • Jobber. You can log a phone call as a request on any plan (help updated September 9, 2026). “Mark as Lost” with an optional lost reason is in Sales Pipeline, which needs the Plus plan or an add-on (help updated September 25, 2026). Custom fields don’t go on requests (help updated March 30, 2026). On other plans, putting the code letter in the request title or a note is our suggestion.
  • CallRail, if you use tracking numbers. When the conversation ends, stay on the line and press * (or wait for the caller to hang up first). A short survey only you can hear lets you score the call and pick a tag from up to 9 keypad options. It works on inbound calls to tracking numbers only (Keypad Scoring help, updated November 12, 2025). Ten codes won’t fit, so merge two. Our suggestion: combine B and D, since both are never bookable. “Other” lines still go on paper.
  • Your cell or carrier call log (our suggestion, not a vendor feature) shows that a call happened. It doesn’t show why it didn’t book. Use it to count answered calls, not as a reason log.

Google Business Profile call history isn’t an option anymore. Google turned it off on July 31, 2024.

None of these replace the habit. If the code doesn’t get picked at hang-up, the software just holds a lot of blanks.

Friday, fifteen minutes

Fifteen minutes is our suggestion, not a rule from anywhere. Once a week, read the sheet and look at five things:

  1. How many in each pile. Never bookable vs bookable-lost.
  2. The top two bookable-lost codes. That’s where your week went.
  3. G, no slot that worked. Is that a staffing question, a schedule question, or just a busy week? That one’s yours.
  4. Every Other line. If Other makes your top three two weeks in a row, add or rename a code. Otherwise keep the list fixed for at least a month so the weeks compare.
  5. Every bookable-lost row has a name and a date in Next step. No orphans.

Then listen back to, or reread, one booked call and one unbooked call for each person who answers. That’s a scaled-down version of what the ServiceTitan staffer above described doing for each CSR.

One owner rule worth borrowing comes from Michael Katz of TRIO Heating, Air & Plumbing, a San Jose-area shop well past the size of most readers here, speaking on a ServiceTitan podcast in June 2025: “Anything that repeats more than twice a month has to be a process.” If E shows up every week, that isn’t a CSR problem. It’s a fee conversation you haven’t written down yet.

Don’t turn it into a blame sheet

The quickest way to ruin this log is to use it to grade whoever answered.

Look at the bookable-lost pile again. Fee declined is your fee. No slot that worked is your schedule. Out of area isn’t even in that pile, because your service area is a choice you made. A lot of these codes are owner decisions. Read them as your numbers first.

ServiceTitan’s own setup page lists “no one available (could not assign a technician)” as an example of a reason that counts as a lead, and lead reasons count against the CSR’s conversion rate. In a shop this size, that’s usually a capacity decision, not a phone skill. Even ServiceTitan’s unbooked-call SOP for its AI agent (updated September 30, 2026) points the same way: “Often, unbooked jobs are caused by a configuration issue — a zip code outside your service area, a job type the VA does not recognize, or a capacity gap.”

Also watch the labels. Erica Leonor, a CSR trainer writing in Contracting Business (November 2025), says she’s heard it “hundreds of times from CSRs”: “I could just tell they only wanted a price. They were just window shopping.” Then, she writes, “the call goes unbooked.” “Price shopper” is a guess about the caller. “Wanted a price first” is what they said. Write what they said.

And watch the other direction. You can make your rate look great by moving calls into the never-bookable pile. A commenter on a LinkedIn thread about HVAC booking rates asked the right audit question: “What’s the excused rate YoY?” Put the never-bookable count right next to your booking rate every Friday. If it keeps growing, ask why.

Soft close — the log is the product

This runs on paper. Ten letters taped by the phone, one line per call that didn’t book, read once a week.

It’s step 6, “Log the outcome,” on our free after-hours intake checklist: booked or not booked, and why if it bounced. This post goes deeper than that step, and it applies at any hour. The ten codes are also on our free reason card if you want them in one place.

A few things to try this week, if they fit:

  • Tape ten codes next to the phone. When a call doesn’t book, circle one before you pick up the next. On Friday, count the circles.
  • Before you blame whoever answered, read the codes that are yours: the fee, the service area, the schedule.
  • If your intake sheet already has a “reason” column, give it a fixed list this week. A blank column and a column full of “other” tell you the same thing: nothing.

Sources