# Escalate Help Scout conversations that have been waiting too long

> Every hour, we find the support conversations where a customer is still waiting on us, flag the overdue ones, and post a ranked alert to Slack.

- Workflow type: agent
- Services: Help Scout, Slack Bot
- Categories: Customer Support
- Published: 2026-08-14

## What it does

- Sweeps your Help Scout inboxes every hour during business hours and checks every open conversation to see who spoke last
- Skips anything where your team already replied, so you only hear about customers who are genuinely still waiting
- Counts waiting time in business hours only, so a Friday evening message is not treated as three days late on Monday morning
- Reads the customer's own words and escalates faster when someone sounds frustrated, threatens to cancel, or is chasing a reply they were promised
- Tags and annotates every overdue conversation in Help Scout, assigns it to a teammate if nobody owns it, and posts one grouped Slack alert ordered by most overdue first

## What you'll need

- A Help Scout account with the inboxes you want monitored
- A Slack workspace and the channel your support team watches
- An idea of how long a customer should wait before it counts as a problem, for example four hours for a warning and eight hours for a breach
- Your team's working hours and timezone, so waiting time is measured fairly
- A tag name to use for overdue conversations, for example sla-overdue

## Prompt

Every hour on the hour between 9am and 6pm, Monday to Friday, sweep my Help Scout inboxes for conversations that have been waiting too long on us and escalate them before they turn into complaints. Adjust the schedule and the coverage window to match our support hours.

Start with Help Scout List Inboxes to get every inbox the connection can see, then use List Conversations on each one to pull every conversation whose status is active or pending, paginating until you have them all. Ignore closed and spam conversations. If I name specific inboxes, restrict the sweep to those and skip the rest.

For each conversation, call List Threads and work out who spoke last. Find the most recent customer message, then confirm that nobody on our team has sent a reply after it. If the newest customer-facing thread came from our side, we already answered and are waiting on the customer, so skip that conversation entirely. Internal notes do not count as a reply to the customer. The waiting clock starts at the timestamp of that most recent unanswered customer message.

Measure waiting time in business hours, not raw elapsed time. Treat business hours as 9am to 6pm, Monday to Friday, in our timezone, and count only the hours that fall inside that window. A message that arrives at 5pm on Friday has one business hour on the clock when Monday morning starts, not sixty. Make the working hours and timezone easy for me to change.

Judge each waiting conversation against tiered thresholds. Flag it as a warning once it passes 4 business hours of waiting, and treat anything past 8 business hours as breached. Then read the actual thread text and bump the tier up when the tone justifies it: the customer sounds frustrated or angry, mentions cancelling, churning, refunds, or escalating, or is visibly chasing a reply they were already promised, for example a second or third follow-up with no answer from us. A strongly negative or repeat-chase conversation sitting at warning level should be promoted to breached. Keep the thresholds and this escalation logic simple for me to tune.

For every breached conversation, do three things in Help Scout. First, apply an overdue tag using Update Conversation Tags, defaulting to sla-overdue. That operation replaces the whole tag set, so read the conversation's current tags with Get Conversation first and send the existing tags plus the new one, otherwise you will wipe tags the team relies on. Second, add an internal note with Create Note stating how many business hours it has been waiting, which threshold it crossed, and why it was flagged, including the tone signal if that is what escalated it. Keep the note short and factual. Third, if the conversation is unassigned, call List Users, pick an available teammate, and assign it with Update Conversation using a JSON Patch that sets the assignee.

Do not re-flag the same conversation on every sweep. If a conversation already carries the overdue tag, leave the tag and assignment alone and do not add another note, unless it has escalated to a higher tier since it was flagged, in which case add one fresh note explaining the escalation.

Finish by sending one grouped message to our support channel with the Slack Bot Send a Message action. Order the list most overdue first. Give each conversation one line showing the customer name, the subject, how many business hours it has been waiting, the current assignee or unassigned, and a direct link of the form https://secure.helpscout.net/conversation/ followed by the conversation id. Lead with a short count of how many are breached, and list warning-level conversations underneath the breaches in a separate section so the urgent ones stay at the top. If nothing is overdue, send nothing at all and stay silent rather than posting an empty alert.

## How to customize

- Change the thresholds: raise or lower the number of hours that counts as a warning versus a full breach, or set different thresholds per inbox
- Change the schedule and coverage window: run hourly during business hours, every thirty minutes for a busier desk, or extend the hours if your team covers evenings and weekends
- Pick which inboxes are in scope, so low-priority or internal mailboxes are left out
- Choose the Slack channel, and decide whether warnings are included or only true breaches are announced
- Adjust how assignment works: round-robin across the whole team, or always route breaches to a specific senior agent or manager

## FAQ

### Does Help Scout do this on its own?

Help Scout does not have built-in service level agreement tracking, so there is nothing that natively watches for a conversation quietly aging past your response target. This is the piece that fills that gap, which is why teams usually reach for an outside tool to do it.

### Will it count nights and weekends against my team?

No. Waiting time is measured in business hours only, using the working hours and timezone you set. A message that arrives at 5pm on Friday reads as freshly waiting when Monday starts, not as sixty hours overdue.

### Will it alert me about conversations where we already replied?

No. Before flagging anything it checks who sent the most recent message. If your team answered and the ball is now in the customer's court, that conversation is skipped entirely.

### Will it post in Slack every hour even when nothing is wrong?

No. When nothing is overdue it stays completely silent. You only get a message when there is something that genuinely needs attention, so the channel stays worth reading.

### What happens to a conversation nobody owns?

If an overdue conversation is unassigned, a teammate is picked from your Help Scout users and assigned to it, so every escalation leaves with a name attached rather than sitting in a shared pile.

### Will it spam the same conversation with a new note every hour?

No. Once a conversation has been tagged and annotated it is not re-flagged on later sweeps unless it gets worse and moves up a tier, in which case a fresh note explains the escalation.

Use this prompt in General Input: https://www.generalinput.com/prompts/escalate-help-scout-conversations-that-have-been-waiting-too-long