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.

Agentic Task
ZendeskAnthropicSlack BotCustomer SupportFeedback TriageNotifications & Alerts
PromptCreate

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.

Additional information

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.

Frequently asked questions

Does this send replies to customers automatically?
No. Every drafted reply lands as an internal note on the Zendesk ticket, not as a public response. A human on your team still opens the ticket, reads the draft, and clicks send.
What stops it from triaging the same ticket twice?
The workflow only picks up tickets created since the last run, and it tags each ticket it processes so re-runs skip anything already handled.
Can I use my existing Zendesk priority field instead of Claude's P0 to P3 rating?
Yes. You can point the workflow at your own priority scheme or turn off the urgency step entirely and keep just the category tag and draft reply.
Will this work if my team uses shared inboxes or a specific Zendesk group?
Yes. You can scope the workflow to only triage tickets in a specific group, brand, or view so it stays out of queues that already have humans on them.
Which Claude model does it use?
The workflow uses Anthropic's Claude API and you can pick the model when you set it up. A faster, cheaper model is fine for classification, or you can use a stronger model when the drafted reply quality matters more.

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.