Agency Ops26 min read

The Missed Call Is the Leak: GoHighLevel for HVAC, Roofing and Plumbing Marketing

Every unanswered contractor call is a job handed to a competitor — here is the GoHighLevel system that recovers it automatically.

Farhad, founder of GHL Spark
Farhad · Founder, GHL Spark
Cover illustration — four ascending teal bars on a dark green background, marked GHL Spark, Agency Ops

In short

In home services, the single biggest revenue leak is not weak ad creative or a bad landing page — it is the phone ringing while your client is thirty feet up a ladder or lying under a sink with both hands full. Industry call-tracking data consistently puts missed-call rates for HVAC, roofing and plumbing contractors somewhere between 25% and 40% of inbound calls, and a homeowner with water on the floor or no air conditioning in August does not leave a voicemail and wait — they dial the next company on the results page. That means a contractor spending $6,000 a month on lead generation is routinely throwing away a quarter of it before a human ever speaks to the caller. The fix is not a receptionist and it is not asking the technician to try harder: it is an automated missed-call text-back that fires within seconds, a speed-to-lead sequence that contacts every form fill inside five minutes, and an estimate-to-job pipeline that keeps quotes from dying in silence. Build all of it once as a reusable GoHighLevel snapshot and you can deploy it to every HVAC, roofing and plumbing client you sign in under an afternoon.

Key takeaways

  • Missed-call rates for home-services contractors typically run between 25% and 40% of inbound calls, and most of those callers dial a competitor rather than leave a voicemail.
  • An automated missed-call text-back that fires within 30 seconds routinely recovers 20% to 35% of otherwise-lost calls, because it reaches the homeowner while they are still holding the phone.
  • Speed-to-lead matters more in home services than almost any other vertical — the odds of live contact fall sharply between five and thirty minutes, and emergency jobs are usually awarded within the hour.
  • A reusable roofing and HVAC snapshot turns every new contractor onboarding from a multi-day rebuild into a same-day deployment, which is what makes a $750 to $1,500 setup fee profitable.
  • Storm and seasonal demand spikes break manual follow-up first — a pre-built surge playbook with triage tagging and staged callback sequences is what keeps a roofing client from drowning after a hail event.

Your contractor client is thirty feet up a ladder in ninety-eight degree heat with a nail gun in one hand. His phone is in the truck. It rings four times and stops. Somewhere across town, a homeowner with a spreading ceiling stain looks at their screen, taps back, and calls the next roofer on the list.

That is the entire problem. Not the ad creative. Not the landing page conversion rate. Not the CRM you have been meaning to clean up. The phone rang, nobody could answer, and a job worth somewhere between four hundred and fourteen thousand dollars quietly moved to a competitor who happened to be sitting in a truck at that moment.

If you run marketing for HVAC, roofing or plumbing companies, this is the leak underneath every other number in your reports. You can double the lead volume and the leak scales with it. You can cut cost per lead by forty percent and the leak eats the savings. Until the unanswered call is handled by a system rather than by a hope that someone hears the ring, you are optimizing the top of a bucket with a hole in the bottom.

The good news is that this is one of the few problems in marketing with a clean, mechanical, deployable fix — and GoHighLevel happens to be extremely good at it. This post is about building that fix properly: what actually happens in the seconds after a missed call, what the text-back should say, how to route dispatch, how to build an estimate-to-job pipeline that does not rot, how to survive a storm surge, and how to package the whole thing as one reusable snapshot you deploy to every contractor you sign.

Why is the missed call the single biggest revenue leak in home services?

Every vertical loses leads. Home services loses them in a specific and unusually expensive way, for four structural reasons that do not apply to a law firm or a dentist.

The person who can answer is physically unable to answer. In a professional services business, someone sits at a desk near a phone. In home services, the entire revenue-producing workforce is inside crawlspaces, on roofs, in attics, under vehicles, wearing gloves, holding tools, running equipment loud enough to drown out a ringtone. For a one-to-five truck operation with no dedicated office staff — which describes the overwhelming majority of your clients — the phone is answered by whoever happens to have a free hand. Frequently nobody does.

The buyer is in an emergency state and will not wait. A homeowner researching a kitchen remodel might leave a voicemail. A homeowner with sewage backing up into a bathtub will not. Emergency and urgent-repair calls make up a large share of inbound volume in plumbing and HVAC, and those callers work down the search results in order until a human answers. Call-tracking studies across the trades consistently show that the majority of callers who reach voicemail simply do not leave one. They hang up and dial again — someone else.

The call is the terminal conversion point for every channel. Your Google Ads, your Local Services Ads, your GBP listing, your SEO, the truck wrap, the yard sign, the referral from a neighbor — all of it converges on a phone number. Which means the missed-call rate acts as a multiplier applied to your entire marketing budget. Cut it and every channel gets more efficient simultaneously.

The tickets are large enough that small percentages are real money. An HVAC service call averages a few hundred dollars, a repair a bit more, a system replacement anywhere from six to fifteen thousand. A roof replacement runs into five figures routinely. When a single recovered call can be a nine-thousand-dollar system swap, a missed-call rate of thirty percent is not a rounding error, it is the difference between a contractor growing and a contractor stalling.

Put numbers on it. A contractor takes 200 inbound calls a month. At a 30% miss rate, that is 60 unanswered calls. Say a conservative 40% of those were genuine job opportunities — 24 real jobs offered and dropped. At a blended average ticket of $600 across service, repair and the occasional replacement, that is $14,400 of revenue leaving the building every month. $172,800 a year. From a contractor who is simultaneously paying you to generate more calls.

Now show that arithmetic to a contractor. Not a click-through rate, not a cost per lead — that number. It is the single most persuasive thing you will ever put in front of a home-services owner, and it is the reason missed-call text-back closes deals that no case study can.

What actually happens in the ninety seconds after a missed call?

To build the right system you have to understand the behavioral window you are competing in, because it is measured in seconds, not hours.

Seconds 0 to 15. The caller has just hung up or been dumped to voicemail. The phone is still in their hand. Their screen is still on the call-ended view. They have not yet returned to the search results. This is the highest-value window that exists in home-services marketing, and it is the one almost every contractor forfeits entirely.

Seconds 15 to 90. The caller returns to their browser or their map app and taps the next listing. They may already be talking to your client's competitor by the ninety-second mark. If your text-back lands here it still works, but you are now interrupting an in-progress conversation rather than preventing one.

Minutes 2 to 30. Recovery is still possible but the framing changes. The homeowner may have booked someone, or may be waiting on a callback from a competitor and open to whoever confirms first. Messages that land here should compete on specificity — an actual appointment slot beats a vague offer to help.

Hours 1 to 24. For emergency work this is usually over. For non-urgent work — a replacement quote, a maintenance plan, a scheduled inspection — a next-day follow-up still converts respectably, which is why your text-back sequence should have a second and third touch rather than a single message.

The design implication is blunt: the first message must fire immediately, with nothing in front of it. No wait step. No conditional lookup that adds latency. No "check if this contact exists" branch. In GoHighLevel, the trigger fires and the very next action is the SMS. Every additional step you place before the send is spent out of a budget measured in seconds.

How do you build missed-call text-back properly in GoHighLevel?

Most agencies think they have missed-call text-back because they turned on the built-in toggle. That toggle is a starting point, not a system. Here is what a properly built version looks like.

The trigger

Build a workflow with a Call Status trigger, filtered to the outcomes that represent a real miss: no-answer, busy, and voicemail. Add a direction filter for inbound only — you do not want to text a customer because your client's outbound call to them went unanswered. Some setups also want failed included, though that is more often a carrier issue than a human miss.

Critically, the trigger should sit on the tracking number that all marketing traffic routes through, not on the owner's personal cell. If the contractor gives out a personal number on truck wraps and yard signs, you have a bigger conversation to have — every number that appears in public should route through a trackable line, or your reporting is fiction and your text-back has holes.

The first message, sent with zero delay

The very next node is a Send SMS action. No wait step, no if/else. Copy that works:

Hi {{contact.first_name}} — this is Dana at Ironwood Heating & Air. Sorry we missed you, we're out on a job right now. What's going on with your system? I can get you scheduled straight from here.

If the caller is unknown and the first-name merge field is empty, drop it. A stray comma before an empty name reads as broken automation. Either build two branches on whether the field is populated, or write copy that does not need a name at all — the nameless version performs nearly identically and is one less thing to break:

Hi, this is Dana at Ironwood Heating & Air — sorry we missed your call, we're out on a job. What's going on with your system? I can get you on the schedule from here.

Four things this copy is doing:

It identifies the business immediately. An unknown number texting "sorry we missed you" reads as spam. The business name in the first six words converts it into a legitimate callback.

It explains the miss as competence. "We're out on a job" is not an apology for disorganization, it is proof the company is busy and in demand. Contractors get nervous about admitting they missed a call; reframe it for them. Homeowners understand that a good plumber is under someone else's sink.

It uses a human first name. "Dana" outperforms "the team at Ironwood." Even when Dana is a shared inbox, a name invites a reply.

It ends in an open question. Not "reply YES to book" — an actual question. The answer gives you triage information you need anyway ("AC blowing warm since last night") and starts a conversation instead of a transaction. Save the booking link for message two.

Business hours handling

Do not delay the text outside business hours — branch the copy instead. An after-hours version acknowledges the timing and sets an honest expectation, while still capturing the lead:

Hi, this is the after-hours line at Ironwood Heating & Air. We're closed right now but I'm reading messages. If this is an emergency — no heat, water leak, no power to the unit — reply EMERGENCY and I'll get someone paged. Otherwise tell me what's going on and we'll call first thing at 7am.

That message does two jobs: it captures a lead that would otherwise be lost overnight, and it separates true emergencies from things that can wait, which is exactly the triage your client's on-call tech needs.

The follow-up ladder

One message is not a system. Structure the sequence like this:

Immediate: the conversational first text above.

Five minutes, if no reply: a single follow-up offering a concrete next step, including a booking link. "No rush — if it's easier, here's our schedule and you can grab a slot yourself." One link, one line.

One hour, if no reply: a short value or reassurance message. For HVAC in August, something acknowledging the heat and offering a same-day diagnostic slot. For plumbing, an emergency-availability note.

Next morning, if still no reply: a final "still need help with this?" text, then exit the sequence and drop the contact into a long-cycle nurture list.

Every step must have a reply-detection exit. The instant the contact responds, the automation stops and the conversation belongs to a human. Nothing is worse than a homeowner who has already texted back receiving an automated "still need help?" ninety minutes later. In GoHighLevel this means a wait step configured to break on customer reply, plus a defensive tag check on subsequent steps.

Routing the reply to a human who will actually see it

This is where most builds quietly fail. The text-back fires beautifully, the homeowner replies within forty seconds, and the reply lands in a GoHighLevel conversation inbox that nobody on a roof is looking at.

The reply must be pushed, not pulled. Options in order of reliability:

Internal SMS notification to the dispatcher or owner's cell with the caller's number and the body of their message inline, so it can be acted on without opening an app. This is the workhorse and it should be on by default.

Escalation timer. If nobody responds inside ten minutes, fire a second internal notification to a backup, then a third at twenty minutes to the owner. Unacknowledged customer replies are the most expensive thing in the system; treat them like a pager, not an inbox.

The mobile app with notifications actually enabled. Worth setting up during onboarding, on the client's phone, with you watching. Do not assume. Half of the "your system doesn't work" complaints you will ever receive from contractors trace back to notification permissions that were never granted.

For clients with a dispatcher or office manager, route to that person first and the owner second. For a solo operator, everything goes to their cell and you accept that they will read it between jobs — which is still a dramatic improvement over a voicemail they check at 7pm.

What does true speed-to-lead look like for a form fill?

Missed calls are half the leak. Form fills are the other half, and they leak for a different reason: nobody is watching the email inbox the lead notification lands in.

The rule is the same as every other vertical, only sharper because home services buyers are often in urgency: contact within five minutes, and have the system initiate the contact rather than notifying a human and hoping.

A correct form-fill flow:

Second 0: SMS to the lead. "Hi, this is Dana at Ironwood — got your request about the AC not cooling. I can get someone out today or tomorrow. Which works better?" Immediate, conversational, ends in a question with two options.

Second 5: Email in parallel, slightly longer, with the booking link, service area confirmation, and a photo of the actual team. Email is the backup channel, not the primary.

Second 30: Automated call bridge, if the client will accept it. GoHighLevel can ring the contractor's phone and, on answer, dial the lead and connect them. This is the highest-conversion mechanic that exists and the one most agencies never turn on because it requires a conversation with the client about when they will accept a bridged call. Have that conversation. Set hours. Even a bridge that only runs 8am to 4pm weekdays outperforms notification-and-hope.

Minute 5, no contact: internal notification escalation.

Minute 30, 2 hours, next morning, day 3, day 7: a declining-frequency follow-up sequence, alternating SMS and email, exiting on any reply or booking.

Two implementation notes that matter in this vertical specifically. First, capture the service address early — home services leads are geographically constrained and a lead outside the service area should be tagged and routed differently, not run through the full sequence. Second, ask what is wrong in the form, in the customer's own words, in a free-text field. That single field is worth more to a dispatcher than any dropdown, and it makes your first SMS specific instead of generic.

How should the estimate-to-job pipeline be built?

Once a lead is contacted and an appointment is set, most contractor operations lose track of the money. The estimate goes out, the customer says they will think about it, and it disappears into a truck console. Ask any contractor what their quote close rate is and watch the pause — most genuinely do not know, and the ones who do are usually guessing high.

Build one opportunity pipeline that maps to how the work actually flows:

New Lead — captured, not yet contacted. Anything sitting here more than fifteen minutes during business hours should be firing alerts.

Contacted — two-way conversation established.

Appointment Scheduled — a diagnostic or estimate visit is on the calendar.

Estimate Sent — the quote is in the customer's hands. This is the single most important stage in the pipeline and the one where the most money dies.

Follow-Up — an active, sequenced pursuit of an unsold quote.

Won / Job Scheduled — accepted, on the schedule.

Job Complete — work finished. This stage triggers review requests and warranty or maintenance-plan follow-up.

Lost — with a required reason: price, timing, went with competitor, no response, out of area. The reason field is what turns a pipeline into an intelligence system. After ninety days you can tell a contractor "you lose 34% of quotes to no response, not to price" — and that is a completely different business problem with a completely different fix, one you happen to sell.

Two refinements worth building in. Add a value to every opportunity at the estimate stage, so pipeline reporting is denominated in dollars rather than card counts — contractors respond to "$84,000 in open estimates" in a way they do not respond to "23 opportunities." And add stage-duration automations: an opportunity sitting in Estimate Sent for more than fourteen days without activity should notify the owner, because that is a quote quietly going cold.

For roofing clients, consider a parallel insurance-claim pipeline. Claim work has a genuinely different flow — inspection, adjuster meeting, scope approval, supplement, build, final invoice — and forcing it into a retail pipeline produces garbage reporting for both.

What is the right quote follow-up cadence?

Unsold estimates are the largest pile of recoverable money on a contractor's books, and almost nobody works them, because working them requires remembering to and contractors are busy doing the actual work.

A cadence that performs, anchored to the estimate-sent date:

Same day: thanks plus recap. Restate what was quoted, the price, and what happens next. Attach or link the quote again. "Thanks for having us out today. That's $8,450 for the 3-ton system with the ten-year parts warranty, and we could have it in Thursday. Any questions, text me right here."

Day 2: a short, low-pressure check-in. "Just checking you got the quote okay — happy to walk through the line items if anything's unclear." Sent as SMS, from the estimator's name.

Day 4: value or objection pre-emption. Financing options, warranty comparison, or a short note on why the recommended option was chosen. This is where you handle price without discounting.

Day 7: an internal task for the owner or estimator to actually call. Automation gets you to day seven; a human closes.

Day 14: "Is this still on your list, or should we close it out?" This message converts surprisingly well because it gives the homeowner permission to say no, and a meaningful share reply that they still want it and simply got busy.

Day 30 and monthly thereafter: low-frequency, seasonally-relevant touches until they buy or explicitly decline.

The non-negotiable structural rule: every step must exit the moment the opportunity leaves the Estimate Sent or Follow-Up stage. A customer who accepted on day three and receives a "still thinking it over?" text on day four will lose confidence in the contractor, and the contractor will lose confidence in you. Build the exit conditions before you build the messages.

For seasonal equipment, add a dormant re-entry: a quote for a system replacement that went cold in March should get a fresh touch in the first genuinely hot week of June. That is a pure-margin revenue line most contractors have never accessed.

How do you survive a storm surge or a seasonal spike?

Every home-services calendar has violence in it. HVAC gets the first heat wave and the first hard freeze. Plumbing gets the freeze and the holidays. Roofing gets hail, and hail does not send a calendar invite.

The pattern is always the same: normal volume for weeks, then a single day where inbound goes up five, ten, twenty times, and every manual process the contractor was quietly relying on fails at once. The phones flood. Nobody can answer. The text-back that comfortably handled forty calls a week is suddenly handling four hundred. The pipeline becomes an undifferentiated wall of cards. Homeowners who are genuinely panicking hear nothing for three days and give the job to whichever out-of-state truck is parked at the end of their street.

The mistake is trying to run surge volume through the everyday system. Build a separate playbook and switch it on.

Reframe the goal. During a surge the objective is not conversion, it is triage and acknowledgement. Your client cannot service four hundred roofs this week and everyone knows it. What determines whether they capture the profitable share of that demand is whether every inquiry gets acknowledged fast and sorted honestly.

Switch the auto-reply copy. Your normal missed-call text-back promises a fast callback. During a surge that promise becomes a lie, and a broken promise is worse than a longer honest one. Have a storm-mode version ready to swap in:

Thanks for reaching out to Ironwood Roofing. We've had a big response since Tuesday's hail and we're booking inspections about 4 days out. Reply with your address and a photo of any damage you can see and we'll get you on the list — if you have an active leak inside the house, reply LEAK and we'll prioritize you today.

That message sets an honest expectation, requests the exact information needed to triage, and creates an emergency channel. Homeowners told the truth will wait. Homeowners told nothing will not.

Tag aggressively on intake. Three buckets minimum: active interior leak (emergency, same-day tarp or repair), visible exterior damage (inspection queue), insurance-claim inspection (a longer, different process). Roofing surges are mostly claim work, and claim work has a slower clock — separating it from active leaks is what keeps the emergency queue small enough to actually serve.

Stage the callbacks. Anyone who cannot be reached today gets an automated update tomorrow with a revised position and window. Silence is the reputation killer. A daily "you're still on the list, we're now at Thursday" text costs nothing and holds a lead through a week of waiting.

Pre-build the capacity conversation. Before the season starts, agree with your client what happens at capacity — do they refer overflow to a partner, hire subs, or take deposits and schedule out? Have that decision made in April so that on the day of the storm you are executing rather than deliberating.

Do not forget the pre-season campaign. Surges are half the seasonal story; the other half is the demand you can create before them. A maintenance-plan campaign to the customer database in late April, a furnace-tune-up campaign in September, a gutter and roof-inspection campaign after the first autumn storms — these are simple, repeatable, high-margin campaigns that most contractors never run because nobody built them once. Build them into the snapshot and they run every year on a date trigger with no human involvement.

How did Ironwood Marketing recover 312 lost calls in a single summer?

Ironwood Marketing is a six-person agency serving 14 HVAC and roofing contractors across a metro market. Two founders, two account managers, one media buyer, one part-time build tech. Comfortable book, decent retention, and a chronic problem: clients loved the lead volume and complained constantly that the leads "didn't answer" or "weren't serious."

The founders assumed it was a lead-quality problem and spent two quarters tuning targeting and creative. It moved nothing. Then they installed call tracking properly across all 14 clients and looked at answer rates for the first time.

The average missed-call rate across the book was 31%. On the three smallest contractors — owner-operators with one or two trucks and no office staff — it was above 45%. They were generating calls their clients structurally could not answer, then getting blamed for lead quality.

What they built

They spent three weeks building a single home-services snapshot rather than fixing clients one at a time. It contained the missed-call text-back workflow with business-hours branching and a four-step ladder, a five-minute speed-to-lead sequence for form fills with an optional call bridge, the eight-stage estimate-to-job pipeline with required loss reasons, the quote follow-up cadence, seasonal campaign shells on date triggers, a post-completion review request sequence, an estimate-reactivation campaign, and a client-facing dashboard reporting calls recovered, appointments booked, pipeline value and won revenue.

Then they deployed it to all 14 accounts over nine days. Per-client configuration — business name, numbers, service list, service area, calendar, technician routing, brand voice on the message copy — ran between two and four hours each. Nothing was rebuilt.

What happened

Over the four months from May through August, across all 14 accounts, the missed-call text-back received a reply from 312 callers who would otherwise have been lost entirely. That is 312 conversations that previously ended in a hang-up.

Of those, 118 became booked appointments. 74 became completed jobs. At the blended average ticket across the book — heavier on HVAC repair, with a handful of replacements and two roof replacements in the mix — those 74 jobs represented just under $118,000 of contractor revenue traceable to a text that fired automatically after a call nobody answered.

Reply rate to the first text-back message averaged 38%, peaking at 44% on the accounts where the text fired in under fifteen seconds and dropping into the twenties on one account where a conditional lookup had accidentally been left in front of the SMS action. Ironwood found that bug in week three by comparing per-account reply rates — a diagnostic they only had because the dashboard existed.

The secondary effect mattered more commercially. "Lead quality" complaints essentially stopped. The conversation with clients changed from arguing about whether leads were real to reviewing how many recovered calls became jobs. Two clients increased ad spend within the quarter. Retention across the book went from losing roughly one client a quarter to zero departures over the following three quarters.

The hail event

In late June, a hail line went through the northern half of the metro. One of Ironwood's roofing clients — four crews, mostly retail work, some claim work — went from about 20 inbound calls a week to just over 300 in the first four days.

The everyday system would have buried them. Instead Ironwood switched on the storm playbook they had built in the spring and never used.

They swapped the auto-reply to the storm-mode copy with the honest four-day inspection window and the LEAK keyword. They activated the storm pipeline with its three intake tags. They set the staged daily callback update. They added a second tracking number for the storm campaign so the surge did not contaminate the client's baseline reporting. And they had one account manager doing nothing but watching the emergency queue for four days.

Over three weeks the client logged 847 inquiries. 61 were tagged as active interior leaks and got same-day or next-day tarping. 388 were inspection-queue retail or claim work and were scheduled out over five weeks. The rest were out of area, cosmetic, or duplicates, and were filtered without consuming crew time.

The client booked more work in three weeks than in the previous five months, and — the part the owner still talks about — did not lose a single review over responsiveness during the busiest period in the company's history. Every inquiry got an acknowledgement inside a minute and an honest expectation inside a day.

Ironwood's read afterward was simple: the playbook was worth nothing until it was pre-built, and pre-building it took about six hours in a quiet week in April. Nobody builds a storm playbook during a storm.

What if you are a solo operator with three contractor clients?

Everything above assumes an agency with a build tech and account managers. Most people reading this are one person with a laptop, three clients, and a plan to get to ten. This section is for you, because the advice genuinely differs.

Your constraint is not knowledge, it is rebuild time. You can build a missed-call text-back. What you cannot afford is building it from scratch every time you sign a contractor, because at a $750 to $1,500 setup fee, a week of building is a wage below what the contractor's own apprentice makes. The single decision that determines whether you get to ten clients is whether you build once and deploy, or build every time.

Start with a smaller snapshot than you think you need. The instinct is to build the complete system before selling it. Do not. Version one needs exactly four things: missed-call text-back, form-fill speed-to-lead, a simple pipeline, and a review request after job completion. That is sellable, deliverable in an afternoon, and immediately valuable. Add the quote follow-up cadence at client three, the seasonal campaigns at client five, the reactivation campaign at client seven, the dashboard when a client asks for it. A snapshot you have actually deployed nine times is worth more than a perfect one you have deployed twice.

Sell the missed-call number, not the service. Your discovery call is one question: "How many calls do you think you miss in a week?" They will guess low. Offer to find out — put tracking on their line for two weeks, free, and bring back the actual number. That report is your entire sales presentation. The contractor who sees that they missed 41 calls last month and does the multiplication themselves is not a prospect you need to convince, they are a prospect asking when you can start.

Price the setup at the top of your range and defend it. $750 to $1,500 for a system that recovers a five-figure annual leak is one of the more obviously underpriced things in marketing. The reason to hold at $1,000 to $1,500 rather than dropping to $500 is not greed, it is that a contractor who paid $500 treats it as an experiment and a contractor who paid $1,500 turns their notifications on. Charge enough that they participate.

Structure the retainer around three deliverables, not vague "management." At $300 to $700 a month, be explicit: system monitoring and fixes, one seasonal or reactivation campaign per month, and a monthly performance report in jobs and dollars. Three concrete things. Contractors renew retainers they can describe.

Protect yourself from support drag. The one thing that kills solo operators is becoming a contractor's IT help desk. Record a four-video onboarding — how to read a conversation, how to move a card, how to check the calendar, what to do if a text does not arrive — and send it every time. Set a response-time expectation in the agreement. And build the escalation notifications properly so the system nags the client rather than the client calling you.

Know when to buy the build. If you are spending your week building instead of selling, the arithmetic has gone wrong. A done-for-you snapshot build — which is exactly what we do at GHL Spark — costs less than a week of your own selling time and comes with the automations, pipelines and reporting already wired for HVAC and roofing. Whether you build it or buy it, the goal is identical: never build the same thing twice.

How do you prove ROI to a contractor who hates marketing reports?

Contractors have usually been burned. Somebody showed them a chart of Facebook impressions and charged them $2,000 a month for it. That memory is why your reporting has to look nothing like marketing reporting.

Report in three numbers and nothing else. Calls recovered. Estimates issued and their total value. Jobs won and their revenue. Everything else — click-through rate, cost per click, reach, engagement — is either an internal optimization metric or noise, and putting it in a contractor report actively costs you credibility.

Lead with the recovered-call number every month. It is the number that is uniquely yours. Nobody else can claim it, it did not exist before you arrived, and it is denominated in things that would have been lost. "We caught 47 calls you would have lost this month. 19 became appointments. 11 became jobs worth $9,400." A contractor paying you $500 a month reads that and does the division instantly.

Show pipeline value, not pipeline count. "$84,000 in open estimates, of which $31,000 has been sitting more than two weeks" is a sentence that gets a contractor to pick up a phone. "23 opportunities in the estimate stage" is not.

Use the loss reasons. Once you have ninety days of required loss-reason data, you can tell a contractor something no one else has ever told them about their own business — that they lose a third of their quotes to no response rather than to price, or that their close rate on jobs quoted the same day is double their close rate on jobs quoted three days later. That is consulting-grade insight generated automatically by a field you made mandatory. It is also, conveniently, how you sell the next tier of service.

Send it as a short email, not a PDF dashboard link. Four sentences and the three numbers, in the body of the email, readable on a phone in a truck at 6:30am. Attach or link the detail for anyone who wants it. Almost nobody clicks. The email is the report.

What does the whole system look like as a productized offer?

Pull it together into something you can sell in a single call.

The build, delivered in one deployment:

Missed-call text-back with sub-thirty-second fire time, business-hours branching, a four-step follow-up ladder, and escalating internal notifications. Speed-to-lead for form fills with instant SMS, parallel email, optional call bridge, and a declining-frequency sequence. An eight-stage estimate-to-job pipeline with opportunity values, required loss reasons, and stage-duration alerts. A quote follow-up cadence anchored to estimate-sent date with hard exit conditions. Seasonal and storm campaign shells on date and manual triggers. Post-completion review requests routed to Google Business Profile. An estimate-reactivation campaign for dormant quotes. A per-client dashboard reporting recovered calls, appointments, pipeline value and won revenue. A2P 10DLC brand and campaign registration handled during onboarding.

Priced at $750 to $1,500 setup, $300 to $700 per month. Setup at the top of the range for multi-location or multi-trade operations; retainer scaled to volume and campaign cadence.

Delivered in a day, not a month, because it is a snapshot deployment plus configuration, not a build. That speed is a selling point in itself — a contractor who signs on Tuesday and sees their first recovered call on Wednesday is a contractor who stays.

The pitch is one sentence. Your phone rings while you are on a roof, and every call you miss is a job somebody else does. We make sure the ones you miss get answered anyway.

That is the offer. It is not complicated, it is not novel, and it works because almost nobody in home services has it — which means for every contractor in your market right now, the phone is ringing, nobody is answering, and the job is going to whoever picks up.

Ready to stop the leak?

If you are running a home-services book and rebuilding every contractor from scratch, or you are a solo operator trying to get past three clients without drowning in builds, the bottleneck is the same: you need one snapshot that deploys in an afternoon and holds up in a storm.

That is what we build. GHL Spark delivers a done-for-you home-services GoHighLevel snapshot — missed-call text-back, speed-to-lead, estimate-to-job pipeline, quote follow-up, seasonal and storm playbooks, review requests, reactivation, and per-client reporting — configured for your brand and ready to deploy across every HVAC, roofing and plumbing client you sign.

Book a call and we will walk through your current setup, find where your clients' calls are going, and map what a single reusable snapshot would look like for your book.

Frequently asked questions

Is missed-call text-back really that big a deal, or is it just a nice-to-have feature?
It is the highest-ROI single automation you can deploy in home services, and it is not close. Every other channel your contractor client uses — ads, SEO, Local Services Ads, yard signs, truck wraps — terminates in a phone call, and a meaningful share of those calls go unanswered because the person qualified to answer is physically working with their hands. A homeowner whose air conditioning died in August does not leave a voicemail; they hang up and call the next result. Missed-call text-back intercepts that moment, usually within thirty seconds, while the phone is still in the caller's hand and before they have dialed anyone else. Recovering even a quarter of missed calls on a contractor doing thirty missed calls a week at a $450 average ticket is roughly $140,000 a year in recovered revenue. It costs pennies per message to run.
How fast does the text-back actually need to fire?
Under thirty seconds, and ideally under fifteen. The window you are competing in is the handful of seconds between the caller hanging up on your client and the caller tapping the next search result. If the text lands while they are still looking at the call-ended screen, response rates are extremely high. If it lands three minutes later, they have often already spoken to someone else. In GoHighLevel this means triggering off the Call Status trigger for no-answer, busy and voicemail outcomes with zero wait step in front of the SMS action. Do not put the text behind any conditional lookup, drip step, or business-hours check that adds latency — handle business hours by branching the message copy, not by delaying the send.
What should the missed-call text-back actually say?
Short, human, from a real business name, and ending in a question that is easy to answer with one thumb. Something like "Hi, this is Dana at Ironwood Heating & Air — sorry we missed your call, we're out on a job. What's going on with your system? I can get you on the schedule from here." Three things make it work: it names the business so the homeowner knows who is texting, it explains the miss in a way that reads as competence rather than neglect, and it asks an open question so the reply carries useful triage information. Avoid anything that reads like an autoresponder — no "your call is important to us", no ticket numbers, no links as the first message. Save the booking link for the second message after they reply.
Does missed-call text-back create compliance problems with A2P 10DLC?
It is generally one of the cleanest use cases you can register, because the message is a direct reply to an inbound call the consumer initiated — that is about as strong a consent signal as exists. You still need the contractor's brand and campaign registered under A2P 10DLC before any volume flows, and your campaign description should explicitly state that messages are conversational replies to inbound customer calls and service inquiries. Keep opt-out language on the first message of any outbound marketing sequence such as reactivation or seasonal campaigns, but a conversational reply to a missed call does not need to open with legal boilerplate. Register early — carrier vetting can take days, and a client whose texts are silently filtered will assume your system does not work.
We are a two-person agency. Can we realistically manage this for ten contractor clients?
Yes, but only if you refuse to build custom. The operators who drown are the ones who treat each contractor as a bespoke project; the ones who scale build a single home-services snapshot with the missed-call text-back, speed-to-lead sequence, estimate pipeline, quote follow-up cadence, review requests and reporting dashboard already wired, then change only the business name, phone number, service list, service area and calendar per client. That turns onboarding into a half-day of configuration instead of a week of building. At a $750 to $1,500 setup fee and a $300 to $700 monthly retainer, ten clients is a solid book that two people can genuinely hold, provided your monthly work is reporting and optimization rather than firefighting.
How do we prove ROI to a contractor who does not trust marketing reports?
Report in jobs and dollars, never in impressions or clicks. Contractors are numerate, skeptical, and have usually been burned by an agency that showed them a chart of Facebook reach. The three numbers that land are calls recovered by text-back, estimates issued, and jobs won with revenue attached. Build a dashboard that shows missed calls intercepted this month, how many of those became booked appointments, pipeline value by stage, and won-job value by lead source. Then translate it in one sentence in the monthly email — "we caught 47 calls you would have lost, 19 became appointments, 11 became jobs worth $9,400." A retainer that is visibly returning several times its cost in traced revenue is the easiest renewal conversation in this business.
What is the right follow-up cadence for an unsold estimate?
For a residential repair or replacement quote, run same-day thanks and recap, day two a short check-in offering to walk through the numbers, day four a value or financing message, day seven a call task for the owner, day fourteen an "is this still on your list" text, then a monthly touch until they buy or explicitly decline. The critical structural point is that the sequence must stop instantly the moment the quote is accepted or the opportunity is moved out of the estimate stage — nothing damages trust faster than a contractor's system nagging a customer who already paid. Use an event start date tied to the estimate-sent date and add pipeline-stage exit conditions on every step.
How do you handle a storm surge without the whole system collapsing?
By deciding in advance that during a surge your job is triage, not conversion. Have a pre-built storm playbook you can switch on: a dedicated storm pipeline, a tagging scheme that separates active leaks from cosmetic damage from insurance-claim inspections, an inbound auto-reply that sets an honest expectation about callback windows, and staged callback sequences so homeowners who cannot be reached today receive a real update tomorrow rather than silence. The single biggest cause of reputation damage after a hail event is not slow service, it is unacknowledged inquiries. A homeowner told honestly that they are on a four-day inspection list will wait; a homeowner who hears nothing for four days calls the out-of-state chaser truck parked at the end of their street.

About the author

Farhad, founder of GHL Spark

Farhad

Founder, GHL Spark

Farhad is the founder of GHL Spark, where he builds and white-labels GoHighLevel SaaS platforms for agencies and SaaS operators. He writes about the parts of GoHighLevel that actually break in production — A2P registration, onboarding, support load and automation.

Want this handled for you?

We set up, configure and white-label your GoHighLevel SaaS — so you can sell it instead of building it.

Fixed quote · No lock-in · Launch-ready in ~7 days