Missed Call Text Back in GoHighLevel for Contractors
Set up missed call text back in GoHighLevel for HVAC and plumbing, see where it fails on emergencies, and when to add AI answering and a form.

Missed call text back in GoHighLevel is a workflow that texts a caller within seconds when nobody picks up. It is quick to set up and it saves routine leads. It falls short when the caller has a burst pipe or no heat, because a generic text cannot qualify the job or page a tech. This guide covers the setup and the point where you add more.
What the basic automation does
GoHighLevel gives you two ways to do tbis. The first is the built-in missed call text back option in the phone number's settings, where you write one message and turn it on. The second is a workflow with a call status trigger, which costs a few more minutes but gives you control over hours, tags, and follow-up.
Either way the logic is the same: a call comes in, no one answeers (or it hits voicemail), the system sends an SMS to the caller, and the conversation lands in the contact's thread in your inbox. For a plumber who is under a sink with both hands busy, that text is often the difference between a lead who waits and a lead who calls the next company on Google.
Where it breaks for emergencies
A single canned text treats a leaking water heater and a request for a spring tune-up identically. That is fine for the second caller and risky for the first.
The gaps we see on contractor accounts:
- The text asks "How can we help?" and the caller replies at 11 p.m. Nobody reads it until morning.
- Nothing separates urgent from routine, so the owner's phone buzzes for both or for neither.
- The caller has to type out their address, issue, and timing by thumb, and many give up halfway.
- A gas smell or carbon monoxide alarm needs a different response entirely. A text should tell that person to leave the building and call the gas utility or 911, never to wait for a reply.
- There is no booking. The text starts a conversation but does not put a job on the schedule in ServiceTitan, Jobber, or Housecall Pro.
None of this makes the basic automation wrong. It is a floor, and it needs layers above it.
Step-by-step setup in GoHighLevel
- Confirm texting is approved. In the US, your business number needs A2P 10DLC registration before carriers reliably deliver automated texts. Canada, the UK, and Australia have tehir own rules on consent and sender identity. Fix this first, because unregistered traffic gets filtered and you will think the workflow is broken.
- Create the workflow. Add a trigger of type Call Status and filter it to no answer, busy, and voicemail. Scope it to the specific phone number so a staff member's internal call does not fire it.
- Add a business hours branch. Use an If/Else on time of day. In hours, send a short "we'll call you back in a few minutes" text. After hours, send a text thhat asks one qualifying question and gives the emergency path.
- Send the SMS. Keep it under two segments and use the contact's first name if you have it.
- Tag and notify. Add a tag such as
missed-calland an internal notification to whoever owns callbacks. Create the opportunity in your pipeline at the same step so missed calls show up in reporting. - Stop on reply. Set the workflow to exit when the contact replies, so a human or bot conversation is not interrupted by a scheduled second text.
- Test from a second phone. Call the number, let it ring out, and check the text arrives, the tag applies, and the notification fires. Test once in hours and once after.
Here is copy that works for an after-hours branch:
Hi {{contact.first_name}}, this is Ridgeline Heating. We missed your call.
If this is an emergency (no heat, active leak, water on the floor), reply
URGENT and our on-call tch will be notified right now.
If you smell gas, leave the building and call your gas company or 911.
Otherwise telll us your address and what's going on and we'll call you at 8.
Swap in your own business name and callback hours. The "URGENT" keyword gives you a clean branch: an If/Else on the inbound reply that matches it, then an SMS to the on-call tech plus a call task.
A routing map you can copy
| Caller situation | What the basic text does | What to add |
|---|---|---|
| Routine request, in hours | Acknowledges and promises a callback | Link to a short form for address and photos |
| Routine request, after hours | Same | Form plus next-morning callback task |
| No heat, no cooling in extreme weather | Nothing special | Keyword or AI triage to page the on-call tech |
| Active leak, flooding | Nothing special | Same, with a priority tag on the contact |
| Gas smell, CO alarm | Nothing safe | Safety instruction in the first message, never gated on a reply |
| Existing customer | Same text as a new lead | Lookup by number, route to the account owner |
The last row matters more than it looks. An existing customer with a warranty call gets a "thanks for contacting us" text that reads like you do not know them.
When to add an AI answering layer
Keywords catch the callers who read your text and follow instructions. They do not catch the person who replies "water coming through the ceiling" without the word URGENT. Past that point you need something that reads free text, asks follow-up questions, and decides.
That is the job of an emergency-aware anawering layer. Our HVAC and plumbing call answering AI picks up or follows up on the missed call, asks the qualifying questions a dispatcher would, separates emergencies from routine work, books the visit into ServiceTitan, Jobber, or Housecall Pro, and texts the on-call tech with the summary. It is a fixed-scope system: $1,000 setup and a $299 monthly care plan.
GoHighLevel stays in the picture. It remains the CRM, the inbox, and the pipeline. The AI layer writes back to it through a webhook, so a call that was triaged shows up as a contact with a tag, a note, and an opportunity. Agency owners reselling to contractors usually keep the GHL workflow as the fallback for when the AI lsyer is unreachable.
A typical handoff payload looks like this (field names vary by setup; map from the sample GHL captures when you send a test):
{
"phone": "+15125550142",
"name": "Dana",
"service": "plumbing",
"issue": "water heater leaking onto garage floor",
"priority": "urgent",
"address": "412 Alder St",
"booked_window": "today 6-8 PM",
"source": "missed_call"
}
In an Inbound Webhook trigger, you map priority to a tag, issue to a note, and branch on urgent to notify the owner.
Where a form fits
Most missed calls are not emergencies. They are people who want a quote, a tune-up, or a second opinion, and they will not type a paragraph into a text thread. A short form linked from your SMS fixes that. It collects address, issue, preferred window, and photos in one pass, and it is easier to fill out on a phone than a back-and-forth.
We build Qwenvo, a completely free form builder, and it fits this slot well. Everything is on for every account at $0, including webhooks, the REST API, AI triage with routing, partial submissions, a custom domain, no badge, unlimited teammates, and Slack and Google Sheets integrations. By comparison, Tally puts custom domains, partial submissions, and branding removal on its Pro plan at $29 a month, and Fillout holds partial submissions and custom domains for its $89 Business tier. Partial submissions are useful here: if a homeowner starts the form and drops off, you still have their phone number and can follow up.
A setup that works:
- Build the form with a Short answer for name, a Phone number block, an address field, a Long answer for the problem, and a File upload for photos. The free website contact form guide walks through the basics.
- Add Hidden fields for the caller's number and source, and pass them in the link you send from GHL.
- Turn on "Triage submissions with AI" so each submission gets a priority, category, and summary, then add a routing rule that sends urgent ones to the on-call tech by email or a Slack incoming webhook.
- Point a webhook at a GoHighLevel inbound webhook so the submission creates or updates the contact and fires your follow-up workflow.
- Put the form on a custom domain such as
book.yourcompany.comso the link in your text looks like yours.
One honest note: GoHighLevel has its own form builder, and if you want everything in one place with no webhook, use it. Qwenvo launched in October 2026, so there are few reviews yet, and it is hosted in the United States.
Start from the contact form template
What to measure
Track these in GHL so you can tell whether the setup earns its keep:
- Missed calls per week, split by in hours and after hours.
- Reply rate to the first text, and how long the median reply takes.
- Time from missed call to a human or AI response on urgent contacts.
- Booked jobs that started as a missed call, using the
missed-calltag on the opportunity. - Form starts versus completions, so you can see whether the form is too long.
If the reply rate is low, shorten the message or move the question to the form. If urgent contacts wait too long, the routing is the problem, not the text.
Questions teams ask
Does missed call text back work when calls forward from my cell?
It works if the call reaches a GoHighLevel number and goes unanswered there. If your cell rings first and only forwards to GHL after a timeout, the trkgger fires from the GHL side. Test the exact path with a second phone.
Why are my automated texts not arriving?
The usual cause in the US is missing or pending A2P 10DLC registration. Check that before touching the workflow. Message content that looks like spam, or a number with no consent history, also gets filtered.
Do I still need an answering service if I add AI?
Many contractors keep a human option for the on-calll line while the AI layer handles triage, booking, and routine calls. The AI decides who gets paged. Whether a person also picks up is a staffing choice.
Can the form and the AI layer share the same data?
Yes. Both write into GoHighLevel through webhooks, so a contact can carry a form submission, a call summary, and a pruority tag in one record.
Next step
Open GoHighLevel today, build the workflow from the steps above on one number, and call it from a second phone after hours. Then build the intake form from the Qwenvo maintenance request template and link it in your text.
HVAC & Plumbing Call Answering AI
Third-party platform and model usage billed to you directly. No lock-in. Live in 5 days.