Macha

Zendesk Omnichannel Routing: The Two Capacity Numbers

Abbas, Customer Support & AI, Macha

Written by

Ankeet Guha, Co-founder & CTO, Macha

Reviewed by

Published September 9, 2026

Updated September 9, 2026

Omnichannel routing assigns work to agents based on their status and how much they're already handling, instead of dropping everything into a group queue for someone to claim. We switched it on and immediately hit a discrepancy worth knowing about: the capacity figure in Zendesk's account settings API is 1, the capacity rule actually applied to our agents says 5, and the two live behind different endpoints. This guide covers what routing does, why tickets sit unassigned while agents look idle, and which of those two numbers to trust.

Zendesk Omnichannel Routing: The Two Capacity Numbers

What it replaces

Group assignment answers one question: which group owns this ticket. It has nothing to say about which person, or whether they're already busy. Triggers can push a ticket to a group, and then it waits in a view for someone to pick it up.

Omnichannel routing answers the second question. It looks at who is online, what their capacity is, how much they are currently holding, and assigns directly to a person. It covers email, messaging and Talk from the same logic, which is where the name comes from.

That's a genuine improvement in a busy queue. It also means the system now has an opinion about how much work a person can hold, and that opinion ships set to 1.

One thing to say plainly before the findings, because it makes them more useful rather than less. The instance is a Zendesk sandbox we control, and nobody had touched its routing before we switched it on. That is exactly why the defaults below are worth reading: they are what Zendesk hands you, unshaped by any admin's earlier decisions.

The default state, recorded

We turned omnichannel routing on and read the account settings back immediately. Nothing below was customized, this is what the checkbox alone gives you.

Zendesk routing configuration page showing routing On with the default Zendesk-preconfigured settings
Zendesk routing configuration page showing routing On with the default Zendesk-preconfigured settings
routing.enabled            true
assignment_method          highest_spare_capacity
max_email_capacity         1
max_messaging_capacity     1
skills_enabled             false
reassignment_messaging     true, 30 second timeout
queues                     0
autorouting_tag            auto_route_ocr

Those two capacity values look alarming. An agent who can hold 1 email ticket at a time would stall any real queue. So we opened the Capacity rules page to see it in the interface.

Zendesk capacity rules page showing the default rule with Email 5, Messaging 3 and Talk 1 across 6 assignees
Zendesk capacity rules page showing the default rule with Email 5, Messaging 3 and Talk 1 across 6 assignees

It says something different. The Initial capacity rule, preconfigured by Zendesk and applied to 6 assignees, sets Email 5, Messaging 3, Talk 1. That is the rule in force. The API's max_email_capacity: 1 is not what your agents are working under.

Two things follow, and both matter more than the original numbers.

The two figures live behind different endpoints, and the obvious one is the wrong one. max_email_capacity sits in the account settings object, under routing. Reading it as an account-wide ceiling is an inference from where it lives, not something the reference states outright, and it is worth holding loosely. The rule that governs your agents is a separate object served by the Capacity Rules API at /api/v2/capacity/rules, note the slash, which is where we kept typing an underscore. We initially guessed capacity_rules, routing/capacity_rules and omnichannel/capacity_rules, got 404 from all three, and briefly concluded no endpoint existed. It does. Guessing a REST path and reasoning from the 404 is how you end up confidently wrong, and it's the same failure this post is about.

Query the documented endpoint and you get the real figures:

GET /api/v2/capacity/rules

[{ "name": "Initial capacity rule",
   "description": "This rule was preconfigured by Zendesk to start with",
   "default": true,
   "assignees": { "count": 6 },
   "capacities": { "email": 5, "messaging": 3, "voice": 1 } }]
Two Zendesk API calls on one account: account settings returns max_email_capacity 1, capacity rules returns email 5
Two Zendesk API calls on one account: account settings returns max_email_capacity 1, capacity rules returns email 5

Same account. Two endpoints. Two answers.

So the practical rule is: audit capacity against /api/v2/capacity/rules, not against account settings. An audit script pointed at the settings object reports 1 and is wrong by a factor of 5.

Capacity is a preference, not a ceiling. Zendesk states it on the Capacity rules page: "Agents can always pick up more than their capacity," and the documentation confirms it, "it's still possible for agents to exceed the specified capacity by manually assigning work in excess of the limits." Routing uses the number to decide who gets the next ticket. It doesn't stop anyone taking more.

Why tickets sit unassigned while agents look idle

This is the most common symptom, and it usually has one of five causes.

No group is assigned. For group-based routing, which is what Team and Growth get and what the standard queue uses, this is Zendesk's first requirement and the easiest to overlook: tickets must have a group assigned before routing will touch them. A ticket with no group sits still no matter how much capacity is free.

Everyone is at capacity. With the default rule that is 5 concurrent email tickets each. Check the rule, not the API field.

Nobody's in a routing-eligible status. Routing reads agent status. Being logged in is a separate thing. An agent who never sets one isn't a candidate.

Email tickets are missing the auto-routing tag. This one catches everybody. Talk and messaging route automatically, but an email ticket has to carry the auto-routing tag to enter the standard omnichannel queue. On our instance that tag is auto_route_ocr. If no trigger applies it, email tickets never enter routing and just sit in their group.

No queues exist. We had 0 custom queues, which means no custom routing rules, so everything falls back to default behavior.

The three settings to change first

1. Read your actual capacity rule before changing anything. Open Capacity rules in Admin Center rather than querying the API. Capacity rules apply to a set of assignees rather than to a group, which is why the screenshot above reads Assignees 6. You set different numbers per rule and pick who it covers, so a team handling long investigations can sit lower than one doing quick replies.

2. Create the auto-routing trigger before you expect email to route. A trigger that adds the auto-routing tag on ticket creation is the piece that connects your email channel to routing. Without it, you have switched routing on for messaging and Talk only, which is a confusing half-state to debug.

3. Decide whether you need queues at all. Queues let you route to a primary group and fall back to a secondary one after a wait. They're worth building when you have real overflow behavior to express. With 1 group, like the instance here, the default configuration is fine and a queue adds nothing.

What your plan actually gives you

One thing to settle before you plan around queues, because it changes the advice. Zendesk splits this by tier: on Team and Growth "omnichannel routing uses group-based routing", while on Professional and Enterprise "you can choose between using custom queues or group-based routing with the standard omnichannel routing queue". So custom queues are a Professional-and-above tool. If you are on Growth, the section above about deciding whether you need queues does not apply to you, and the auto-routing tag is the only path email has.

The incentive behind the gap

Two capacity numbers exist in two places and Zendesk's own help documentation reconciles them nowhere. Both are individually defensible: a conservative account-wide fallback can't be accused of burying an agent on day one, and a starter rule of 5 gives a usable out-of-the-box experience.

The incentive worth naming is which of the two gets the attention. Capacity rules are part of omnichannel routing, the newer thing Zendesk wants accounts to adopt, so that surface gets the interface, the documentation and the authoritative value. The older field in account settings is left in place because removing it would break whatever already reads it. A vendor is rewarded for making the new feature work well and is rewarded not at all for maintaining a signpost on the old one.

The cost of having both lands on you, quietly. Nothing in either surface says "this figure is superseded", the field names don't hint at a hierarchy, and the endpoint that returns the authoritative value is one most people would not guess. An admin auditing capacity the fast way gets a confident, wrong answer with nothing to indicate it. That isn't a vendor being dishonest. It's a vendor documenting two features separately and never writing the paragraph that connects them.

Checking the state without clicking through

The whole routing configuration comes back in one request, which is faster than the interface and gives you something you can diff after a change:

GET /api/v2/account/settings.json

The routing object holds enabled, assignment_method, skills_enabled, the reassignment timeouts and autorouting_tag. All of those are trustworthy.

Worth separating two things that get discussed together. Omnichannel routing decides who a ticket goes to and how much of their capacity it consumes. Deciding what a ticket is, so it reaches the right group in the first place, is a different job, and our guide to AI ticket routing and triage covers that side. Capacity rules will happily distribute mislabeled tickets evenly. See our Zendesk API guide if you have not used the endpoint before.

The two capacity fields in that object are the exception. On our instance they reported 1 while the applied rule said 5, so read capacity from /api/v2/capacity/rules instead, or from the Capacity rules page in Admin Center, which shows the same values.

Common questions

Why are my Zendesk tickets not being assigned? Check the capacity rule in Admin Center first (the default rule is Email 5, Messaging 3, Talk 1), then agent statuses, then whether email tickets carry the auto-routing tag.

Why does the API say my capacity is 1? Because you're reading the wrong object. max_email_capacity lives in the account settings object; the rule actually applied to your agents is served by the Capacity Rules API at /api/v2/capacity/rules. On our instance those two disagreed, 1 against 5.

Does omnichannel routing work for email? Yes, by one of two routes. With the standard queue, an email ticket has to carry the auto-routing tag before it is picked up, which a trigger applies. With custom queues the tag stops being a requirement, and Zendesk routes email, messaging and calls to whichever queue they match. A ticket matching no custom queue is not simply swept into the standard one. Zendesk says such tickets "still require a group assignment, and email tickets also require the auto-routing tag, before they can be routed by omnichannel routing through the standard queue". Messaging and Talk route automatically either way.

What is the difference between queues and groups? A group is who owns the work. A queue is a routing rule that can send work to a primary group and fall back to another after a wait.

Does omnichannel routing affect SLAs? Not directly. It changes who gets the ticket and when, so it changes whether SLA targets are met, but the policies themselves are evaluated independently.

Can I turn it off again? Yes. Note that Zendesk documents the disruption for turning it on: the moment it is enabled, every agent is set offline and prompted to choose a new status. Plan the switch for a quiet hour on that basis.

Where an AI layer fits

Routing decides which person receives a ticket. It has no opinion about what the ticket says, which is why a well-routed queue can still be a big one.

Macha runs on top of the Zendesk you already have. It reads the ticket, including custom field values and attachments, and can classify it, write fields back, add an internal note, or post a public reply, using your existing triggers and webhooks as the entry point. In routing terms that matters because a ticket classified and enriched before assignment reaches the right person with the context already attached. It suits teams whose routing is sound and whose queue is simply longer than the people in it can work. Setup runs through the Zendesk integration, and billing is per ticket, so one thread with one person is one charge however many replies it takes.

Start your free trial and connect your Zendesk in a few minutes.

Macha

About Macha

Macha is an AI agent platform that works on top of the help desk you already use — Zendesk, Freshdesk, Gorgias, or Front — and connects to the rest of your stack, even your own internal systems. Its AI agents resolve tickets and automate entire workflows end to end, all set up in plain English, no code. Learn more about Macha →

Zendesk
5.0 on Zendesk Marketplace

Loved by support teams worldwide

See what support teams are saying about Macha AI.

The application seems excellent to me! We are still testing, and we need support for some details and they were extremely efficient too!

Daniela Costa

Daniela Costa

Head of Support, Seabra

Macha has been a great addition to our support toolkit. It generates clear, well-organized responses that fit naturally into our workflow. One feature we particularly appreciate is its ability to automatically reply in the same language as the ticket.

Marius F

Marius F

Support Head, Zentana

We've been using Macha for a little while now and it's been really great addition so far! It's powerful, convenient, and makes getting work done a lot easier for our agents.

Alexander Wedén

Alexander Wedén

Head of Support

Support team is very helpful and responsive. Really enjoy how lightweight this is within Zendesk itself vs other more intrusive tools.

Cathleen Wright

Cathleen Wright

Zendesk Admin, Cortex IO

So far it's pretty good! Our queries are a little nuanced, so we can't always use it, but it's got enough utility for us. It can even incorporate our bilingual country with greetings in a second language.

Jae Oliver

Jae Oliver

Head of Support, Wise

Really enjoying using Macha, it has made a noticeable difference to our support team in a short amount of time. I really like the ticket summary feature, saves us a lot of time.

Harry Jackson

Harry Jackson

Head of Support, Crumb

Macha AI is a great addition to my workspace! It's powerful, convenient, and it really makes productivity so much easier for our agents!

Dave G

Dave G

Head of Support, Cyber Power Systems

Very impressed! AI integration for Zendesk has certainly come a long way and Macha seems to set the standard for now. This will for sure save lot of time in our support team.

Pauli Juel

Pauli Juel

Head of CS, Dokument24

Macha has been working great for us so far! The auto-responses are accurate and our resolution time has dropped significantly.

Lana T

Lana T

Zendesk Admin, Swotzy

Macha AI is a great addition. The knowledge base feature means our agents always have the right answers at their fingertips.

Mischa Wolf

Mischa Wolf

Head of Support, Topi

We're enjoying this integration so far. It's made our support team more efficient and our customers get faster responses.

Paula G

Paula G

Head of Customer Support, Xly Studio

The team enjoys using it. It saves considerable time on common questions and the integration options are excellent.

Kilian Leister

Kilian Leister

Support Head, Didriksons

Ready to supercharge your team with AI?

Get started in minutes. Connect your tools, configure your agents, and let AI handle the rest.

500 free credits · no time limit, no credit card