[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Triage new Zammad tickets with AI

> Sort the Zammad queue by what each customer wrote: set group, priority and owner, tag and note each ticket. Runs daily, unclear ones stay for you.

Source: https://cotlet.dev/integrations/zammad-api-mcp-server/triage-new-tickets

Every morning Unassigned & Open Tickets holds a fresh batch from the shared inbox, and someone has to read each one before it has a group, an owner and a priority.

Cotlet does it in your own Zammad account with list\_overview\_tickets, get\_ticket, list\_ticket\_articles, list\_ticket\_options, update\_ticket, add\_tag and add\_internal\_note, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=zammad) [All Zammad tools](https://cotlet.dev/integrations/zammad-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Zammad do this on its own?

Zammad triggers can set group, priority, owner and tags when a new ticket matches conditions you define, and one auto reply trigger is active by default (checked 22 Oct 2026). A trigger matches attributes and text conditions; it does not read a ticket and decide. The AI features, such as ticket summaries and writing tools, are set up by your admin. Nothing in Zammad applies a rule written in plain words.

## How you do it in Zammad today

1. An agent opens Overviews in the navigation bar, or presses o, and picks Unassigned & Open Tickets, an overview Zammad ships by default.
2. Each ticket opens as its own tab. In the ticket sidebar the agent sets group, owner, state and priority, and clicks + Tag to add tags.
3. A reminder goes into the default Note article, which is internal, so the customer cannot see it. Then the agent clicks Update, because most changes need that explicit update.
4. For the same change on many tickets, the agent drags them from the overview onto Run Macro and drops them on a macro an admin built under Manage > Macros.
5. The queue refills after every mailing, and a ticket that needs a decision still gets read by a person before it is sorted.

## How to triage new Zammad tickets with AI

Prompt

```
Go through Unassigned & Open Tickets in Zammad. Set the group and priority from what the customer wrote, assign billing questions to Nora Weiss, add a tag and leave a one-line internal note with the reason. Leave unclear ones for me.
```

1. 01  
### Read the whole queue  
Your agent reads the overview you name with list\_overview\_tickets and follows next\_cursor to the end, so a Monday backlog is judged as one batch. Zammad shows an account only the tickets of its groups, so the queue is what that agent user can see.
2. 02  
### Read before judging  
For each ticket, get\_ticket gives the current attributes and tags, and list\_ticket\_articles gives the conversation. The agent bases the decision on the customer's own words, not on the title alone.
3. 03  
### Check the values exist  
list\_ticket\_options returns the groups, owners, states and priorities your account can set. A group or owner from your rule that is not in the list stops the run before any ticket changes.
4. 04  
### Apply your rule  
update\_ticket sets group, priority and owner in one call, and add\_tag adds the tag. The first update of a new ticket moves it to open as well, so the agent reports that change too. Tickets that match no rule are left untouched and listed for you.
5. 05  
### Say why  
add\_internal\_note writes one line per ticket, for example "Billing: customer names a double charge on an invoice". Colleagues see why a ticket moved, and the customer sees nothing.

### What you get back

Example data

```
Unassigned & Open Tickets: 14
Sorted 11
- Refund for a double charge: Billing, 3 high, Nora Weiss
- Cannot reset my password: Support, 2 normal, tag password
Left for you 3:
- "Your product is a scam": tone, not a request
- Two tickets with no message body
```

### Other ways to ask

- Every hour, find tickets whose first message mentions an outage and set them to 3 high.
- Tag every new ticket with the product it names and change nothing else.
- List the new tickets I should look at first and say why, but do not change any.
- Send tickets from our biggest customers to the Key Accounts group and leave the rest.

## What Zammad allows, and what to know first

- Zammad's default priorities are 1 low, 2 normal and 3 high, and out of the box a priority only highlights the ticket; admins build automation on it.
- A new ticket switches to open the first time it is updated, so update\_ticket on a new ticket changes its state as well.
- Customers cannot set a priority on their own tickets, so the priority in your queue comes from agents and rules.
- Zammad triggers run when a ticket is updated, and setting a tag on its own does not necessarily start one, so a tag from your agent will not always fire a trigger.
- Which tickets an account sees depends on its group permissions and on whether the user is an agent, so a role without a group sees a smaller queue.

update\_ticket and add\_internal\_note ask for your OK by default. To run it daily without you, switch confirmation off for those tools in your dashboard.

Sources: [Zammad User docs: Find Tickets](https://user-docs.zammad.org/en/latest/basics/find-tickets.html) · [Zammad User docs: Ticket Basics](https://user-docs.zammad.org/en/latest/basics/ticket-basics.html) · [Zammad Admin docs: Trigger](https://admin-docs.zammad.org/en/latest/manage/trigger.html) · [Zammad API: Tickets](https://docs.zammad.org/en/latest/api/ticket/index.html)

## Call update\_ticket from a script

curl

```
curl -X PATCH https://cotlet.dev/api/v1/zammad/tickets/4812 \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"group":"Billing","priority":"3 high","owner":"Nora Weiss"}'
```

Example response

```
{
"ticket_id": 4812,
"number": "31004812",
"title": "Refund for a double charge",
"state": "open",
"priority": "3 high",
"group": "Billing",
"owner": "Nora Weiss",
"updated_at": "2026-10-22T08:03:00.000Z"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is zammad\_write → update\_ticket. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/zammad-api-mcp-server.md#automations)

## Zammad tools this automation uses

__Cotlet Zammad tools used to triage new Zammad tickets with AI__
| Tool | Parameters |
| ----------------------- | ---------------------------------------------------------------- |
| list\_overview\_tickets | overview, limit, cursor |
| get\_ticket | ticket\_id |
| list\_ticket\_articles | ticket\_id, cursor |
| list\_ticket\_options | none |
| update\_ticket | ticket\_id, state, priority, group, owner, pending\_until, title |
| add\_tag | ticket\_id, tag |
| add\_internal\_note | ticket\_id, body |

[All 14 Zammad tools with descriptions](https://cotlet.dev/integrations/zammad-api-mcp-server.md#tools)

## Frequently asked questions

### Why not set this up as a Zammad trigger?

A trigger fits fixed conditions, such as a sender domain or a keyword in the title. It cannot judge what a customer means, which is the part your agent does here. Use both: triggers for the exact rules, the agent for the rest.

### Is it safe to connect Zammad to Cotlet?

Yes. You sign in to Zammad yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Zammad once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More Zammad automations

- [Follow up on pending Zammad tickets automatically](https://cotlet.dev/integrations/zammad-api-mcp-server/follow-up-on-pending-tickets.md)
- [Merge duplicate Zammad tickets with AI](https://cotlet.dev/integrations/zammad-api-mcp-server/merge-duplicate-tickets.md)
- [Zammad API and MCP server: every tool](https://cotlet.dev/integrations/zammad-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Zammad.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Zammad.

[Sign up free](https://cotlet.dev/app/signup?app=zammad)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
