Alert your team when GoHighLevel messages go unanswered
Every 30 minutes during business hours, find the customer messages nobody has replied to yet and post one quiet Slack nudge.
On a cron schedule, every 30 minutes on weekdays between 8am and 6pm, sweep my GoHighLevel inbox for conversations where a customer wrote in and nobody on my team has replied yet, then alert my team about the ones that have been waiting too long.
Use the GoHighLevel Conversations Search Conversations operation against my sub-account (location) to pull recent conversations, sorted by most recent message first. Each conversation comes back with the contact name, whether the last message was inbound or outbound, when that message landed, and which channel it came through. Page through enough results to comfortably cover the last two business days.
Keep a conversation only if its most recent message is inbound, meaning it came from the contact and no outbound reply has been sent since. Discard every conversation where my team spoke last, and discard anything already closed or archived.
Work out how long each remaining contact has been waiting, counting business time only. Start the clock when the inbound message landed, or at 8am on the current working day if it arrived overnight, at the weekend, or after 6pm. A message that arrives at 2am must not be treated as overdue at 2:30am, it starts accruing wait time from 8am. Use the sub-account's local timezone for every comparison.
A conversation counts as a breach when that business-hours wait is more than 30 minutes. If nothing is over the threshold, end the run and do nothing at all. Do not post an empty digest and do not post an all-clear. The channel has to stay quiet on normal runs so people keep trusting the alert when it does fire.
When there is at least one breach, post exactly one grouped message to my Slack channel using the Slack Bot Send a Message operation. One message per run, never one message per contact. List each waiting contact with their name, how long they have been waiting in readable form such as 1h 15m, and the channel the message arrived on, translated into friendly labels like SMS, Email, Web chat, Facebook Messenger, Instagram, or WhatsApp rather than raw type codes. Sort longest wait first and put the number of waiting contacts in the heading.
In the same run, append one row per breaching conversation to my Google Sheet using Append Values, so response-time SLA can be reviewed at the end of the week. Use these columns: contact name, wait time in minutes, channel, and the timestamp of the inbound message. Append the rows in the same run that posts to Slack so the log and the alert never disagree.
A conversation that is still unanswered on a later sweep should appear again with a larger wait time, since it is escalating rather than resolved.
Keep the sub-account, the Slack channel, the spreadsheet, the 30 minute threshold, and the 8am to 6pm weekday window as clearly named settings at the top of the workflow so they are easy to change.
What does this prompt do?
- Checks your GoHighLevel inbox every 30 minutes on weekdays between 8am and 6pm for conversations where the customer spoke last and nobody has replied.
- Only counts a conversation as overdue once it has been waiting more than 30 minutes, so normal back and forth never sets off an alarm.
- Posts one grouped Slack message naming each waiting contact, how long they have been waiting, and which channel they used. If nothing is overdue, it posts nothing at all.
- Adds a row to a Google Sheet for every missed reply, so you can review response times at the end of the week.
What do I need to use this?
- A GoHighLevel account with access to the sub-account whose inbox you want watched
- A Slack workspace and the channel where the alerts should land
- A Google Sheet to collect the response time log
- A decision on your team's reply window, which starts at 30 minutes
How can I customize it?
- Change the reply window. Fast-moving sales teams often drop it to 15 minutes, while support teams stretch it to an hour.
- Shift the hours and days it sweeps to match when your team is actually at their desks.
- Send different channels to different places, for example route waiting text messages to a DM and leave email in the team channel.
- Read the log sheet back before appending if you would rather each conversation is recorded only once instead of on every sweep.
FAQs
Will it fill the channel with noise when things are quiet?
What happens to messages that arrive overnight or at the weekend?
Which kinds of messages does it watch?
Does it reply to customers automatically?
Why not just use a built-in GoHighLevel notification?
Related templates
When someone books a call, we research them, pull up what your team already told them, and hand the rep a brief in Slack and on their calendar.
Every new inbound message gets sorted by intent, urgency and mood, with a ready-to-send reply waiting in Slack before anyone opens the inbox.
Every Monday, find the leads who have gone quiet, read what they originally asked about, and send each one a short personal nudge.
Every morning, new open-text survey answers get checked for AI writing and logged to a spreadsheet, with a Slack alert when too many look suspect.
When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
Stop leaving customers waiting without knowing it.
Find out within half an hour when a message has gone unanswered, and keep a running record of every miss.