Skip to content

Every 15 minutes

Get a Slack alert for tickets nobody has picked up

Slack tells you when a ticket has sat unassigned too long or is close to missing its SLA, once per ticket.

Runs
Every 15 minutes
Apps
Slack, Zendesk
AI
Not needed
Access
Zendesk read; chat:write

Send this to your assistant

Create a ClickRuntime automation: every 15 minutes, check Zendesk for open tickets with no assignee. If one is older than 30 minutes, post it to #support-leads with a link.

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

A support team of six shares one queue. On a busy morning everyone assumes someone else has taken the awkward ticket, and it sits for hours. The first anyone hears of it is an angry follow-up from the customer, or a missed SLA in the monthly report.

A short Slack alert for each ticket that is left unclaimed puts it in front of the team lead while there is still time to answer it well.

What you get out of it

  • Nothing slips between agents

    Tickets that fall through the gaps are caught within minutes, not discovered at the end of the day.

  • Fewer SLA breaches

    The lead hears about at-risk tickets while there is still time to assign them, rather than seeing the breach in a report afterwards.

  • One alert per ticket

    Each ticket is flagged once, so the channel stays quiet enough that alerts are taken seriously.

  • Fairer workload

    Seeing which tickets go unclaimed shows the lead where the queue needs another pair of hands or a better routing rule.

How it works

What happens, step by step

  1. Every 15 minutes, ClickRuntime searches Zendesk for open tickets with no assignee.

  2. It checks how long each one has been waiting against the limit you set.

  3. Tickets past the limit are posted to your #support-leads Slack channel with a link to the ticket.

  4. It remembers which tickets it has already flagged, so each one is posted only once.

Before it runs live

  • Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
  • Connect Zendesk

What you get

RunsEvery 15 minutes
Get a Slack alert for tickets nobody has picked uptoday, 9:00Succeeded
Slack · #support-leadsUnassigned for over 30 minutes: • #5130 Card declined on renewal (high), Acme Ltd

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 Google Sheets
  • Combine it with other Slack and Zendesk 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.
alert_slack_about_unassigned_or_sla_risk_tickets.pyexample
from datetime import datetime, timezone, timedelta
from clickruntime import on_trigger, report_fetched, http, credentials, state, notify

ZD, AGENT = "https://yourcompany.zendesk.com/api/v2", "you@yourcompany.com"

def zd(method, path, **kw):
    r = http.request(method, ZD + path, auth=(f"{AGENT}/token", credentials.secret("ZENDESK_API_TOKEN")), **kw)
    return r.raise_for_status() or (r.json() if r.content else None)

LIMIT = timedelta(minutes=30)

@on_trigger
def run(event):
    tickets = zd("GET", "/search.json", params={"query": "type:ticket assignee:none status<solved"})["results"]
    alerted = set(state.get("alerted") or [])
    now = datetime.now(timezone.utc)
    late = [t for t in tickets if t["id"] not in alerted
            and now - datetime.fromisoformat(t["created_at"].replace("Z", "+00:00")) > LIMIT]
    report_fetched(len(late))
    if not late:
        return {"summary": "Nothing waiting"}
    lines = [f"• #{t['id']} {t['subject']} ({t['priority'] or 'normal'}) https://yourcompany.zendesk.com/agent/tickets/{t['id']}" for t in late]
    notify.slack("Unassigned for over 30 minutes:\n" + "\n".join(lines), channel="#support-leads")
    state.set("alerted", sorted(alerted | {t["id"] for t in late})[-2000:])
    return {"flagged": len(late)}

FAQ

Common questions

How long counts as too long?
You choose. Thirty minutes is common for chat-heavy teams; a few hours suits email-only queues. You can set a shorter limit for urgent tickets.
Does it use our SLA policies?
On Zendesk Professional and above it can read each ticket's SLA target. On other plans it uses the ticket's age, which works just as well for most teams.
Will it alert outside working hours?
Only if you want it to. It can skip nights and weekends and catch up when the team starts work.
What permissions does it need?
Zendesk read; chat:write. 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 “Get a Slack alert for tickets nobody has picked up” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.