Register your interest: Tag @Cody, get an agent
BlogResources

How to connect Zendesk to Slack for tickets that are about to breach

New tickets in a channel is the wrong integration. Alerting on SLA risk before it happens, escalating to people outside support, and keeping the agent's context intact.

Rebecca PearsonRebecca Pearson11 min read

Summarize with AI

How to connect Zendesk to Slack for tickets that are about to breach
On this page

The default Zendesk-to-Slack integration posts new tickets into a channel, which is close to the least useful thing it could do. Agents already have a queue. What they do not have is warning before a ticket breaches, and what the rest of the company does not have is a way to be pulled in when a ticket needs somebody outside support.

Both of those are buildable, and both change outcomes rather than adding a stream of things that were already visible somewhere else.

What we'll cover

Why new tickets in a channel is wrong

Agents work from views, not from chat. Zendesk's queue is the tool for deciding what to work on, and it is better at it than a channel.

Volume makes it unreadable. A support team receiving hundreds of tickets a day produces a channel nobody can scan, and the important one is indistinguishable from the routine one.

It duplicates without adding. The same information, in a worse interface, with no way to act on it.

It creates ambiguity about ownership. A ticket in a channel looks like it might be anybody's, which is exactly what assignment rules exist to prevent.

The exception is a genuinely low-volume, high-stakes queue — security reports, escalations from named accounts — where every item warrants attention and there are a handful a week.

Predicting a breach rather than reporting it

A breach notification tells you about a failure that already happened. The useful version fires earlier.

Alert at a proportion of the time remaining, not at the breach. Seventy-five per cent elapsed with no first reply leaves time to act; a breach notification leaves none.

Account for business hours. An SLA measured in business hours has a real deadline that a simple age calculation gets wrong, and alerting outside working hours for something not due until Monday is how alerts get ignored.

Send it to the assignee, and to the team lead only on a second threshold, since the first message is a nudge and the second is a problem.

Say what is needed. First reply, next reply, or resolution — these are different obligations and the message should name which one is at risk.

Report the pattern weekly. Which queues run close to breach and at what times of day is a staffing conversation, and it is the thing individual alerts never add up to.

Building it with CodeWords

CodeWords connects to more than 3,000 integrations, and the connection is made once and reused.

  1. Open CodeWords and start a new automation.
  2. Describe what should happen in plain language to Cody, the automation builder: which views or conditions, what threshold, and who should be told.
  3. Authorize the connection to Zendesk with an API token for a dedicated user, and to your Slack workspace.
  4. Describe the exceptions: a ticket already solved, an assignee who is away, a ticket paused pending the customer.
  5. Test against a sandbox and a test channel before anything reaches the support team.

You describe the outcome; Cody builds it, connects it, and deploys it. The free plan covers light use, with Pro at $39 per month and Business at $100 per month as usage grows; details are on the pricing page.

Escalating to somebody outside support

The other half, and the reason support teams want a Slack integration at all.

Agents need somebody who knows the answer, and that person is usually in engineering, product, or account management, and does not use Zendesk.

Post the question, not the ticket. What the agent needs to know, with the relevant customer context, is answerable. A link to a ticket is a request to read a thread.

Include who is affected and how urgent. The engineer deciding whether to context-switch needs the account and the deadline, and both are in Zendesk.

Route to a channel with the right people, not to a general one. An escalation in a channel of forty is an escalation to nobody.

Bring the answer back. The reply in Slack should land on the ticket as an internal note, or the knowledge stays in a chat thread that nobody searches.

Record how often each area is escalated to. A recurring escalation topic is a documentation gap, and the pattern is only visible if somebody counts.

Keeping the conversation in one place

The practical failure of support-to-chat integrations: the discussion happens in Slack and the ticket records none of it.

Write Slack replies back as internal notes, automatically, so the ticket holds the reasoning.

Link the thread on the ticket, so somebody reading it later can find the full discussion.

Do not let customer-facing replies originate in Slack. A reply to a customer should be written in the tool that records it, with the agent's judgement about tone and the ticket's history in view.

Keep the ticket authoritative. When the two disagree, the ticket is the record, and the integration should reinforce that rather than competing with it.

Say in the Slack thread when the ticket is solved, closing the loop for whoever helped.

Messages worth sending to the wider company

A short list, each addressed to a group that can act.

A spike in tickets about one thing, to engineering and product, which is often the earliest signal of an incident.

A named account raising something serious, to that account's owner, who otherwise hears about it from the customer.

A ticket mentioning churn or cancellation, to whoever owns the relationship, promptly.

Customer signal for prioritisation, weekly rather than per ticket — what customers are asking for, counted, to product.

Nothing else. The wider company does not need a support feed, and sending one guarantees the messages above get lost.

Customer data in a channel

Worth stating plainly, since support tickets contain more personal information than most systems.

Ticket content can contain anything a customer chose to write, including account details and occasionally credentials.

Check channel membership before pointing anything at it, and prefer private channels for anything carrying ticket bodies.

Send a summary and a link rather than the full body where the channel is broad. The person who needs the detail can open the ticket, where access is controlled.

Redact obvious sensitive patterns before posting where you can.

Remember retention differs. Zendesk has a deletion process for privacy requests; a Slack channel is a separate copy that the deletion does not reach.

Handover between shifts and regions

Support teams that span timezones lose things at the boundary, and it is a gap a channel is well suited to close.

Summarise what is open at handover, with what is waiting on whom, rather than expecting the incoming shift to read a queue cold.

Name the ones that are close to a deadline, since those are what the incoming shift should look at first.

Carry the context on anything mid-investigation. A ticket where somebody was halfway through a theory is the one most likely to restart from scratch.

Post it to the channel both shifts are in, and keep it consistent in shape, so it becomes something people read rather than something they skim.

Include what escalated and has not come back. Items waiting on another team are the ones that fall between shifts entirely.

Write the same summary onto the tickets where it matters, since the channel post scrolls away and the ticket does not.

None of this is technically hard. It is the kind of thing that never gets done by hand consistently, which is exactly why it is worth automating.

Making it survive

Make it idempotent, keyed on the ticket and the threshold crossed, so a ticket does not alert repeatedly for the same reason.

Respect ticket status. A ticket pending the customer is not breaching in the way an open one is, and alerting on it is noise.

Map agents to Slack users from your directory, and report failures rather than dropping messages.

Handle the away assignee. An alert to somebody on holiday should escalate rather than disappear.

Report the outcome. Alerts sent, escalations raised, and notes written back to tickets.

Limits worth knowing about

Rate limits apply and depend on your plan, so a job scanning many tickets needs pacing.

SLA policies are configured in Zendesk with business hours and per-target definitions, and an integration calculating its own deadlines will disagree with Zendesk's.

Ticket bodies can be long, so messages need truncating with a link rather than pasting.

Slack message retention is a workspace setting, and it is not connected to Zendesk's data retention.

Trigger-based and poll-based approaches differ. Zendesk triggers fire on events; a scheduled scan is what catches a ticket approaching a deadline, since nothing happening is the condition.

What to set up first

SLA risk alerts: tickets at a proportion of their time remaining, respecting business hours, sent to the assignee. It catches the ticket about to breach while there is still time, which a breach notification by definition does not.

Two habits make the difference. Calculate against Zendesk's own SLA policy rather than ticket age, since business hours and per-target definitions make the two very different numbers. And name which obligation is at risk — first reply, next reply, or resolution — because the action differs for each.

Frequently asked questions

Should new tickets post to a Slack channel?

Generally no. Agents work from the queue, which is better at it, and volume makes the channel unreadable. The exception is a low-volume, high-stakes queue where every item genuinely warrants attention.

When should an SLA alert fire?

Before the breach, at a proportion of the time remaining, calculated against Zendesk's own policy including business hours. A breach notification reports a failure; an earlier one gives somebody the chance to prevent it.

How should agents get help from engineering?

Post the question with customer context into a channel where the right people are, and write the answer back onto the ticket as an internal note. A link to a ticket is a request to read a thread, which is why those escalations sit.

Is it safe to put ticket content in a channel?

Carefully. Ticket bodies contain whatever the customer wrote, sometimes including sensitive details, and Slack is a separate copy that privacy deletions in Zendesk will not reach. Prefer summaries and links, in private channels.

Should customer replies be sent from Slack?

No. A customer-facing reply belongs in the tool that records it, with the ticket history in view. Internal discussion in Slack is fine as long as it is written back to the ticket.

What should the wider company receive?

Very little — a spike in tickets about one thing, a serious issue from a named account, and a weekly count of what customers are asking for. A general support feed guarantees those get ignored.

Why use a scheduled scan rather than triggers?

Because the condition you care about is nothing having happened. Triggers fire on events; a ticket approaching its deadline without a reply generates no event, so something has to look.

Can this help with handover between regions?

Yes, and it is one of the better uses. A consistent summary at handover — what is open, what is close to a deadline, what is mid-investigation, what escalated and has not returned — stops the incoming shift restarting theories the outgoing one had nearly finished.

What gets lost between shifts?

Tickets waiting on another team, and tickets where somebody was halfway through an investigation. Both look ordinary in a queue, and both are where a handover summary earns its place.

Get started today

Your first workflow is free to build.

Describe what you need. Cody handles the build, the connections, and the deployment.