Trades industry news, updated weekly
Business Tips

Your Customer Texts Look Good — But They're Creating More Calls

Sam ReevesSam Reeves··12 min read

Your Customer Texts Look Good — But They're Creating More Calls

In month two of Reeves Electric, my NPS was a 4. Not 40. A 4.

The work was fine. No callbacks on installs, no complaints about quality. The calls I was fielding every evening weren't about burned-out panels or wrong circuits. They were customers asking some version of the same question: "I just wanted to make sure I was still on the schedule." I only figured that out because I'd committed to answering every call myself for 90 days and writing down, in a notebook, what the call was actually about.

By month nine, NPS was 81. I didn't change my pricing, my crews, or my service area. I changed the first 90 seconds of every customer interaction and the three messages they got between booking and the tech walking in the door.

Most shops run automations built around company milestones — job created, tech dispatched, invoice sent. Those milestones have almost nothing to do with when customers actually panic. So you end up with a communication stack that looks professional and generates more inbound calls, not fewer. And because the automations look like they're working, you assume they are.

They're not.

Customers Don't Call at the End of the Window

The "where is he?" call doesn't come at the start of the arrival window. It doesn't come at the end. It comes about 45 to 60 minutes after the window opens — after the customer has waited long enough to feel like something went wrong, but before they've convinced themselves it definitely has.

Most shops send the on-my-way text at dispatch. That's exactly wrong. Dispatch might happen at 7:45am. The tech might be 90 minutes out. The customer sits in that gap with nothing, the window opens at 8am, and by 9:15 they're calling your office.

The automation fired. It just fired at the wrong moment for the wrong reason.

When I went back through my call logs from those first 90 days, the pattern was obvious. Customers weren't calling because the tech was late. They were calling because they weren't sure anyone knew they existed. The booking confirmation had gone out (eventually), the dispatch text had gone out (too early), and then there was silence during the exact window when the customer was standing in their kitchen deciding whether to miss a meeting to wait for us.

The automations ran right through the middle of that window without answering the question.

What the Customer Is Actually Wondering

At booking: did they actually receive this? Day of: is someone physically coming today? Morning of: when, specifically? And the one nobody asks out loud: should I have taken the whole day off or just the morning?

The standard booking confirmation answers the first one badly. The dispatch text answers the second one at the wrong time. Three and four go completely unanswered.

When I pulled CallRail recordings in 2022 and started listening back — I called them "status calls," "confirmation calls," and "abandonment calls" when I was tagging them — the most common opener on inbound "where is he?" calls wasn't "is he running late?" It was "I just wanted to make sure I was still on the schedule." That's not a timing problem. That's a confirmation problem. The customer didn't trust that the booking had been received and acted on.

The recordings also turned up something I didn't expect. The "where is he?" calls peaked on jobs with a 2-hour arrival window, not 4-hour windows. I'd assumed tighter windows would reduce anxiety. They made it worse. A 4-hour window and customers go about their morning. A 2-hour window and they're watching the clock at the 50-minute mark.

That's not an argument for giving wider windows. It's an argument for the third message in the sequence.

More Touchpoints Is Usually the Wrong Answer

The reflex when customers are calling too much is to add another touchpoint. Tech photo, GPS tracker link, five-step pre-arrival sequence. What that produces is a customer base trained to expect a constant feed, where any gap registers as something wrong. You haven't solved the problem — you've raised the floor on what "silence" means. Now when your Zapier zap fails at 7am on a Tuesday and the tracker link doesn't fire, your phones go up by 8:30.

The shops building five-step sequences are mostly copying what they've seen from national HVAC brands running call centers and full dispatch platforms — I've seen a few of those platforms, and the monthly cost runs well north of what I paid for my first two trucks combined. Their volume and geographic spread don't map to a 5-truck residential shop. I've never met a small-shop owner running that level of communication complexity who could tell me exactly which call type drove them to add the fourth touchpoint. They added it because it felt like progress.

The question to ask is: what question was the customer about to call you to ask — and did the last message you sent actually answer it? If not, you don't need more messages. You need a better one.

That's also worth thinking about past the next 12 months. AI is going to eat the intake call and dispatch communication in the next 36 months, and most shops will be late to it. The shops building a five-message communication surface right now are going to have to retrain their customers off of it when that shift hits. Build the sequence right once instead of patching it until the expectation becomes unmanageable.

Timing Messages to the Actual Anxiety

Three trigger points. Not five. Three.

The first fires within 90 seconds of booking confirmation. Not a generic "thanks for booking" — a message with the date, the specific service, and one sentence about what happens next. "You're confirmed for Thursday the 14th. Marcus will be your tech. We'll send you a heads-up when he's finishing his job before yours." That last sentence matters more than the rest of it. It tells the customer exactly when the next communication is coming, so they stop waiting for one.

The second fires when the prior job closes. This is the one most shops skip, because it requires a webhook triggered by a job status update — not a time-based scheduler. On Jobber or Service Fusion with Zapier as the glue, you can build this. Set job status to "complete," that fires the webhook, Zapier sends the next customer's message. Shops running basic automation tools fire everything off a clock, which means the message is accurate only when the schedule happens to hold. If the prior job runs long, the "your tech is 30 minutes out" text fires while he's still under someone else's panel. Now the customer is calling to report an error you created.

The third fires when the tech is actually in transit. This is the one that stops the inbound call. It needs three things: the tech's first name, a one-line signal about what they just finished, and a hard arrival time. Not a window. "Marcus just wrapped up his morning job and is headed your way — he'll be there by 10:30." No tracker link, no survey pre-ask, no upsell. Just close the loop.

The first two messages do one job: they set the expectation that the third message is coming. When it lands with a name and a real time, the original 2-hour window is already irrelevant.

The Week I Turned Off All of It

About eight months in, NPS was climbing but inbound call volume wasn't dropping. I pulled CallRail data and found calls were up 11% month-over-month despite the automated touches I'd added. So I turned everything off for one week. No automated texts. Dispatcher called every customer manually when the prior job closed.

Here's what I heard.

When my dispatcher said "Marcus is just finishing up on Rundberg, he'll be to you by 10:30" — customers said "great, thanks" and hung up. Almost no follow-up calls. A real location reference and a real name closed the loop in a way the automation wasn't. What I'd replaced that call with was a message that said "your tech is on the way!" — technically true, answers none of the four questions, tells the customer a thing is happening without telling them anything about the thing.

I rebuilt the templates after that week. Tech first name. One-line prior-job reference. Hard arrival time. Over the next two billing cycles, the share of booked jobs that generated zero follow-up calls went from about 60% to 84%. That number came out of CallRail, not a guess. I can show you the month-over-month. The automation is now doing the same job the dispatcher call was doing — same specificity, text instead of voice. The medium wasn't the problem. The content was.

What to Actually Do This Week

First. Pull one week of inbound call recordings — CallRail if you have it, whatever your phone system logs if you don't. Tag every call that would have been unnecessary if the customer had known one specific thing before they dialed. Don't fix anything yet. Just count the tags.

Second. Add a third category to your weekly call review. I already sit down with my dispatcher every week and listen to four calls — two that booked, two that didn't. Add "calls that were only about status." If that count is above 15% of total inbound volume, the automation sequence is broken, not the customers.

Third. Change one message. Take whatever your current dispatch notification says and rewrite it with a real first name, a one-line prior-job reference, and a hard time. Send it to the next 20 customers. Check inbound call volume in the 90 minutes after it fires.

If you're not on CallRail and you're running any real ad spend, fix that before anything else. About $50 to $100 a month for a small shop. The recordings alone are worth the subscription.

The communication audit belongs on the same weekly scorecard as booking rate and average ticket. Not a quarterly project — weekly. I've seen my own sequences break after a Jobber update changed how webhooks fired. The "where is he?" call volume went up for two weeks before I caught it. It's not a set-and-forget system. It's a system you watch.


FAQ

My automations are already running in Jobber — do I have to rebuild from scratch or can I just change the message timing?

You don't need to start over. The biggest lever in Jobber is moving the on-my-way notification from dispatch to when the prior job actually closes — pair a job status webhook with a Zapier trigger instead of relying on Jobber's built-in time-based sends. But check the message content first. Pull your current templates and confirm they include a tech name and a hard arrival time. If they don't, fix the copy before you touch the timing. That's a 10-minute change with an immediate effect on call volume.

We don't use CallRail. How do I figure out how many inbound calls are actually "where is he?" calls?

Start with a paper tag. One week, have whoever answers the phone mark each call with one letter: B for booking, S for status, Q for quote, C for complaint, O for other. Five seconds per call. At the end of the week, count the S tags. If you're above 15% of total volume, you have a confirmation gap. In my experience, shops that run this for the first time usually land between 20% and 30%. Either way, now you have a number.

For commercial jobs, multi-day installs, or any situation where someone is coordinating building access — yes, it's useful. For standard residential service calls, usually not. If your on-my-way message includes a real name and a hard time, most customers don't open the tracker. Check your link open rates. If under 30% of customers click it, it isn't doing the work you think it is.

How do I send a real arrival time without my dispatcher manually updating every job as it closes?

The job-close webhook. In Jobber or Service Fusion, when a tech marks a job complete on their phone, that status change fires a Zapier zap that pulls the next customer's details and sends the message. Someone still needs to set a realistic completion time on each job at scheduling — that part requires a human. But the send itself is automatic once the prior job closes. The dispatcher closes jobs accurately, which they should be doing anyway to keep the schedule honest, and the trigger fires on its own.

What arrival window should I promise at booking — and does tightening it actually help?

Tighter windows don't reduce anxiety. They concentrate it into a shorter period. What reduces anxiety is the job-close trigger message, which effectively replaces the window with a single real time at the moment it becomes knowable. At booking, I give a 2-hour window because it's honest — I don't know at 7am what the morning looks like. What I do tell them is "we'll send you a real time when Marcus is on his way." When that message comes in with a name and an actual arrival time, the original window stops mattering.

Enjoyed this article?

Get articles like this in your inbox every Monday. Free, no spam.

More from The Backcharge