HighLevel ships with a native checkbox that fires an automated SMS the instant an inbound call goes unanswered. We’re replacing that toggle today with a custom, multi-branch workflow that filters out existing clients, respects quiet hours, and handles landlines properly.
The native feature works fine if you need a two-minute quick fix, but it sends immediately (which screams automated robot to any prospect), completely ignores business hours, and texts your existing clients the exact same generic pitch. Rebuilding this inside the workflow engine gives you complete control over timing, tagging, and rep routing.

The Problem with HighLevel’s Default Missed Call Toggle
If you open sub-account settings under Settings > Business Profile, there is a section called Missed Call Text Back. Ticking that box turns on a hardcoded script that blasts a static message milliseconds after a call drops.
I disable this on every single sub-account I configure. Here is why:
- Zero context: It treats an angry existing client, a delivery driver, and a fresh inbound lead exactly the same.
- Unnatural speed: Firing an SMS 1.2 seconds after a hangup tells the caller an auto-dialer caught them. Adding a 2–3 minute delay consistently nets higher response rates.
- No quiet hours: If an inbound call hits your tracking line at 2:30 AM on a Sunday, the default system fires right back—risking TCPA violations and waking people up.
- No pipeline logic: It won’t create tasks, assign opportunities, or check if the caller already has an active support ticket.
If you’ve had triggers fail in the past, take a look at our guide on fixing missed call text back workflows not triggering to double-check your number configuration first.
Step 1: Turn Off the Native Missed Call Setting
Before building your workflow logic, disable the platform toggle first. If you forget, HighLevel fires both the default SMS and your new workflow message at the same time, hitting the caller with duplicate texts.
- Open your HighLevel sub-account.
- Click Settings at the bottom of the left sidebar.
- On the Business Profile tab, scroll down to the Missed Call Text Back card.
- Uncheck Enable Missed Call Text Back.
- Click Save at the bottom right.
With that off, your numbers will release the hardcoded fallback and listen strictly to your workflow triggers.
Step 2: Configure the Call Status Workflow Trigger
Start with a blank workflow canvas. Skip the pre-built recipes—they often carry over hidden filters or extra branches you’ll just have to untangle later.
Name the workflow [Core Engine] Inbound Missed Call Routing. Add a new trigger and select Call Status.
Apply these two filters inside the trigger:
- Call Direction: Set to
Incoming. - Call Status: Select
Missed,Busy, andVoicemail(orNo Answerdepending on carrier routing).
Here is what the raw underlying workflow trigger definition looks like in HighLevel’s schema if you inspect the workflow payload:
{ "triggerType": "CallStatus", "filters": [ { "field": "call_direction", "operator": "eq", "value": "inbound" }, { "field": "call_status", "operator": "in", "value": [ "no-answer", "busy", "canceled" ] } ]
}If you run multiple tracking numbers inside one sub-account (e.g., Google Ads vs. organic SEO numbers), add an In Phone Number filter to route them to separate messages or campaigns.
Step 3: Add Smart Delays and Carrier Checks
Don’t send the SMS instantly. Put a Wait step right below the trigger and set it between 90 and 180 seconds. That 2–3 minute buffer mimics an actual rep finishing another call before typing out a quick response.
Next, filter out non-mobile numbers. HighLevel will throw an error if it tries sending an SMS to a standard landline. Add an If/Else step named Check Phone Type:
- Branch 1 (Mobile): Contact Details -> Phone Type is
Mobile(or Phone Type is not empty and not Landline). - Branch 2 (Landline / Unknown): Fallback branch where you route an internal email or task notification instead of an outbound SMS.
Check the HighLevel Help Center if you need details on how Phone Lookup re-bills carrier validation fees via LC Phone.
Step 4: Branch by Business Hours and Contact Tags
Now split your Mobile branch based on whether the office is open. Drop in an If/Else action named Check Business Hours & Customer Status.
Configure the branches like this:
- Branch A (Open Hours – New Lead):
- Current Time is between
08:00 AMand06:00 PM(Account Timezone). - Current Day is
Monday, Tuesday, Wednesday, Thursday, Friday. - Contact Tag does not include
clientorvip-customer.
- Current Time is between
- Branch B (After Hours – New Lead):
- Contact Tag does not include
client. - (Catches anything outside normal operating windows).
- Contact Tag does not include
- Branch C (Existing Customer):
- Contact Tag includes
client.
- Contact Tag includes
For tighter control over late-night texting windows across time zones, check out our walkthrough on setting up SMS quiet hours in GoHighLevel workflows.
Step 5: Craft the Dynamic Outbound Messages
Keep your copy short and natural. Skip stiff corporate lines like “Your call is very important to us.” Ask a quick open-ended question that makes it effortless to reply.
For Branch A (Open Hours), use a casual, direct template with merge tags:
Hey { { contact.first_name | default: 'there' }
}, saw we just missed your call at { { location.name }
}
. I was on the other line—how can I help you today?For Branch B (After Hours), let them know the office is closed but set a clear expectation for when you’ll reach out:
Hi { { contact.first_name | default: 'there' }
}, thanks for calling { { location.name }
}
. Our team is out for the evening, but reply here with what you need and we will prioritize your request at 8 AM tomorrow!Rather than hardcoding business names and operating hours across multiple sub-accounts or locations, check out our guide on how to create and use custom values in GoHighLevel.
Step 6: Add Internal Notifications and Pipeline Tracking
Shooting an SMS back to the caller is only half the battle. If your team doesn’t know a call was missed, the lead will go cold the second they reply.
Drop these three actions right after the outbound SMS:
- Create / Update Opportunity: Move the contact into your
Lead Pipelineunder theMissed Call - Follow Up Neededstage. Keep the status set to Open. - Assign to User: Use a Round Robin pool or route directly to your primary on-call rep.
- Internal Notification: Fire an in-app push or SMS to the assigned user:
Missed call from {{ contact.phone }}. Auto-text fired. Check Conversations tab to step in.
If you want to review alternative structural patterns for this build, check our complete missed call text back workflow build guide.
Testing the Workflow and Fixing Common Failures
Don’t publish and walk away. Test this from an outside mobile number that isn’t attached to a team member profile in the sub-account (internal numbers can trigger user loop filters that suppress notifications).
Here’s what I check on every live test:
- Call from an external mobile phone: Let it ring for ~25 seconds until it drops or reaches voicemail.
- Check Execution Logs: Open the workflow, jump into Execution Logs, and confirm the contact enrolled the second the call dropped.
- Verify the Wait Timer: Ensure the contact is sitting in the wait queue instead of bypassing steps due to an empty field.
- Inspect Delivery: In Conversations, verify the outbound SMS shows a green checkmark indicating successful delivery through Twilio or LC Phone.
If the message shows Failed with error codes like 30007 or 30008, verify your A2P profile status in the Twilio A2P 10DLC documentation.
Frequently Asked Questions
Why did my contact get two identical text messages?
The native missed call toggle is still active. Head to Settings > Business Profile, uncheck Missed Call Text Back, and save.
Does this trigger if the caller leaves a voicemail?
Yes. When your Call Status filter includes Missed, Busy, and Voicemail (or No Answer), HighLevel treats completed voicemails as missed calls and triggers the workflow as soon as the recording ends.
Can I prevent the workflow from texting the same person multiple times a day?
Yes. Open workflow Settings at the top of the canvas and turn off Allow Re-entry. Alternatively, apply a temporary tag like mctb-sent and strip it after a 24-hour wait step.
Will this work with numbers ported from other carriers?
Yes, provided the numbers are fully configured inside HighLevel and assigned to a live forwarding destination or user.
Next Steps for Your Messaging Stack
Once this workflow runs reliably, the next priority is handling what happens when leads text back asking for an immediate time slot. Plug in your booking calendars and automate appointment reminders so those recovered calls turn into actual booked revenue.

