Weekly
Post weekly support numbers to Slack
Every Monday, Slack shows last week's new and solved tickets and the median first reply time, compared with the week before.
- Runs
- Weekly
- Apps
- Slack, Zendesk
- AI
- Not needed
- Access
- Zendesk read; chat:write
Send this to your assistant
Create a ClickRuntime automation: every Monday at 9am, post last week's Zendesk numbers to #support: tickets created, tickets solved, and median first reply time, with the change from the week before.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A head of support spends Monday morning pulling numbers out of Zendesk for the leadership meeting. It is the same three figures every week, copied into a message by hand. When they are on holiday, nobody sends them.
Posting the numbers automatically keeps the whole team aware of how the queue is going, and frees that Monday hour for reading the tickets behind the numbers.
What you get out of it
The same numbers every week
Figures are counted the same way each time, so week-on-week changes are real and not a side effect of how someone filtered a report.
Trends are visible
Each number comes with last week's figure, so a slow rise in volume or reply time is noticed before it becomes a problem.
No dashboard login needed
Managers and the rest of the company see support's workload without a Zendesk seat or a reporting add-on.
It still happens on holiday weeks
The post goes out every Monday whoever is in the office.
How it works
What happens, step by step
Every Monday morning, ClickRuntime counts last week's new and solved tickets in Zendesk.
It works out the median time customers waited for a first reply.
It compares each number with the figures it saved the week before.
The summary is posted to your #support Slack channel and this week's figures are kept for next Monday.
Before it runs live
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
- Connect Zendesk
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
- Run it at a different time, more or less often, or only on weekdays
- 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
from datetime import date, timedelta
from statistics import median
from clickruntime import on_trigger, 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)
@on_trigger
def run(event):
start, end = (date.today() - timedelta(days=7)).isoformat(), date.today().isoformat()
created = zd("GET", "/search/count", params={"query": f"type:ticket created>={start} created<{end}"})["count"]
solved = zd("GET", "/search/count", params={"query": f"type:ticket solved>={start} solved<{end}"})["count"]
metrics = zd("GET", "/ticket_metrics", params={"per_page": 100})["ticket_metrics"]
replies = [m["reply_time_in_minutes"]["business"] for m in metrics
if m["created_at"][:10] >= start and (m.get("reply_time_in_minutes") or {}).get("business")]
now = {"created": created, "solved": solved, "reply": round(median(replies)) if replies else 0}
last = state.get("last") or now
diff = lambda k: f"{now[k] - last[k]:+d}"
notify.slack(f"Support last week\nNew tickets: {now['created']} ({diff('created')})\nSolved: {now['solved']} ({diff('solved')})\n"
f"Median first reply: {now['reply']} min ({diff('reply')})", channel="#support")
state.set("last", now)
return nowFAQ
Common questions
Which numbers are included?
Where does the comparison come from?
Can it post to more than one channel?
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
Spot customers at risk of leaving from their tickets
Each morning, Slack lists the customers whose recent tickets suggest they might cancel, grouped by company.
See how it worksFollow each Zendesk ticket in its own Slack thread
Every new ticket appears in Slack, and each reply or status change lands in that ticket's thread.
See how it worksGet 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.
See how it worksKeep exploring
Set up “Post weekly support numbers to Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.