Auto-Categorise Zendesk Tickets by Type with AI (Problem / Incident / Question / Task)
Zendesk's Type field is one of the most useful fields in the whole product and one of the least consistently filled in. It has four built-in values — Problem, Incident, Question, and Task — and each one drives real workflow: a Problem ticket can be the parent of many linked Incidents, so when you solve the Problem, [every linked Incident solves with it](https://support.zendesk.com/hc/en-us/articles/4408835103898-Working-with-problem-and-incident-tickets); a Task carries a due date; a Question routes to people who answer questions, not engineers. The catch is that someone has to set the type, and on a busy queue almost nobody does. Tickets pile up as a featureless wall of "—".
You can paper over this with native Zendesk automations, but they run on an hourly schedule and match on keywords, which is exactly the wrong tool for reading what a customer actually meant. The cleaner answer is to let an AI agent read each new ticket and set the type the moment it lands. As of the May 2, 2026 release, Macha ships the exact tool for it: Update Ticket Type, a write action that sets a Zendesk ticket to problem, incident, question, or task without you ever touching a custom field.
This post is a tool deep-dive: what the four types actually mean, why native triage falls short, how to wire up an AI triage agent that categorises every incoming ticket, and where this approach has sharp edges you should know about before you turn it on.
First, what the four Zendesk ticket types mean
Categorisation is only useful if the categories mean the same thing every time. Zendesk's four types have specific, opinionated definitions — and the problem/incident pairing is the one teams most often get wrong.
| Type | What it's for | Example |
|---|---|---|
| Question | A general inquiry or information request — nothing is broken. | "How do I change my billing email?" |
| Problem | The root cause of an issue that's likely affecting many customers. | "Checkout is failing for all EU customers." |
| Incident | One customer's report of a wider Problem; can be linked to a parent Problem ticket. | "I couldn't check out this morning" (one of fifty reports of the EU outage). |
| Task | An internal to-do with a due date — follow-up work, a scheduled call. | "Call the customer back Friday to confirm the refund." |
The reason the Type field beats a custom dropdown is the Problem ↔ Incident link: solve the parent Problem and all linked Incidents close automatically, so you don't update fifty customers by hand. A custom field can label tickets all day but it can't trigger that cascade — only the native Type field can. That's the whole argument for setting the real field rather than a tag.
Why native Zendesk triage isn't enough
Zendesk gives you two built-in ways to set type automatically: triggers (real-time, fire on create/update) and automations (time-based, run on a schedule). Both are rule engines, and rules have well-known limits when the input is free-form human language:
- Automations run hourly, not instantly. A ticket can sit untyped for up to an hour before the rule sweeps it — which defeats the point of routing fast.
- They match on keywords, not meaning. "It's down" and "I can no longer reach the dashboard" describe the same incident with zero shared keywords. Rules miss the second one.
- Hard ceilings. Zendesk automations carry a 65KB rule-size limit and cannot set the
problem_idthat links an Incident to its parent Problem, nor set a Task's due date directly. The most valuable part of the Type field — the Problem/Incident link — is out of reach for a plain automation.
The result is the familiar compromise: a handful of brittle keyword rules that catch the obvious cases and leave the rest untyped. AI changes the input side of that equation — it reads the ticket the way a human triager would and picks the type from intent, not string matches.
The tool: Update Ticket Type
Macha is an AI agent layer on top of Zendesk — not a replacement for it. You keep Zendesk; Macha adds agents that read tickets and take real actions through tools. The May 2 release added three of those tools, all aimed at triage:
- Update Ticket Type — sets the ticket's type to problem, incident, question, or task. The headline tool for this post.
- List Groups — a read tool that returns every active Zendesk group, so an agent can resolve a group name to its ID before routing.
- Assign Ticket — now accepts a group, an agent, or both, so you can route a ticket straight to the "Billing" or "Tier 2" queue instead of always picking a named person.
Those three are designed to be used together: read the ticket, decide the type, set it, and route it to the right queue — all in one autonomous pass. You add them to an agent from the Tools picker, alongside the rest of Macha's Zendesk toolset.
Building a triage agent that sets the type
Here's the end-to-end setup. The goal is a single autonomous agent that fires on every new ticket, classifies it, and writes the type back — no human in the loop for the categorisation step.
1. Connect Zendesk and create the agent
Connect Zendesk to Macha via OAuth (or an API token), then create a new agent — call it Ticket Triage. Give it crisp instructions about your taxonomy, because the four types are deliberately broad and your team has conventions Zendesk doesn't know about. For example:
Read each new ticket and set its Type. Use Problem only when the customer describes a systemic failure likely to affect many users. Use Incident for a single user reporting an outage or bug that matches a known Problem. Use Question for how-to and account inquiries where nothing is broken. Use Task for internal follow-ups with a deadline. When unsure between Question and Incident, prefer Question and add an internal note explaining the call.
That last sentence matters — telling the model what to do when it's uncertain is what keeps a triage agent honest.
2. Add the trigger
Add the New Ticket trigger. It fires on the first customer message, before any agent replies — so the type is set at the very top of the ticket's life, when routing is most valuable. This is the real-time behaviour native automations can't match: there's no hourly sweep, the agent runs the moment the ticket is created.
3. Add the tools
Give the agent the tools it needs to read and act:
- Get Ticket (and optionally Get Custom Fields) so it can read the subject, description, and any structured context.
- Update Ticket Type — the write tool that sets problem/incident/question/task.
- Optionally Assign Ticket + List Groups to route in the same pass, and Update Tags / Add Internal Note to leave an audit trail of why it chose a type.
A typical run looks like the triage-and-route use case: the agent reads a ticket that says "My account was charged but I never received access to the premium features I paid for," classifies it as an Incident in the Billing area, sets the type, routes it to the Billing queue, and tags it — in seconds, autonomously.
4. Test before you let it run wide
Run the agent against a handful of recent tickets in chat mode first and read its reasoning. Write tools like Update Ticket Type require confirmation in chat, so you can sanity-check the decision before it ever writes to a live ticket. Once the calls look right, enable the trigger and let it run autonomously on new tickets.
A realistic routing flow
Type-setting rarely lives alone — it's the first step of a triage pass. Wired with the other two May 2 tools, one agent run can do all of this:
| Step | Tool | What happens |
|---|---|---|
| Read the ticket | Get Ticket | Pulls subject, description, requester, tags |
| Classify | (model reasoning) | "Single user reporting checkout failure → Incident, Billing" |
| Set the type | Update Ticket Type | Type → Incident |
| Resolve the queue | List Groups | Finds the ID for the "Billing" group |
| Route it | Assign Ticket | Assigns to the Billing group queue |
| Leave a trail | Add Internal Note | "Classified as Incident — likely the EU checkout issue. — Macha" |
That internal note is doing quiet but important work: it makes the AI's decision auditable, so a human can see the reasoning and correct the taxonomy over time.
Watch-outs: when not to lean on this
Auto-typing is genuinely useful, but it isn't free of trade-offs. Be honest about these before you ship it:
- **The Problem/Incident link still needs a human (for now).** Update Ticket Type can set a ticket to Incident, but linking that Incident to a specific parent Problem ticket — the
problem_idassociation that drives the auto-close cascade — is a separate, manual Zendesk step. An agent can flag "this looks like Incident of the EU outage" in a note; a human still makes the link. Don't promise the cascade to your team on day one. - Tasks carry a due date the type alone doesn't set. Setting a ticket to Task doesn't populate its Due Date. If your Task workflow depends on dates, the agent should also write that field (via Update Fields) or hand off to a human.
- Broad categories invite drift. With only four values and fuzzy edges, two reasonable agents (or two reasonable humans) will disagree on borderline tickets. Pin down your conventions in the instructions and audit a sample weekly, especially the first fortnight.
- It costs credits per ticket. Each classification is an AI action — billed in credits (0.5–9 by model; the default GPT-5.4 Mini is 1 credit). On a high-volume queue that adds up, so pick a fast, cheap model for triage; you rarely need a frontier model to tell a Question from a Task. See the pricing page for how credits map to plans.
- Don't let it auto-type closed or spam tickets. Scope the trigger (or add a guard in the instructions) so the agent isn't re-typing tickets that don't need it.
For most teams none of these are blockers — they're just the difference between switching it on thoughtfully and switching it on blind.
Where this fits in the bigger picture
Setting the type is the smallest, highest-leverage triage action there is: it's one field, it drives downstream routing and reporting, and it's the one humans skip most. Doing it automatically, in real time, on every new ticket is the kind of unglamorous automation that quietly cleans up a queue. Layer in Assign Ticket and List Groups and the same agent becomes a full intake triager — read, classify, route — while your team stays in Zendesk, working the tickets instead of sorting them.
If you want the broader pattern, see triage and route tickets by topic and the Zendesk integration overview for the full action and trigger list.
FAQ
What are the four Zendesk ticket types? Problem, Incident, Question, and Task. Question is a general inquiry; Problem is a root cause affecting many customers; Incident is one customer's report of a Problem (and can be linked to a parent Problem so solving it auto-closes the Incidents); Task is an internal to-do with a due date.
How does Macha set the ticket type automatically? An AI agent with the Update Ticket Type tool fires on Zendesk's New Ticket event, reads the ticket, and writes the type — problem, incident, question, or task — to the native field. No custom fields or hourly automation sweeps involved.
Why not just use a Zendesk automation? Automations run on an hourly schedule and match on keywords, so they're slow and miss anything phrased unexpectedly. They also can't set problem_id to link incidents. An AI agent classifies on meaning, in real time, the moment the ticket is created.
Can the agent link an Incident to its parent Problem automatically? Not yet — Update Ticket Type sets the type, but creating the Problem↔Incident link is still a manual Zendesk step. The agent can flag the likely parent in an internal note to make that human step fast.
How much does it cost? Each classification is one AI action, billed in credits (0.5–9 depending on the model; the default GPT-5.4 Mini is 1 credit). Use a fast model for triage to keep costs low. See pricing for plan details.
Which other tools came with this release? The May 2, 2026 release also shipped List Groups (resolve a group name to an ID) and an upgraded Assign Ticket that can route to a group queue, an agent, or both.
Try it
If your Zendesk queue is a wall of untyped tickets, an AI triage agent fixes it on the next ticket in, not the next sprint. Start a 7-day free trial, no credit card required, connect Zendesk, add the Update Ticket Type tool to a triage agent, and watch the four types fill themselves in. The docs have the full agent-builder walkthrough.
Written by Abbas (Customer Support & AI, Macha) · Reviewed by Ankeet Guha (Co-founder & CTO) · Published 2026-06-24 · Last updated 2026-06-24.
Sources: Working with problem and incident tickets — Zendesk help; How to automate Zendesk ticket types — eesel AI.
Add AI agents to your Zendesk
Macha resolves tickets end to end, right on top of Zendesk — no migration.
Zendesk
Freshdesk
Gorgias
Front
Shopify
Stripe
Slack
Notion
Google Workspace
Confluence

