Turn every missed call into a text conversation within 60 seconds — automatically.
Every missed call isn't a non-event — it's a customer who needed something now, tried you, got nothing, and is one Google search away from calling your competitor instead.
Average job value in home services runs $500–$2,000 depending on trade and ticket size. That means every missed call carries real dollars attached to it — not hypothetical ones. Here's the math on a single, average-sized service business, using conservative, real-world numbers:
Based on 10 missed calls/week, an $800 average job value, and a 15.6% blended recovery rate (the share of otherwise-lost calls that book after receiving an instant text-back). Plug in your own call volume and average ticket — even a slower-moving business recovers thousands per year it's currently leaving on the table.
Everything below is quick to get, most of it cheap or free. Have these in hand before you open the build guide so you're not stopping mid-workflow to go set up an account.
Before you buy a number or build anything: any U.S. business number sending automated SMS needs A2P 10DLC registration — a carrier-required business texting registration. Unregistered numbers get filtered, delayed, or blocked outright. Register this in GHL under Settings → Phone Numbers → A2P Registration before you go live. This single step accounts for most "why isn't my text sending" problems, and registration can take 24–72 hours to clear — start it now, not on build day.
Twelve steps, start to finish. Each action, trigger, branch, and test is labeled so you always know what type of step you're building. Zero GHL experience required.
If you don't already have a GoHighLevel account, sign up and open (or create) the sub-account for the business you're building this for. Go to Settings → Phone Numbers → Add Number, and purchase a number through GHL's built-in Twilio integration ($1–2/month). This number receives calls and sends the automated text-backs — your existing public-facing number can simply forward into it.
From the left-hand menu, go to Automation → Workflows → + Create Workflow. Start from a blank workflow, not a template, so you have full control over every step. Name it something identifiable — e.g. "Missed Call Text-Back — [Business Name]" — so it's easy to find later.
Click Add New Workflow Trigger, search for "Customer Called," and add it. Inside the trigger's filter settings, set the call status condition to Missed (some accounts label this "No Answer"). This is the single most important setting in the whole build — without this filter set correctly, the workflow either fires on every call that comes through, or on none at all.
Add a Wait action set to 30 seconds directly after the trigger.
The 30-second buffer isn't wasted time — it's what makes this feel human instead of robotic. It gives whoever's on the floor a chance to notice the missed call and ring the customer back live, the way a real business would. Firing an automated text the instant a call drops feels cold and machine-triggered; a short pause lets a genuine callback win first, with the automation as the safety net.
Add a Send SMS action. Set the "from" number to the number you provisioned in Step 1. Use this exact template — copy it directly into the message body:
Add an Add Tag action and apply the tag missed-call-followup. This tag is what lets you filter, report on, and audit every contact that's gone through this workflow — you'll use it again in the verification checklist in Section 7.
Add a Create Task action, assigned to the business owner or the appropriate team member, due 2 hours from creation. Title it something like "Missed call — no reply yet, follow up manually." This is the human backstop: if the automated text doesn't get a reply, a real person still has a nudge to pick up the phone.
Add an internal notification action (SMS, email, or Slack, depending on what GHL integrations are connected) to alert the business owner or front desk that a missed call came in. Keep it short: "Missed call from [Contact Name/Number] — automated text-back sent." This keeps the team in the loop without requiring anyone to babysit a dashboard.
Add an If/Else condition on "Customer Replied." On the Yes path: remove the contact from the rest of this workflow (so they don't also receive the 24-hour follow-up in Step 10), and fire a second internal notification: "[Contact Name] replied — take over the conversation now." From here, a real person finishes the conversation — the automation's job is done the moment a human is engaged.
On the No path from Step 9, add a Wait until 24 hours have passed since the first text, then send exactly one follow-up SMS:
Only one follow-up fires here — see the Verification Checklist in Section 7 to confirm this doesn't repeat.
Call the tracked business number from a personal cell phone and let it go unanswered — don't hang up early, let it actually register as missed. Confirm, in order: the 30-second wait, the text-back arriving with the correct business name, the tag applying to your test contact, the internal task creating, and the owner notification firing. Time the whole sequence with a stopwatch to confirm it lands inside the expected window.
Test with a real phone call, not GHL's internal workflow simulator. Simulators skip real carrier delivery delays and won't catch A2P registration or timing issues that only show up on an actual call. And once testing is done, thoroughly remove your test number/contact from real reporting — see Verification Checklist item 10.
Toggle the workflow status from Draft/Paused to Published. Watch the first handful of real missed calls closely over the following few days — confirm timing, tone, and delivery hold up under real conditions before you consider the build finished.
The default template in Section 4 works for any business. These five are tuned to how each industry's customers actually think and talk — swap the one that matches your business straight into the Send SMS action.
For teams that want a code-first, self-hosted build instead of GHL — the same system, built as an n8n workflow calling the Twilio API directly. Functionally identical logic to Section 4, different infrastructure.
Build the reply-branch and 24-hour follow-up (Steps 9–10 in Section 4) as a second n8n workflow triggered off inbound SMS replies and a scheduled/delay node — keep it separate from the initial missed-call workflow so the two don't compete for the same trigger.
Run through all ten before you call this build finished. Every item here has caught a real problem in a real build — don't skip any.
Every one of these shows up regularly in real builds. Find the symptom, apply the fix, move on.
SMS not firing at all.
Check the number's A2P 10DLC registration/verification status first — unregistered numbers get silently filtered by carriers. Then confirm the workflow trigger filter is explicitly set to "Missed," not "All Calls" — a missing or misconfigured filter either fires on everything or nothing.
The wrong number appears as the sender.
Open the Send SMS action and check the "from" field is explicitly set to the correct GHL/Twilio number for this business — not a default, sandbox, or leftover number from a different sub-account used during setup.
Customers receive double texts.
Check for duplicate or overlapping workflows both listening to the "Customer Called — Missed" trigger — common when a workflow gets copied during testing and the original is never deactivated. Disable or merge them so only one workflow owns this trigger.
After-hours calls behave unpredictably.
Decide intentionally: same text-back at all hours, or a distinct after-hours message ("Thanks for calling — we're closed right now, back at [time]. Reply here and we'll get back to you first thing."). Add a time-based If/Else condition checking business hours and branch to the appropriate SMS action accordingly.
Known customers don't get texted — workflow silently skips them.
Usually duplicate contact records: the same phone number exists on two separate contacts (one from a web form, one from the call), so the missed-call event attaches to the wrong record or fails to match. Merge duplicates before go-live using GHL's contact merge tool, and re-audit for duplicates periodically as new leads come in.
This guide gets a competent operator to a working system in 45–60 minutes, plus whatever time it takes to debug the inevitable A2P registration snag or a misconfigured trigger filter. Upgraid builds this exact system for you, end-to-end, in under 24 hours — fully configured, tested against your real phone system, and tuned to your specific business, not a generic template.
What this guide takes you 45–60 minutes and some trial-and-error to DIY, we build fully configured, tested, and monitored — so it just works from day one.
Illustrative figures based on the business case in Section 2 — 10 missed calls/week, $800 average job value, ramping toward a $64,896 annual recovery run-rate.
Fully configured, tested against your real phone system, and monitored — so every missed call turns into a conversation, starting tomorrow.
upgraid.techOne-time purchase, importable straight into your GoHighLevel account. Missed-Call Text-Back is included in both tiers.
[Checkout not connected yet — payment link pending]