Skip to content

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.

Paste it into your assistant. It tells you what it will send or change before it runs live.

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

  1. Every 10 minutes, ClickRuntime looks for open Intercom conversations that have had no one assigned for over 30 minutes.

  2. It skips conversations it has already flagged.

  3. 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

RunsEvery 10 minutes
Flag conversations nobody has picked uptoday, 9:00Succeeded
Slack · #support3 conversations unassigned for 30+ min: app.intercom.com/a/inbox/_/inbox/conversation/1842

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
unassigned_conversation_alert.pyexample
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?
Yes. Teams with a strict service level often choose 10 or 15 minutes, while slower queues may prefer an hour. State the number you want and the search will be updated so that only older conversations are included.
Does it count conversations assigned to a team but not a person?
The search looks for conversations with no assigned teammate. A conversation assigned to a team but not an individual may still count as unassigned to a person, so ask if you need team-level assignments treated differently.
Will it flag conversations outside working hours?
It checks on its schedule regardless of the hour. If you do not want alerts overnight or at weekends, ask for it to run only during your support hours, so the channel does not collect a long list before the morning.
What permissions does it need?
read conversations. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

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.