Every 10 minutes
Flag conversations nobody has picked up
Open conversations with no owner after 30 minutes are flagged before the customer gives up.
- Runs
- Every 10 minutes
- Apps
- Intercom
- AI
- Not needed
- Access
- read conversations
Send this to your assistant
Create a ClickRuntime automation: every 10 minutes, find open Intercom conversations with no assignee for more than 30 minutes and post them to #support in Slack. Don't flag the same one twice.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Intercom conversations can sit open without an owner when a team uses a shared queue and assumes someone will claim each one. During a lunch hour or a busy launch, a customer asking about a failed payment waits forty minutes with nobody assigned, while three agents each believe another has it. The customer waits, then writes again, and the team's response-time numbers quietly get worse. It is the kind of problem nobody notices until the complaint arrives.
Every 10 minutes, ClickRuntime searches for open conversations with no assigned teammate that are older than 30 minutes, leaves out the ones it has already warned about, and posts the list in Slack. Each entry has a link so someone can claim it right away.
Teams that share an inbox without strict assignment rules, or that have gaps in coverage, find this is a useful safety net.
What you get out of it
Orphan conversations get picked up
The unclaimed conversation is the one most likely to be forgotten. A recurring check means no customer waits indefinitely because everyone assumed somebody else had it. Each one appears in a list with a link, so claiming it takes a single click instead of a search.
First response times stay honest
A conversation that waits unassigned for an hour contributes directly to a bad response time. Catching it at 30 minutes protects your service levels and your promises to customers. That gap is easy to miss until a monthly report shows it, and by then customers have already felt it.
Coverage gaps become visible
If the list is long at certain times, such as lunch or shift changes, you learn where coverage is thin. You can adjust schedules based on evidence instead of complaints.
No more guessing who has it
In a shared queue, silence is ambiguous. The list shows which conversations truly have no owner, so people stop checking one another and simply claim what is on the list.
Repeat reminders are avoided
Conversations already flagged are skipped on later checks, so the channel shows only new ones. People trust the alert because it does not repeat itself and add noise. They stop muting the channel, which is what usually happens to alerts that nag about the same item again and again.
How it works
What happens, step by step
Every 10 minutes, ClickRuntime looks for open Intercom conversations that have had no one assigned for over 30 minutes.
It skips conversations it has already flagged.
A message goes to your #support Slack channel with the number of waiting conversations and a link to each.
Before it runs live
- Connect Intercom
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Intercom steps into one automation
Under the hood
The code that runs this automation
import time
from clickruntime import on_trigger, http, credentials, notify, state, report_fetched
def intercom(method, path, **kw):
r = http.request(method, f"https://api.intercom.io{path}", headers={
"Authorization": f"Bearer {credentials.secret('INTERCOM_TOKEN')}", "Intercom-Version": "2.11"}, **kw)
r.raise_for_status()
return r.json()
INBOX = "https://app.intercom.com/a/inbox/_/inbox/conversation/"
@on_trigger
def run(event):
flagged = set(state.get("flagged") or [])
q = {"operator": "AND", "value": [{"field": "state", "operator": "=", "value": "open"},
{"field": "admin_assignee_id", "operator": "=", "value": None},
{"field": "created_at", "operator": "<", "value": int(time.time()) - 1800}]}
convos = [c for c in intercom("POST", "/conversations/search", json={"query": q})["conversations"] if c["id"] not in flagged]
report_fetched(len(convos))
if not convos:
return {"unassigned": 0}
notify.slack(f"{len(convos)} conversations unassigned for 30+ min:\n" + "\n".join(f"{INBOX}{c['id']}" for c in convos),
channel="#support")
state.set("flagged", list(flagged | {c["id"] for c in convos})[-1000:])
return {"unassigned": len(convos)}FAQ
Common questions
Can I change the 30-minute threshold?
Does it count conversations assigned to a team but not a person?
Will it flag conversations outside working hours?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get a Slack message for every new conversation
Your team sees who started a conversation and what they asked the moment it starts.
See how it worksGet told when a customer replies
You hear about customer replies straight away, with a link back to the conversation.
See how it worksGet notified about new Intercom users
Each new sign-up shows up in Slack with their name, email and company.
See how it worksKeep exploring
Set up “Flag conversations nobody has picked up” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.