Discord Ticket Categories: Naming, Routing and Staff Roles
A ticket category is a routing rule, not a label. How many to run, what to name them, which staff role sees each one, and when the AI should stay out.
Dani, Founder, AI Ticket Bot
17 min read
Almost every ticket setup starts the same way. Someone makes one panel with one button that says "Open a ticket", it works, and then a month later half the tickets are questions the AI could have answered and the other half are billing problems being read by fourteen moderators who cannot help with them. The fix is not a bigger panel. It is deciding what a category is for before you add the third one.
What is a ticket category on a Discord bot?
It is one choice on your panel: an option in a dropdown, or its own button. To a member it looks like a label. Underneath, on our bot, it carries four settings that each override the panel's default.
- Member picks a category
- The channel is created in that category's target
- Its staff role is granted access
- The AI starts on or off
- The form asks its questions
Every one of those four is tri-state. Leave it alone and the category inherits the panel; set it and the category wins. That matters more than it sounds, because it means a well-built panel usually has one category with everything set and three that only override the one thing that differs.
What one category holds
- Name
- Up to 64 characters, unique within the panel
- Description
- Up to 100 characters, shown under the name in dropdown mode only
- Emoji
- Standard or a custom server emoji
- Ticket target
- The Discord category the channel is created in, or the parent channel in thread mode
- Responsible role
- Granted access to the channel, and pinged on open if that switch is on
- AI
- On, off, or inherit from the panel
- Questions
- Its own form, up to five fields, on Premium and above
There is one more thing a category does that has nothing to do with configuration, and it is the part nobody documents. On a ticket where the AI is enabled, the bot prepends a single context line to the member's first message before the model ever sees it, and that line is [Ticket #1284 · billing · opener: Alice]. Three facts: the number, the category name, and who opened it. The description is not in there. So the word you type in the name box is genuinely read by the thing answering your members, and "Support 2" tells it nothing at all.
How many ticket categories should you have?
Fewer than the plan allows. The plan cap is rarely what bites.
| Your server | Categories | Why |
|---|---|---|
| Small community, one or two staff | 1 to 2 | A single "Help" plus maybe "Report a member". More is furniture |
| Growing server with a real team | 3 to 4 | The point where "who answers this" starts differing by topic |
| Commerce, payouts or a store | 4 to 5 | Billing genuinely needs its own role and its own privacy |
| Game or roleplay server | 4 to 6 | Appeals, reports, bugs and general have four different audiences |
| Large server, staff split into teams | 5 to 8 | One category per team that owns a queue, not one per topic |
| Anything where you are unsure | Start at 3 | Adding a category takes a minute. Retraining members takes weeks |
The honest test for whether a category should exist is whether it changes who answers, where it lands, or whether the AI is involved. If a new category would change none of those three, it is a label, and it belongs in the first question of the form rather than on the panel. Form questions are the right home for anything that is really a detail about the ticket.
Where the limits actually are
- Free
- 1 panel, 5 categories on it
- Premium
- 5 panels, 10 categories each
- Pro
- 15 panels, 15 categories each
- Enterprise
- Unlimited on our side
- Discord
- 25 options in a dropdown, 25 buttons laid out five per row
- Members
- Somewhere around five before they stop reading
That last row is not a joke and it is the only one that costs you anything. A panel with nine categories does not produce nine well-sorted queues. It produces a lot of tickets in whichever one is at the top of the list.
- 180,000+
- tickets over the bot's lifetime
- ~half
- resolved with no human
- 3,400+
- Discord servers
- seconds
- typical first reply
Where these numbers come from
- Sample
- Every ticket handled across both generations of the bot, all servers
- Window
- Lifetime to date, refreshed continuously
- Definition
- Resolved means the AI closed the ticket without escalating to a human
- Check it
- The live endpoint at /api/stats/global returns the current figures
More categories, or more panels?
This is the question people get wrong, and it has a mechanical answer rather than an aesthetic one.
A ticket can be transferred between categories on the same panel. It cannot be transferred to a different panel. So the moment you split one audience across two panels, a ticket that lands in the wrong one is stuck there. Your only options are to close it and ask the member to open another, or to answer it in the wrong place.
Split into categories
- Same panel, several options
- A mis-filed ticket transfers in one command
- One set of panel defaults everything inherits
- Counts against your categories-per-panel limit
- Right for splitting one audience by topic
Split into panels
- Separate posts, usually in separate channels
- A mis-filed ticket cannot be moved at all
- Every default configured twice, and they drift
- Counts against your panels limit, which is smaller
- Right for splitting genuinely different audiences
Use a second panel when the audience or the channel differs: a staff-only panel in a private channel, an applications panel that lives in a different part of the server, a partner panel only a role can see. Use categories for every split inside one audience. The rule of thumb: if the two groups of people would ever both be looking at the same panel post, they belong on one panel.
What should you name a ticket category?
Name it after what the member has, not after which team you have. Members do not know your org chart, and every name that describes your internal structure quietly asks them to guess.
Billing and payments
The member knows whether their problem involves money. That is the only question the name has to answer
Tier 2
Describes your team. The member has no idea which tier their problem is
Report a member
Names the action, so nobody uses it to ask about the server rules
Other
Becomes the default for everything, and then it is your busiest queue and it means nothing
Ban appeal
Narrow on purpose. A narrow name is a filter that works before anyone reads the ticket
Support
Every ticket is support. It is the panel's job to say that, not the category's
Two mechanical details that change how the name behaves.
In dropdown mode you get a second line, on buttons you do not. The panel renders either one dropdown of options, each with the name and a 100-character description underneath, or one grey button per category, five to a row, showing name and emoji only. If you are on buttons, the description you carefully wrote is never displayed to anybody, so the name has to carry all of it.
The name flows into the channel name if your template asks for it. If your naming template includes the category, then ticket-1284 becomes something like billing-1284, and a staff member can see what a ticket is about from the channel list without opening it. That is worth more on a busy server than it sounds, and it is covered along with the rest of the setup in setting up your first ticket bot.
How do you send each category to the right staff?
Every category can name one responsible staff role. On our bot that role is not a notification setting, it is a permission.
When a channel-mode ticket opens, the bot writes the channel's permissions from scratch: everyone is denied, the opener is allowed, any staff role you marked See others is allowed, and the category's responsible role is allowed. If the category does not name one, the panel's role is used. If neither names one, the list ends there.
If you have ever had "tickets nobody answers" on one specific button, that is almost always the reason.
The ping is a separate switch with its own inherit state, which is the combination worth knowing about:
- Role set, ping on
- The normal case. That team can see the ticket and is told when one arrives
- Role set, ping off
- The team can see everything in their queue and works from the channel list. No 3am mention
- Role unset, ping on
- Nothing is pinged, because there is no role to ping. Not an error, just nothing
- Role unset, ping off
- Only the opener and your see-everything roles can read it
The same role is used when the AI decides to hand a ticket over. Escalation pings the category's role if it has one and the panel's role otherwise, which means a per-category role gets you correct routing on both the automatic path and the manual one, from one field. If ticket permissions in general are what you are stuck on, what a ticket bot needs to work covers the server side of it.
Should the AI answer in every category?
No, and the per-category switch exists precisely because the honest answer is no.
The AI is worth having on any queue where the answer already exists somewhere: general questions, how-do-I, where-is-this, anything your staff have already taught it. Across this bot's lifetime, roughly half of more than 180,000 tickets have been resolved without a human, and those are overwhelmingly that kind of ticket.
It is the wrong first responder on queues where being answered by software is itself the problem. A ban appeal, a report about another member, a safeguarding issue. Not because it would answer badly, but because the member needs to know a person is reading it.
Leave the AI on
- General questions, setup help, how do I do X
- Anything covered by what your staff have trained it on
- Billing questions that are really policy questions, such as refund windows
- High volume queues where a first reply in seconds is the whole win
Turn it off for this category
- Ban appeals, where the member is asking a human to reconsider
- Reports about other members, which need a person from the first line
- Anything legal, safeguarding, or involving a minor
- Queues where your staff want the raw first message, unmediated
A ticket that starts with the AI on does not stay that way regardless. It steps aside the moment a staff member replies, when it is claimed, or when it escalates itself, so the switch controls the opening rather than the whole conversation. What it does control absolutely is the first impression, and on an appeal that is the entire thing.
Where do the ticket channels actually go?
By default, into whatever Discord category the panel points at. Each ticket category can override that with its own target, which is how you get billing tickets landing in a private area your moderators cannot browse, while general tickets land in the open staff area.
Two rules the bot enforces so this cannot half-work:
- The target type has to match the panel's mode. Channel-mode panels need a Discord category, thread-mode panels need a text channel. A mismatch is refused at save time rather than at ticket-open time, because the second one fails in front of a member.
- The target has to be in this server. An id belonging to another server the bot happens to share is rejected outright.
Separating targets also spreads you across Discord's 50-channel-per-category limit instead of piling every open ticket into one. That limit, and what large servers do about it, is covered in running a ticket bot at scale.
Can each category ask its own questions?
Yes. The form is per category, not per panel, so "Report a member" can ask who and when while "General" asks nothing at all. That is a Premium feature and it caps at five fields per category, because Discord allows five.
The full argument for which questions earn their place lives in what to ask before a ticket opens. The one thing worth repeating here is the link between the two features: the answers are handed to the AI as the ticket's first message, so a category with good questions and the AI enabled gets a real attempt at an answer instead of "hi, how can I help".
What happens when someone picks the wrong category?
They will. Design for it rather than trying to prevent it.
hey my payment went through twice
This one's for the billing team, moving you over now

Ticket transferred from General to Billing by @Mod
Same channel, same history, they can see it now
/ticket transfer needs the Transfer staff permission or Manage Server, and here is exactly what moves and what does not:
Pick the target
Any category on the same panel. Cross-panel transfers do not exist
The ticket updates
Number, history and transcript stay. The category is recorded on the ticket, including for closed-ticket search later
The channel moves
Into the new category's target, if one is set and the bot can move it
The name follows
Only if your naming template includes the category, and only if nobody renamed the channel by hand
A notice is posted
In the channel, plus your log channels and any webhook listening for transfers
Now the two honest gaps, because they are the ones that surprise people.
A transfer does not rewrite the channel's permissions. Those were written when the ticket was created. Moving it into a category whose responsible role is different does not grant that role access, so the team you just transferred it to may not be able to see it. There are two clean fixes: give the roles that handle transfers the See others permission, or set permissions on the parent Discord categories themselves so that moving the channel moves its access with it.
A claimed ticket is not physically moved. A claimed ticket lives in its claimer's own working area, and dragging it out mid-conversation would be worse than leaving it. The transfer is recorded and the ticket moves for real when it is unclaimed.
Can you rename or delete a category later?
Both, and they do different things to your history. This is the part worth reading twice.
A rename rewrites the past. The new name is copied onto every ticket ever opened in that category, open and closed alike. Rename "Support" to "General Help" and a ticket from March now reports General Help. That is correct when you are fixing a name and wrong when you are changing a meaning, because those March tickets were not about the new thing.
A delete freezes it. The name stays written on the tickets that used it, the link to the category does not. So if the meaning is genuinely changing, add the new category and delete the old one instead of renaming, and your history stays truthful.
Deleting asks you what to do with tickets still open in it, and the default is to refuse:
Deleting a category with open tickets
- Refuse
- The default. Nothing happens until you choose one of the other two on purpose
- Let them finish
- The category row goes, the tickets stay open and simply lose their overrides
- Close them all
- Every open ticket in it is closed properly, with transcripts, opener notices and your webhooks
Default, forces the admin to pick a destructive option deliberately.
The bot's own reason for defaulting to refuse
There is one more case that looks like data loss and is not. If you downgrade a plan, categories beyond the new limit are hidden, not deleted. They stop rendering on the published panel and they come back the moment the plan does. It is worth knowing before you look at a panel that used to have ten options and count seven.
Three edge cases that look like bugs
A panel refuses to publish with no categories. At least one visible category is required, and "visible" is plan-capped, so a downgraded server with all its categories past the cap gets this error while clearly having categories.
Two categories on one panel cannot share a name. The name is the unique key within the panel. Two panels can each have a "General"; one panel cannot have two.
A channel rename after a transfer is best effort. Discord rate-limits channel renames to roughly twice per ten minutes, and the bot deliberately skips the rename if the channel name is not still the exact template output, so a channel your staff renamed by hand is never clobbered. The transfer itself always succeeds.
How do you know your categories are right?
Categories are one of the few support settings with an honest feedback signal, so use it instead of guessing.
Look at these after two weeks
- How many tickets got transferred. A high rate means your names describe your team, not the member's problem
- What share landed in your most general category. Over about half and the specific ones are not being read
- Whether any category received almost nothing. Merge it, or rename it to what people actually wanted
- Whether the AI-off categories were the ones that genuinely needed a human first
- Whether every category has a responsible role, or whether one is quietly invisible
- Whether staff are answering in categories they should not even be able to see
The tooling for the first two is split, which is worth knowing before you go looking. In Discord, /ticket search filters by panel, status, priority and person, but not by category. The dashboard's ticket list does filter by category, so that is where a per-category count comes from. Support analytics covers the rest of what is measurable.
- /ticket transfer
- Move this ticket to another category on the same panel
- /panel edit
- The categories list, ordering, display mode and every per-category override
- /ticket search
- Find past tickets by panel, status, priority or person
- /panel publish
- Push the current category list to the panel post after you change it
Changing your categories does not update a panel that is already posted on its own. Publish again, or the post keeps showing the old list.
When more categories is the wrong answer
Sometimes the queue is not badly sorted, it is badly sized, and no amount of routing fixes that.
If the same question arrives in every category, the answer is a public FAQ channel or better training, not a new button. If tickets sit unread for days, the answer is working hours so members know when to expect a reply, and auto-close so the list stays readable. If the total volume is the problem, reducing ticket volume is a different project entirely and a more valuable one.
Categories decide who answers. They do not decide how many people ask.
- Panel
- The posted message with the buttons or dropdown members use to open a ticket
- Category
- One option on that panel, carrying its own routing, role, AI and form settings
- Responsible role
- The staff role granted access to a category's tickets, and pinged on open
- Ticket target
- The Discord category or parent channel a ticket's channel is created in
- Transfer
- Moving an open ticket to another category on the same panel
- Inherit
- The third state on a category override, meaning use whatever the panel does
Start with three
If you are building this today: make one panel, give it three categories, set a responsible role on each, turn the AI off on whichever one is about people rather than problems, and publish. Watch the transfers for two weeks and let those tell you what the fourth category should be.
The instinct to design the whole tree up front is the thing to resist. Every category you add before you have evidence is a guess about how strangers read your server, and the transfer log is a much better source than the guess.
Keep reading
Sources and further reading
- Live product statisticsServer count, lifetime tickets and AI-resolved share, updated continuously
- Plans and feature availabilityCategories per panel, panels per plan, and which plans include per-category forms
- Machine-readable product referenceWhat the bot does, with its limits stated
- Uptime and incident history90 days of real availability data
Frequently asked questions
It is one of the choices a member sees on your ticket panel, either an option in a dropdown or its own button. On our bot each category carries four independent settings: which Discord category the ticket channel is created in, which staff role can see and answer it, whether the AI replies at all, and which questions the member is asked before the ticket opens. Anything you leave unset falls back to the panel, so a category is a set of overrides rather than a separate configuration.
Three to five for most servers. The real limit is not the plan, it is how many options a member will read before they pick the first one that looks close enough. Every category you add is a decision you are asking a stranger to make correctly, and the wrong pick costs your staff a transfer. Add a category when it changes who answers, where the ticket lands, or whether the AI should be involved. If it changes none of those, it is a label and it belongs in the first question of the form instead.
Yes, and on our bot that role does more than receive a ping. The responsible role you set on a category is written into the ticket channel's permissions when the ticket is created, so it decides who can see the conversation at all. Set it per category and your moderators never see billing tickets, while your billing role never sees appeals. The ping on open is a separate switch, so you can grant a role access quietly without notifying it every time.
Staff run /ticket transfer and choose the right one, which needs the Transfer staff permission or Manage Server. The ticket keeps its number and its history, the channel moves into the new target, and the channel name updates if your naming template includes the category. Two things do not follow it: the channel permissions stay as they were written at open, so a role that had no access still has none, and a claimed ticket stays where the claimer is working until it is unclaimed.
Categories, in almost every case. A ticket can only be transferred between categories on the same panel, so splitting the same audience across two panels means a mis-filed ticket cannot be moved at all. Use a second panel when the audience or the channel genuinely differs, such as a staff-only panel in a private channel or a separate panel for applications, and use categories for every split inside one audience.
Yes, and the rename reaches further than most people expect. The new name is copied onto every ticket that was ever opened in that category, including closed ones, so your history now reads as though the category was always called that. That is usually what you want when you are fixing a name. It is the wrong tool when the meaning changes, because the old tickets were not really about the new thing. In that case add a new category and delete the old one, which leaves the old name frozen on the tickets that used it.
Yes. Each category has its own AI switch that overrides the panel, with a third state that simply inherits whatever the panel does. The usual pattern is AI on for general questions and anything answerable from what your staff have taught it, and AI off for appeals, reports and anything where the first thing a person needs is a human. The switch decides the state the ticket starts in, and the AI still steps aside on its own when a staff member replies.
It’s not just an AI, it’s your AI.
See it on your own server.
Add the bot free, teach it a few of your most common answers, and watch it clear the repeat tickets on its own.
Free plan, no card. Your first panel starts 14 days of Premium.
Keep reading.
All articlesDiscord Ticket Close Requests: Ask First, Close on a Timer
Staff can ask the opener whether a ticket can be closed, with a deadline attached. What the member sees, the four ways it ends, and why silence closes it.
9 min read
Discord Ticket History: How Members Find Their Own Past Tickets
Closing a ticket deletes the channel, but the member keeps the record. How they find their old tickets and transcripts, and what the history deliberately hides.
8 min read
Discord Saved Replies: What Belongs in the Library
A saved reply is a staff message, so every one you send ends the AI's turn. What to keep in the library, what to teach the AI instead, and where the limits sit.
9 min read