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.

Deterministic Code
GoHighLevelSlack BotGoogle SheetsSalesCustomer SupportNotifications & Alerts
PromptCreate

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?
No. If every customer message has already been answered, the workflow finishes silently without posting anything. That is deliberate, because an alert people learn to ignore is worse than no alert.
What happens to messages that arrive overnight or at the weekend?
The sweep only runs on weekdays between 8am and 6pm, and the waiting clock starts at the beginning of the next working day. A message that lands at 2am is not treated as overdue at 2:30am. It starts counting from 8am.
Which kinds of messages does it watch?
Any conversation in your GoHighLevel inbox, including text messages, emails, web chat, and social media messages. The alert tells you which one each contact used, so whoever picks it up knows where to reply.
Does it reply to customers automatically?
No. It only tells your team who is waiting. Every reply is still written by a person, so nothing goes out in your name that you did not write.
Why not just use a built-in GoHighLevel notification?
Built-in automation fires when something happens. This one fires when something does not happen, which is a reply that never came. That gap is exactly where response time quietly slips.

Related templates

Turn new GoHighLevel bookings into rep-ready pre-call briefs

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.

GoHighLevel
Google Calendar
Slack Bot
+1
Agentic Task
Triage new GoHighLevel conversations and draft the reply

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.

GoHighLevel
Slack Bot
Agentic Task
Re-engage dormant GoHighLevel contacts with personal messages

Every Monday, find the leads who have gone quiet, read what they originally asked about, and send each one a short personal nudge.

GoHighLevel
Google Sheets
Agentic Task
Screen Typeform survey answers for AI-generated responses

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.

Typeform
Pangram
Google Sheets
+1
Deterministic Code
Build a credential rotation checklist when someone leaves

When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.

1Password
Rippling
Slack Bot
+1
Agentic Task
Weekly Amazon S3 bucket security audit posted to Slack

Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.

Amazon S3
Slack Bot
Google Sheets
Agentic Task

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.