Zendesk to Slack, unassigned tickets surfaced daily
Your ticket queue isn’t the problem. It’s the “nobody owns this yet” tickets that quietly sit there, getting older, riskier, and harder to explain.
Support leads feel it first. Then Ops managers get pulled in when a customer escalates. And if you run an agency, you already know how messy it gets when Slack says “we’re on it” but Zendesk shows “unassigned.” This Zendesk Slack automation makes the gap obvious every day.
This workflow posts a daily Slack summary of all New and Open Zendesk tickets with no assignee, so you can triage fast, assign cleanly, and stop losing requests in the cracks.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Zendesk to Slack, unassigned tickets surfaced daily
flowchart LR
subgraph sg0["Manual Run Start Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Run Start", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "Scheduled Time Trigger", pos: "b", h: 48 }
n2@{ icon: "mdi:code-braces", form: "rounded", label: "Compose Slack Notice", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Post Slack Alert"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/zendesk.svg' width='40' height='40' /></div><br/>Retrieve Zendesk Tickets"]
n1 --> n4
n4 --> n2
n2 --> n3
n0 --> n4
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n2 code
classDef customIcon fill:none,stroke:none
class n3,n4 customIcon
The Challenge: Unassigned Tickets Quietly Pile Up
Unassigned tickets don’t look urgent until they suddenly are. A “New” ticket with no owner is basically a promise you haven’t accepted yet, and it’s easy for it to get buried under assigned work, Slack pings, and internal requests. The worst part is the mental load: you can’t trust the queue, so you keep checking it, then asking around, then checking again. By the time someone finally grabs the ticket, the customer has followed up twice and your team is starting from behind.
It adds up fast. Here’s where it breaks down in real teams.
- People assume someone else is handling it, because Zendesk doesn’t “shout” when a ticket has no assignee.
- Manual triage turns into a recurring chore that eats about 20 minutes a day, sometimes more on Mondays.
- Tickets age without anyone noticing, which means slower first responses and more awkward customer follow-ups.
- When leadership asks “why wasn’t this answered,” you end up reconstructing what happened instead of pointing to a clear process.
The Fix: Daily Slack Visibility for Unassigned Zendesk Tickets
This workflow runs on a schedule (daily by default) and pulls a targeted list of Zendesk tickets that match a simple rule: New or Open tickets with no assignee. It then turns that list into one clean Slack message, instead of spamming your channel with one alert per ticket. Each ticket is shown with its status and subject, and the ticket ID becomes a clickable link so the right person can jump straight into Zendesk and assign it. If there are no unassigned tickets, your team doesn’t get noisy updates, just a quiet day where nothing needs chasing (honestly, those are the best).
The workflow starts at a specific time, queries Zendesk using the built-in query feature, and formats the results into a readable “Unassigned Tickets” summary. Finally, it posts that summary to the Slack channel you choose, so triage happens where your team already works.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say your team has about 15 new tickets a day and 4 or 5 end up unassigned at any given moment. Manually, a lead might open Zendesk 3 times daily, scan views, click into a few tickets, then paste links into Slack. Call it 10 minutes per check, so about 30 minutes a day. With this workflow: you spend maybe 5 minutes once a day assigning from the Slack list. That’s roughly 2 hours back every week, plus fewer missed requests.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Zendesk for querying tickets with no assignee.
- Slack to post the daily triage summary.
- Zendesk API access (create credentials in Zendesk admin settings).
Skill level: Beginner. You’ll connect Zendesk and Slack, then adjust the schedule and channel.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A scheduled trigger runs daily. The default schedule is set for late afternoon, but you can move it to morning standup time, end-of-day wrap-up, or even twice daily if your volume is high.
Zendesk is queried for a very specific slice of tickets. The workflow uses Zendesk’s query feature (for example: assignee:none status<pending) so you only pull New/Open tickets with no owner, not the whole backlog.
The results are condensed into a single Slack-ready message. A Function step merges multiple ticket items into one readable notice titled “Unassigned Tickets,” and formats each line with the ticket link, status, and subject.
Slack gets one clean alert. Your chosen channel receives the summary, which makes triage a shared habit instead of a private responsibility.
You can easily modify the schedule and the query to match your workflow, like including certain groups or excluding internal tags. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Scheduled Trigger
Set up the schedule that automatically checks Zendesk for unassigned tickets, and keep the manual trigger for on-demand runs.
- Open Scheduled Time Trigger and set the schedule to run at Hour
16and Minute30. - Ensure Manual Run Start remains connected to Retrieve Zendesk Tickets for manual testing and ad-hoc runs.
- Confirm the execution flow shows Scheduled Time Trigger → Retrieve Zendesk Tickets.
Step 2: Connect Zendesk
Retrieve the list of tickets that are unassigned and not pending.
- Open Retrieve Zendesk Tickets and set Operation to
getAll. - Enable Return All with
true. - Set the query filter in Options → Query to
assignee:none status<pending. - Credential Required: Connect your zendeskApi credentials.
Step 3: Set Up Compose Slack Notice
Format the Zendesk ticket list into a Slack-ready message.
- Open Compose Slack Notice and paste the provided JavaScript into Function Code (as-is).
- Verify the code builds a message titled
*Unassigned Tickets*and adds each ticket with URL, ID, status, and subject. - Ensure the node remains connected from Retrieve Zendesk Tickets to Post Slack Alert.
Step 4: Configure Post Slack Alert
Send the formatted message to a specific Slack channel or user.
- Open Post Slack Alert and set Text to
={{$json["message"]}}. - Set Channel to the target ID, replacing
[YOUR_ID]with your channel or user ID. - Credential Required: Connect your slackApi credentials.
C12345678), not the channel name. Make sure you use the ID in Channel.Step 5: Test and Activate Your Workflow
Run a manual test and then activate the workflow for scheduled alerts.
- Click Execute Workflow on Manual Run Start to trigger a test run.
- Confirm Retrieve Zendesk Tickets returns ticket data and Post Slack Alert posts a message to Slack.
- When the test message appears in Slack with ticket links and statuses, turn the workflow Active to enable the scheduled run.
Watch Out For
- Zendesk credentials can expire or lack access to search/query. If things break, check the Zendesk admin API settings and the credential test in n8n first.
- If you change the schedule to run during peak hours, Zendesk search can respond slower. Give the workflow a little buffer before you expect the Slack post to appear.
- Slack posts can fail silently when the channel is wrong or the bot isn’t invited. Confirm the channel ID and verify the app is in that channel.
Common Questions
About 30 minutes if your Zendesk and Slack access is ready.
Yes. You’ll mostly be copying credentials into n8n and choosing the Slack channel. No coding required.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Zendesk and Slack plan limits (usually $0 extra for this use case).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Start with the Zendesk “Retrieve Zendesk Tickets” query and adjust it to match your rules. Common tweaks include filtering by group, excluding internal tags, or only showing tickets from certain organizations. You can also edit the “Compose Slack Notice” step to add SLA time, priority, or requester name if your team needs more context. If your triage happens twice daily, just change the cron schedule and keep the rest the same.
Usually it’s expired or incorrect Zendesk credentials in n8n. Recreate the Zendesk credential, confirm the account can access ticket search/query, then rerun the workflow manually to test. If it works manually but fails on schedule, check if your n8n instance time zone is different than you expect, because it can look like “nothing happened” when it actually ran earlier.
For a daily run, it’s effectively “as many tickets as your Zendesk query returns,” since the workflow posts one summary message. On n8n Cloud Starter, you can handle a typical small-team daily schedule comfortably; if you self-host, executions are mainly limited by your server and Zendesk rate limits. If you expect hundreds of matching tickets, consider posting a shortened list plus a link to the Zendesk view.
Often, yes. This workflow benefits from n8n’s ability to format a single message from many tickets without awkward workarounds, and you can self-host for unlimited runs. Zapier and Make can do scheduled pulls too, but multi-item formatting tends to get fiddly and expensive when you scale. If you need something ultra-simple and you never expect more than a few tickets, they’re fine. If you want control over the query and the message format, n8n is a better fit. Talk to an automation expert if you want help choosing.
Once this is live, unassigned tickets stop being invisible. The workflow does the daily surfacing, and your team can focus on actual support instead of detective work.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.