ZombyIO
All guides

Docs · Welcome and organise

How to set up a ticket system in Discord

Members press a button and get a private channel where only they and your support team can talk. This guide gets your first panel live with three questions, then covers forms, teams, closing, transcripts and the web portal.

Takes about 7 minutesFree, Premium raises limits

What you will end up with

A member presses Open a ticket, answers your questions and gets a private channel with your team. Your team answers there or in the browser, and closing the ticket removes the channel.

support

Where to find it

Open the dashboard, pick your server and choose Tickets in the sidebar (on a phone: under Features in the bar at the bottom). That is two clicks from your server list. You can also press Ctrl K anywhere in the dashboard and type the name.

  1. Your servers
  2. Your server
  3. Tickets
Open the dashboard

Step by step

  1. Step 1: Answer the three setup questions

    In the dashboard, pick your server and choose Tickets in the sidebar. As long as your server has no ticket panel, the page is a short setup with three questions:

    • Where should the ticket button be? The channel where members see the button, for example #support.
    • Where should tickets open? Keep Create a "Tickets" category for me (recommended), or pick one of your categories. Every ticket becomes its own channel in it.
    • Who answers tickets? Your staff roles, up to 10. Leave it empty and only the server’s administrators see tickets.

    Press Set it up and publish. ZombyIO creates the category, a support team from your roles and a panel with one question, "How can we help?", in your server’s language, and posts it straight away.

    Tip

    Would you rather start from an empty page? I would rather set everything up myself opens the full settings instead.

    Important

    A role ZombyIO gives every new member, such as an auto role, cannot answer tickets, because everyone would read every ticket. The button stays greyed out until you untick it.

  2. Step 2: Adjust the panel message and its button

    The page now lists your panel. Select it and open The message and the button to change the Title, the Text, the Button label, the Button emoji and the Button colour. An empty title uses the panel name, and other empty fields use the bot’s own words in your server’s language, such as "Open a ticket".

    A panel is one message with one button. For separate buttons, say support, reports and applications, add more panels with the templates under Panels: one panel on the free plan, up to 50 with Premium.

    Press Save, then Update message. Changes to the text, the button and its colour only reach Discord with that press, and the badge Changed since publish reminds you until then.

    support
  3. Step 3: Ask questions before a ticket opens

    Open Questions and first reply and press Add a question. A panel can ask up to five, which is Discord’s own limit for these forms. For each one, set the question, One line or Several lines, an optional placeholder, and whether it is required.

    When a member presses the button, Discord shows the questions as a small form, with up to 1,000 characters per answer. The ticket opens when they submit it, and the answers appear at the top of the new channel. A panel without questions opens the ticket straight away.

    First message in the ticket is the greeting at the top of every ticket. {user} mentions the member and {panel} is the panel’s name.

    Tip

    Questions, the first message, teams and the category take effect as soon as you press Save. Only the posted message and its button need Update message.

  4. Step 4: Decide who answers tickets

    Under Who answers tickets?, pick your staff roles. Members with them form your support team: they see its tickets, reply, claim and close, in Discord and on the web portal. Administrators always see every ticket, because Discord lets them into every channel.

    For tiered support, open Several teams and fine-grained permissions. Each team has a name, up to 10 roles, up to 10 direct members by user ID, and six switches: See tickets, Reply, Claim, Close, Manage and Read transcripts. A new team gets all of them except Manage. Once you have two or more teams, choose under Handled by in each panel which teams answer it.

    Important

    A team only has rights on tickets from the panels it handles, and on tickets escalated to it. Permissions you set on the ticket category are not used: every ticket channel gets its own permissions from the teams.

  5. Step 5: Claim a portal address to keep transcripts

    Closing a ticket deletes its channel. To keep the conversation, claim an address under Web portal: type 3 to 32 letters and numbers and press Claim address. Your portal is then at zomby.io/tk/ followed by that name. Once claimed or changed, the address stays fixed for 30 days, so pick one you are happy to pin.

    From then on, with Transcripts switched on, what members and staff write in a ticket is recorded, together with the bot’s notes and replies sent from the portal. A closed ticket stays readable for 30 days on the free plan and 365 days with Premium. After that its messages and form answers are deleted, while the ticket number, dates and rating stay for your statistics.

    On the portal everyone signs in with Discord. Your team gets an inbox of open, unclaimed, own and closed tickets that updates live, and can reply, claim, close with an optional reason, set the priority, escalate to another team and add a member, each as far as their team allows. Members see only their own tickets, including closed ones.

    Tip

    Share the link with Copy link. Members also find it in the direct message they get when their ticket closes.

    Important

    Nothing is recorded before an address is claimed, and nothing is recorded afterwards for the past. Messages from other bots and later edits are not part of a transcript.

  6. Step 6: Choose how tickets close

    Under House rules:

    • Auto-close after inactivity closes quiet tickets after 24 hours, 3 days, 7 days or an exact number of hours up to 720. It is off by default. A warning pings the member first, a quarter of the time before the end but never more than 24 hours before, and every new message a person writes starts the clock again.
    • Ask before closing, on by default, makes the Close ticket button ask once more.
    • Ratings, on by default, asks the member for one to five stars by direct message when their ticket closes, unless they closed it themselves.

    Your team can also press Ask to close inside a ticket. The member is asked whether it may close, with Yes, close it and Keep it open. Without an answer it closes by itself after 24 hours, whatever the auto-close setting. A message from the member cancels the question.

    Tip

    The switch in the banner stops new tickets only. While it is off, open tickets, their buttons, the portal and auto-close keep working.

    ticket-0001
  7. Step 7: Open a test ticket and handle it

    Press the button in Discord yourself. You get a private channel called ticket-0001, a greeting with your answers and two buttons: Close ticket, which the member can use too, and Staff.

    Staff shows each team member, privately, only what they may do: Claim to take the ticket, Assign to hand it to someone, Add role to bring a role in, Priority to mark it Low, Normal, High or Urgent (the channel name gets a coloured dot), and Ask to close. Taking over a ticket someone else claimed needs Manage.

    Closing deletes the channel. The member gets a direct message saying the ticket is closed, with a link to the transcript when you have a portal address.

    ticket-0001

Every setting explained

In the order the page shows them. Names in bold are exactly what the dashboard calls each control.

Panels

Ticket panelsFree: 1 · Premium: 50

Each panel is one message with one button, with its own channel, category, questions and teams. The list shows every panel with a badge: Draft (not posted yet), Published, Changed since publish (the posted message is older than your saved changes) or Paused (posted, but Tickets is switched off). Remove deletes the panel and its posted message when you save, and tickets already open stay open. When Premium ends you keep every panel and can still edit it, but adding one needs Premium again.

General support · Report a member · Application

Each button adds a new panel with finished texts and questions. General support asks "How can we help?". Report a member has a red button and asks who it is about and what happened. Application has a green button and asks what the member applies for and why. The texts come in your dashboard language. A new panel still needs a channel and a category before it can be published.

Channel, category and notifications

Panel name

Above the sections, up to 60 characters. Your team sees it on the portal and in the log, members see it as the title of the question form, and {panel} in the first message stands for it. It is also the message title when Title is empty.

Panel channel

Where the panel message is posted: a text or announcement channel, or a thread. Required to publish. When you move a published panel to another channel, saving removes the old message and the panel goes back to Draft until you publish it again.

Ticket category

The category new ticket channels are created in. Required to publish. Discord allows 50 channels per category, and the list shows how full each one is.

When the category is full

Up to 4 more categories, used in order once the ticket category holds 50 channels. After the last one, tickets open outside any category rather than not at all. Discord also caps a server at 500 channels: the page warns you from 475, and at 500 no ticket can open.

Handled by

The teams that answer this panel’s tickets. Shown once you have two or more teams. A panel without a team is answered by administrators only.

Notify the teams

Mentions the roles of the handling teams in the first message of every new ticket, up to 10 roles. Direct team members are not mentioned. Off for new panels, on for the panel the setup creates when it has a team.

The message and the button

Title

Up to 120 characters. Empty uses the panel name, and without one "Need help?" in your server’s language.

Text

Up to 2,000 characters. Empty uses "Open a ticket and the team will be right with you."

Button label

Up to 60 characters. Empty uses "Open a ticket".

Button emoji

One emoji, a custom emoji of your server written as name:id, or nothing. Default 🎫. Anything else is not saved.

Button colour

Blurple, Grey, Green or Red. Default Blurple. The message beside it always keeps its blue side stripe.

Questions and first reply

Add a question

Up to five questions per panel. Each has its text (up to 45 characters), One line or Several lines, a placeholder (up to 100 characters) and a switch for whether it is required, on by default. A question without text shows as three dots in Discord. Answers can be up to 1,000 characters. The first answer becomes the ticket’s subject on the portal.

First message in the ticket

The greeting at the top of every ticket, up to 1,500 characters. {user} mentions the member and {panel} is the panel name. Empty uses "Hello {user}! Thanks for opening a ticket. Describe your issue and the team will be right with you." in your server’s language.

Publish

Publish panel · Update message

Posts the panel message, or edits it once it is posted. It reads what is saved, so save first. Needs a channel and a category. If someone deleted the message by hand, a new one is posted. You can publish about six times in a row, then once every 20 seconds, counted together with reaction role panels.

Take message down

Deletes the posted message but keeps the panel, so you can publish it again later.

Who answers tickets?

Staff roles

Up to 10 roles. They become the roles of your first team, called Support until you rename it, which sees tickets, replies, claims, closes and reads transcripts. A role ZombyIO gives every new member cannot be used, because everyone would read every ticket. A role members pick themselves or earn with levels gets a warning, since everyone holding it reads the team’s tickets.

Several teams and fine-grained permissions

A member in several teams gets every right any of them has. The server owner and anyone with Administrator or Manage Server can do everything, in Discord and on the portal.

Support teamsFree: 3 · Premium: 25

Press Add a team for another team. A new team answers no panel until you choose it under Handled by. Removing a team also removes it from every panel. When Premium ends you keep every team.

Team name

Up to 60 characters. Shown on the portal, for example when a ticket is escalated to the team.

Roles in Support

Everyone holding one of these roles belongs to the team. Up to 10 roles.

Direct members of Support

Up to 10 Discord user IDs, separated by commas, for helpers without a staff role. Anything that is not a user ID is not saved, and the page tells you.

See tickets

The team sees the ticket channels of its panels and the inbox on the portal. Without it the team gets no access to the channels at all. On for new teams.

Reply

Write in ticket channels and answer from the portal. On for new teams.

Claim

Take a ticket so everyone sees who handles it. On for new teams.

Close

Close tickets and use Ask to close. The member who opened a ticket can always close it. On for new teams.

Manage

Set the priority, assign a ticket to someone and add a role in Discord, escalate to another team and add a member on the portal, and take over or release someone else’s claim. Off for new teams.

Read transcripts

Read closed tickets on the portal while they are kept. Open tickets are readable with See tickets alone. On for new teams.

Web portal

Portal address

Your portal’s address: zomby.io/tk/ followed by 3 to 32 letters and numbers, first come, first served. Names like support, staff, official or zomby are protected, and for a taken or protected name the page offers up to three free ones. Claim address saves at once, without the Save button. Once claimed or changed, the address stays fixed for 30 days. Copy link and Open portal appear once it is claimed.

House rules

Open tickets per member

How many open tickets one member may have at once, across all panels: 1, 2, 3, 5 or an exact value from 1 to 25. Default 2. Past it, the button asks them to close one first.

Auto-close after inactivity

Off, 24 hours, 3 days, 7 days or an exact value up to 720 hours. Default off. The member is warned in the ticket a quarter of the time before it closes, at most 24 hours before. Any message a person writes, or a reply from the portal, starts the clock again, while messages from bots do not. A changed setting applies to each ticket from its next message.

Ask before closing

The Close ticket button asks "Close this ticket?" once more before it acts. On by default.

Ratings

After the team closes a ticket, the member who opened it is asked for one to five stars in the direct message about the close. Not asked when they closed it themselves. Each ticket can be rated once, and the average shows on this page and on the portal. On by default.

Close tickets when the member leaves

Closes a member’s open tickets when they leave the server. They get no message about it. Off by default.

TranscriptsFree: 30 days · Premium: 365 days

Records every ticket for the portal: what members and staff write, the bot’s notes and replies from the portal. Only works once a portal address is claimed, and until then the switch is greyed out. Files are kept as links, which Discord keeps working for about a day. A closed ticket is kept for the period of the plan the server had when it closed. On by default.

Log channel

Posts a line when a ticket opens and when it closes, with who closed it, after how long and the reason when there is one. Default none.

More settings

Channel name pattern

How ticket channels are named. Default ticket-{number}, up to 60 characters. {number} is the ticket number with four digits, {user} the member’s Discord display name. Only a to z, 0 to 9, ä, ö, ü and ß are kept, and anything else becomes a hyphen.

Blocked roles

Members with one of these roles cannot open tickets. Up to 50 roles.

Blocked members

Up to 50 user IDs, separated by commas. These members cannot open tickets.

Free and Premium

Premium costs €6 a month per server and is shared by every admin of that server. It raises limits, it does not unlock the feature.

Free and Premium
WhatFreePremium
Ticket panels150
Support teams325
Transcripts kept for30 days365 days

Something not working?

The problems people run into most often, and how to fix each one.

Members get "I cannot create ticket channels on this server"

Discord refused to create the ticket channel. Each ticket channel hands out rights to the bot, the member and your team, and Discord only lets ZombyIO hand out rights it has itself in that category: View Channel, Manage Channels, Manage Roles, Send Messages, Embed Links, Attach Files, Read Message History, Add Reactions and Manage Messages.

Give ZombyIO those permissions in the ticket category, or give it back the Administrator permission. After a refusal the button gives this answer for 10 minutes without trying again. Saving any page in the dashboard, or changing a role, ends that pause at once. Server Check in your server’s sidebar lists what is missing, and roles and permissions explains how to fix it.

The button says the ticket panel is no longer set up

Tickets is switched off, or the panel behind that button was removed. Switching off stops new tickets while open ones keep working. Turn the switch in the banner back on and press Save. For a removed panel, publish a panel again and delete the old message if it is still there.

A member cannot open another ticket

"You already have 2 open tickets on this server" means they reached Open tickets per member, counted across all panels. Close the tickets that are done, or raise the number under House rules. A ticket whose channel someone deleted by hand closes by itself and no longer counts.

"You cannot open tickets on this server" means they are under Blocked members or hold one of the Blocked roles.

Publishing the panel does not work
  • The button is greyed out and the page says "Save first. Publishing reads the saved state." Press Save, then publish.
  • "Pick a ticket category first." Every panel needs a Ticket category, including panels added from a template.
  • "Pick a panel channel first." No channel is picked, it was deleted, or ZombyIO cannot see it.
  • "Discord refused. Can the bot write in that channel?" Give ZombyIO View Channel, Send Messages and Embed Links in the panel channel.
  • "That was a lot of publishing in a short time." Wait 20 seconds and try again.
My staff cannot see new tickets, or the Staff button says it is for the team

Rights come from the teams that handle the ticket’s panel. Check that:

  • the staff role is in the team, under Who answers tickets? or in the team’s roles,
  • the team is chosen under Handled by in that panel, which appears once you have two or more teams,
  • the team has See tickets, and Claim, Close or Manage for the Staff button.

Permissions set on the ticket category are not copied into ticket channels. Administrators always see every ticket.

There is no transcript of a closed ticket

Transcripts are only recorded after you claim a Portal address, and only while Transcripts is on. Nothing from before that is kept, because closing deletes the ticket channel. After 30 days on the free plan, or 365 days with Premium, the portal says the content was removed, while the ticket number, dates and rating stay. Team members need Read transcripts to open closed tickets, and the member who opened a ticket can always read their own.

The portal only says "Nothing here"

The portal gives the same answer for an address that does not exist, a server ZombyIO is no longer on and a ticket you may not see, so it never confirms anything. Check the address and that you signed in with the Discord account that is on the server. Members only ever see their own tickets, and staff need See tickets in a team that handles the panel.

The member got no message or rating after the ticket closed

The message about a closed ticket is a direct message, so it only arrives when the member accepts direct messages from server members. When Discord refuses one, ZombyIO does not write to that member again for 6 hours. There is also no message when Close tickets when the member leaves closed the ticket. The rating buttons are left out when Ratings is off or when the member closed the ticket themselves.

Still stuck?

Ask in the ZombyIO support server. Bring your support ID, your server’s support ID and a sentence about what you expected to happen, and someone will look at it with you.

Go to the support server