n8n Zendesk Automation: AI Triage and Draft Replies
Build n8n Zendesk automation that scores ticket sentiment, drafts replies, and escalates negatives to Slack before the SLA clock runs out. See the build.
A negative ticket lands at 5:47 PM on a Friday. Nobody reads it until Monday. By then the customer has already tweeted about it, and the SLA timer expired somewhere around Saturday lunch.
That's the failure mode n8n Zendesk automation exists to kill. Not "sync tickets to a spreadsheet" — most guides stop there. The real win is reading every inbound ticket the moment it arrives, scoring how angry the customer is, drafting a reply an agent can approve in ten seconds, and pinging Slack the instant something's about to go sideways.
n8n is a good fit because the Zendesk node is native, the AI step is one node, and routing logic is a Switch. You're not gluing five SaaS tools together. You're building one workflow that fires on a ticket event and finishes before a human has finished their coffee.
What you can automate
- Score incoming ticket sentiment as positive, neutral, or negative with an urgency level
- Draft a context-aware reply tailored to that sentiment, ready for agent approval
- Alert Slack instantly when a negative or high-urgency ticket arrives
- Tag and route tickets to the right team based on category
- Log every ticket, score, and draft to Google Sheets for trend analysis
- Auto-close obvious spam or duplicate tickets before an agent ever sees them
- Trigger a follow-up sequence when a ticket sits unanswered past a threshold
The Zendesk triage pipeline
Zendesk Trigger (new ticket)
→ OpenAI (score sentiment + urgency, return JSON)
→ Code (parse JSON, attach fields)
→ Switch (route by sentiment)
├─ negative → Slack alert + draft reply for approval
├─ neutral → draft reply, queue for agent
└─ positive → tag + log only
→ Google Sheets (append score, theme, draft)
Every branch ends in a log row. That matters more than it sounds. The audit trail is what lets you prove the workflow caught the angry tickets instead of just trusting that it did.
1. Capture the ticket
Start with the Zendesk Trigger node. It fires on events without polling, so a new ticket hits your workflow within seconds. If you're on a plan that can't use the trigger, the n8n-nodes-base.zendesk node's ticket resource with the "Get all tickets" operation on a scheduleTrigger v1.2 (every five minutes) is the fallback. Polling burns API quota, so prefer the trigger when you can.
The trigger hands you the ticket ID, subject, description, and requester. That description field is the payload everything downstream reads.
2. Score sentiment with AI
This is the step the inventory-style guides skip entirely. Feed the ticket body to the @n8n/n8n-nodes-langchain.openAi v2.1 node. Write a prompt that asks for a strict JSON object: a sentiment label, an urgency score, and two or three key themes. Force JSON, don't hope for it.
The node returns its text at $json.output[0].content[0].text. That's the path that trips people up — older n8n-nodes-base.openai tutorials from 2023 read $json.choices[0].message.content, which silently returns undefined on the current node. If your downstream parse breaks, check that path first.
3. Parse and route
Add a n8n-nodes-base.code v2 node with jsCode right after the AI call. Parse the JSON string into real fields. Do this every time, even when it feels redundant. The model returns text, and the Switch node expects structured data. Skip the parse and your routing silently compares strings against [object Object].
Then a Switch node reads the sentiment field and sends each ticket down its branch. Negative tickets get the loudest treatment.
4. Draft the reply and alert
For the negative branch, two things happen at once. A second LLM call drafts an empathetic, specific reply (not "we apologize for the inconvenience" boilerplate). And a Slack node posts an alert with the customer name, the urgency, and the contributing themes, so an agent sees it before the SLA clock matters.
Opinion, freely given: don't auto-send replies to angry customers. Draft them, route them to a human, and let the human hit approve. The cost of one tone-deaf auto-reply to a furious customer is higher than the time you saved. Auto-send is fine for "where's my receipt" — never for "this is the third time."
5. Log everything
The last node in every branch is a Google Sheets append. Score, sentiment, urgency, themes, the draft, the timestamp. That sheet becomes your weekly review: which categories spike, which drafts agents edit heavily, where the model misreads tone.
The Zendesk Trigger and any n8n-nodes-base.webhook step has a default timeout of 120 seconds. If your LLM call is slow under load, the trigger can drop before the response returns. Move the AI scoring to an async branch, or keep prompts tight so the round trip stays well under the limit.
n8n Zendesk automation patterns
Three patterns cover most of what teams build once the triage spine works.
Pattern 1: Confidence-gated auto-reply
Have the model return a confidence score alongside the draft. Route high-confidence, low-risk categories (order status, password resets) to auto-send via the Zendesk ticket update operation. Everything else goes to a human. This is how you scale without handing the worst tickets to a bot.
OpenAI (draft + confidence)
→ IF (confidence > 0.85 AND category in safe-list)
├─ true → Zendesk update (post reply, solve)
└─ false → email draft to agent for approval
Pattern 2: Stale-ticket rescue
A scheduleTrigger v1.2 runs hourly, pulls open tickets older than your SLA window with the Zendesk "Get all tickets" operation, and fires a Slack escalation for anything unanswered. The triage workflow catches new heat; this one catches the tickets that quietly aged out.
Pattern 3: Cross-platform review intake
Zendesk isn't the only place customers complain. A Webhook node accepts reviews from Google, Yelp, or Trustpilot, runs the same sentiment-scoring brain, and routes negatives to the same Slack channel. One scoring logic, many sources.
n8n nodes you'll use most
| Node | Purpose |
|---|---|
n8n-nodes-base.zendesk (Trigger) | Fire the workflow on new or updated tickets without polling |
@n8n/n8n-nodes-langchain.openAi v2.1 | Score sentiment and draft the reply; output at $json.output[0].content[0].text |
n8n-nodes-base.code v2 | Parse the AI JSON into routable fields via jsCode |
n8n-nodes-base.switch | Route tickets by sentiment to the right branch |
n8n-nodes-base.slack | Alert the team on negative or high-urgency tickets |
n8n-nodes-base.googleSheets v4.5 | Log every ticket, score, and draft for trend analysis |
Getting started with n8n Zendesk automation
- Generate a Zendesk API token under Admin Center → Apps and Integrations → APIs → Zendesk API (enable Token Access first).
- Add the Zendesk credential in n8n and drop in the Zendesk Trigger node.
- Wire the
@n8n/n8n-nodes-langchain.openAiv2.1 node with a JSON-only sentiment prompt. - Add the
n8n-nodes-base.codev2 parse node, then a Switch on the sentiment field. - Build the negative branch first: Slack alert plus draft reply. Test it with a real angry ticket.
- Add the Google Sheets log to every branch.
- Run it against last week's tickets before going live, then watch the log for a few days.
If you'd rather not assemble the prompt, the parse logic, and the routing from scratch, the Review Response Engine ships the scoring-and-draft brain ready to point at Zendesk.
Browse support automation templates →The Review Response Engine ships this triage end-to-end — a webhook intake that feeds GPT-4o-mini sentiment scoring, an empathetic draft-response generator, an instant Slack alert on negatives, and a Google Sheets log of every score and theme. It's part of The Complete n8n Templates Bundle, a one-time lifetime license to the whole catalog plus every template added later, worth it if you run more than one of these support automations.
The same scoring spine powers more than tickets. If support is one of several queues you're triaging, the patterns in n8n support ticket triage and n8n support escalation routing show how to extend routing to multiple channels and SLA tiers. For the AI step itself, the Gmail AI Triage template runs the same parse-then-route pattern on an inbox.
Compare support templates →Common questions
Does n8n have a native Zendesk node?
How do I score Zendesk ticket sentiment in n8n?
Can n8n auto-reply to Zendesk tickets?
Get the workflow templates this guide is built on
Import-ready n8n JSON, step-by-step setup, and tested end-to-end. One-time payment, own it forever.
Get 3 tested n8n templates, free
The full customer package for three real catalog templates — workflow JSON, step-by-step setup guide, credential checklist. Built through the same live-instance release process as everything we sell. Plus new templates and automation guides in your inbox. No spam, unsubscribe anytime.
- 01Smart To-Do List ManagerPre-built n8n workflow template that automates productivity with OpenAI. Live in about 10 minutes.$14
- 02Email Follow-Up AutomatorPre-built n8n workflow template that automates crm with OpenAI. Live in about 15 minutes.$12
- 03Market Trend AnalyzerPre-built n8n workflow template that automates data processing with OpenAI. Live in about 10 minutes.$14
More automation guides

How to Build n8n Google Forms Automation Without a Native Trigger
Every new form submission means opening three tabs. Copy the name and email into the CRM. Copy the same data into a task board. Copy it once more into a master sheet. Five minutes a submission, thirty…

How to Build n8n Typeform Automation That Triages Responses with AI
A product team collects feedback through Typeform, email, and an in-app survey. Three channels, three inboxes, zero consolidation. The feature request that should've shipped two quarters ago sat in a…

How to Build n8n Decision Support Automation with AI Frameworks
A founder spends a week circling a pricing decision. Not because the information's missing. It's all there. The hold-up is that there's no process to run it through. The pros and cons live in three ha…