Skip to content

The moment it happens

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

Runs
The moment it happens
Apps
Slack, Zendesk
AI
Not needed
Access
Zendesk admin to create webhook; chat:write

Send this to your assistant

Create a ClickRuntime automation: when a Zendesk ticket is created, post it to #support. When it's updated, add the latest comment and status as a reply in that ticket's Slack thread.

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 product team at a small software company wants to know what customers are reporting without logging into Zendesk. Engineers and product managers do not have agent seats, so they rely on the support lead forwarding the interesting ones. By then the conversation has moved on and nobody can see how it ended.

Giving each ticket its own thread in Slack lets anyone follow a customer issue from the first message to the resolution, in the tool they already have open.

What you get out of it

  • The whole team sees customer issues

    People without a Zendesk seat can read what customers are asking and how support answered. Product decisions are made with the actual words customers used.

  • One thread per ticket

    Updates collect under the original message instead of scattering through the channel. Anyone can open a thread and read the full story in order.

  • No extra agent licences

    Engineers and managers follow tickets in Slack instead of needing a paid seat just to read them.

  • Faster help from experts

    When an engineer sees a ticket thread that needs them, they can jump in early with an answer for the agent instead of waiting for an escalation.

  • Status at a glance

    Each update shows the ticket's status, so solved and pending tickets are easy to spot in the channel.

How it works

What happens, step by step

  1. Zendesk tells ClickRuntime the moment a ticket is created or updated.

  2. For a new ticket, it posts the subject, requester and first message to your #support Slack channel and remembers which Slack message belongs to that ticket.

  3. For an update, it fetches the latest public reply and the new status.

  4. It posts that update as a reply in the ticket's own thread, so each ticket's history stays together.

Before it runs live

  • Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
  • Connect Zendesk
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
Follow each Zendesk ticket in its own Slack threadjust nowSucceeded
Slack · #support🎫 #4821 Export to CSV times out (ops@northwind.example) ↳ Status: pending · "We've reproduced it and a fix is going out tomorrow."

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.
mirror_each_zendesk_ticket_in_a_slack_thread.pyexample
from slack_sdk import WebClient
from clickruntime import on_event, http, credentials, state

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_event
def handle(event):
    t = (event.json or {}).get("ticket", {})
    slack = WebClient(token=credentials.connection("slack", "work"))
    ts = state.get(f"ts:{t['id']}")
    if not ts:
        msg = slack.chat_postMessage(channel="#support", text=f"🎫 #{t['id']} {t['subject']} ({t.get('requester', '')})\n{t.get('description', '')[:500]}")
        state.set(f"ts:{t['id']}", msg["ts"])
        return {"ticket": t["id"], "posted": "new"}
    comments = zd("GET", f"/tickets/{t['id']}/comments", params={"sort_order": "desc", "per_page": 1})["comments"]
    latest = comments[0]["plain_body"][:800] if comments and comments[0]["public"] else "(internal update)"
    slack.chat_postMessage(channel="#support", thread_ts=ts, text=f"Status: {t.get('status')}\n{latest}")
    return {"ticket": t["id"], "posted": "update"}

FAQ

Common questions

Will internal notes show in Slack?
Only if you want them to. By default the thread shows public replies, so private agent notes stay in Zendesk.
Can I limit it to certain tickets?
Yes. Set the Zendesk trigger to fire only for a group, brand, tag or priority, and only those tickets get a Slack thread.
What if a ticket was created before the automation started?
Updates to older tickets start a new thread the first time they change, so nothing is lost.
What permissions does it need?
Zendesk admin to create webhook; 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 for each event the app sends.
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 “Follow each Zendesk ticket in its own Slack thread” from your assistant

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