Auto-triage every new Zendesk ticket with Claude
Every 10 minutes, classify new Zendesk tickets, set a priority, and drop a draft reply as an internal note so your team approves instead of writing from scratch.
Build me an agent that triages brand new Zendesk tickets end-to-end using Claude, and posts the result to Slack for human approval.
Trigger: cron, every 10 minutes.
On each run, use Zendesk's List Tickets action, sorted by created_at descending, to find tickets created since the previous run. Keep the last-processed timestamp between runs so we don't miss or duplicate anything. Skip any ticket that already carries an 'ai-triaged' tag so re-runs and overlapping runs don't do the same work twice.
For each fresh ticket, call Zendesk's Show Ticket and List Ticket Comments to load the full context (subject, description, requester, existing priority, all public and internal comments).
Then call Anthropic's Create Message with that context and ask Claude to return three things in a structured way: (a) a category from this fixed list — billing, bug, feature-request, how-to, other, (b) an urgency rating from P0 (production down or angry customer threatening churn) through P3 (nice-to-have, no rush), based on the customer's language and stakes, and (c) a suggested first reply drafted in a warm, concise, professional tone that a support agent would be happy to send with light edits. The draft should acknowledge the issue, ask any missing clarifying questions, and either give an answer or set expectations on next steps.
Then call Zendesk's Update Ticket to (1) add the category as a tag, (2) add the 'ai-triaged' tag so we can dedupe on re-runs, (3) set the ticket's priority based on Claude's urgency rating (P0 -> urgent, P1 -> high, P2 -> normal, P3 -> low), and (4) add Claude's drafted reply as an internal note. Do NOT post it as a public reply — humans must approve first.
Finally, call Slack Bot's Send a Message to post a summary in the #support-triage channel. Include the ticket link (https://{subdomain}.zendesk.com/agent/tickets/{id}), the requester name and email, the category, the urgency rating with a short justification, and the drafted reply in a code block or quote so the support lead can skim it in Slack, then jump into Zendesk to approve or edit and send.
If a run finds no new tickets, do nothing (no empty Slack post). If any single ticket fails (Zendesk error, Claude error), log it, keep going with the rest, and include a note in Slack summarizing which ones were skipped so nothing quietly falls through.
What does this prompt do?
- Reads brand new Zendesk tickets on a 10 minute schedule and pulls the full conversation context for each one.
- Uses Claude to classify the request (billing, bug, feature request, how-to, other), rate urgency from P0 to P3, and draft a first reply in your team's tone.
- Writes the classification back to the ticket as a tag, sets the priority, and leaves the drafted response as an internal note so responders start from a first draft, not a blank box.
- Posts a summary to a Slack channel with the ticket link, category, urgency, and the drafted reply so a support lead can approve or edit inside Zendesk with one click.
What do I need to use this?
- A Zendesk account with permission to update tickets and add internal notes.
- An Anthropic account and API key so Claude can classify and draft replies.
- A Slack workspace and a channel (like #support-triage) where the summary should land.
How can I customize it?
- Change how often it runs, from every 10 minutes to hourly or every few minutes, depending on how quickly new tickets need triage.
- Adjust the category list (for example add 'shipping' or 'account access') and the tone or length of the draft reply so it matches your voice.
- Pick a different Slack channel, mention specific support leads, or route P0 and P1 tickets to a separate escalation channel.
FAQs
Does this send replies to customers automatically?
What stops it from triaging the same ticket twice?
Can I use my existing Zendesk priority field instead of Claude's P0 to P3 rating?
Will this work if my team uses shared inboxes or a specific Zendesk group?
Which Claude model does it use?
Related templates
When someone leaves, we check which shared passwords they used in their final months and post a ranked rotation list to your security channel.
Every Monday, check every S3 bucket for public exposure, missing encryption and weak backup settings, then get the risks ranked in Slack.
Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.
Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.
Every weekday at 4pm, spot the threads that went quiet, stage a ready-to-send nudge in your mailbox, and get a ranked Slack recap.
When you merge a fix in GitHub, this agent checks the matching dead-letter queue, replays the failed messages, and reports back on the pull request and in Slack.
Stop triaging support tickets from a blank box.
Connect Zendesk, Anthropic, and Slack once, and every new ticket lands pre-classified, prioritized, and with a draft reply waiting for a human to approve.