A custom Discord ticket bot is a support bot written for your server. Members open a ticket from a panel, the bot creates a private channel or thread that only they and the right staff can see, and when the ticket closes you keep a full HTML transcript. I build them on your own Discord application, so the token, the code and every transcript stay with you.
Most servers don't need one. Ticket Tool and Tickets handle panels and transcripts on their free tiers, and their paid plans cost $7.99 a month and $2.99 per server a month (as of September 2026). A custom ticket bot is worth paying for when tickets need your own data, your own routing rules or your own storage. This page explains where that line sits and what I build on the other side of it.
What the bot does
For the member
- They open your support channel and pick a ticket type on the panel. A few types fit as buttons; a select menu holds up to 25.
- A short form pops up. Discord modals hold up to five fields, including text boxes, dropdowns and a file upload, so the bot collects the order number, match ID or screenshot your staff would otherwise ask for first.
- The bot opens a private ticket, posts their answers at the top and tells them which team will reply.
- When the issue is solved, the ticket closes and a copy of the transcript arrives in their DMs.
For your staff
- Routing. Each ticket type gets its own category and staff role, so billing questions reach the billing team and match disputes reach tournament admins. Routing can also use your data: a ticket from a team captain can go straight to the admin who runs that team's division.
- Claiming. A Claim button or
/claimassigns the ticket, renames it and tells the member who has it, so two people don't answer the same question. - SLA reminders. If no staff member has replied within the time you set, the bot pings the on-call role. If the member goes quiet, it warns them and closes the ticket after a grace period.
- HTML transcripts. On close, the bot renders the conversation as an HTML page that looks like the Discord channel. Images and files are saved with it, because Discord's attachment links are signed and expire. The transcript goes to a staff log channel, the member's DMs and any storage you name.
- Audit log. Every open, claim, add, remove, rename, close and reopen is recorded with who did it and when, in a log channel (and in a database on Community builds), so a dispute can be checked months later.
The ticket bot I built for an esports tournament organizer in 2025 covered part of this: support, match and custom tickets from one control room, staff commands to add or remove people and roles, rename, close and reopen, HTML transcripts, and a record of every ticket and staff action. Claiming and SLA reminders are additions I would build for your server.
Private channels or threads
I pick one of two designs for each server, and the choice mostly comes down to volume.
| Private channel per ticket | Private thread per ticket | |
|---|---|---|
| Limits | Counts toward the server's 500 channels (categories included); 50 channels per category | Doesn't count toward the channel cap; a separate server-wide limit on active threads applies |
| Staff access | One overwrite per staff role | Staff need Manage Threads on the parent channel, which also lets them archive and delete any thread there |
| Visibility | Every open ticket listed in its category | Under the parent channel, hidden after 1 hour to 7 days of inactivity |
| Best for | Up to a few dozen open tickets, clear per-team access | High volume, or servers that are close to the channel cap |
For most community and esports servers I use private channels, with overflow categories once the first one nears 50 tickets. Threads suit busy servers where staff already moderate the support channel.
What it connects to
A ticket bot gets more useful when it can reach the systems your team already works in.
- Your helpdesk. If support lives in Zendesk or a similar tool, the bot can create a helpdesk ticket for each Discord ticket through its API, add the transcript when the Discord side closes, and keep a link between the two.
- Email. Transcripts can go to your support inbox, or to the member's email when your form or your own system has it. SLA breaches can alert a manager who isn't on Discord.
- Google Sheets. One row per ticket with type, opener, claimer, first-response time and close reason, appended through the Sheets API. Staff build their own reports without a dashboard.
- Your own database or API. The bot looks up the member's order, subscription, game account or match when the ticket opens and shows it to staff, so the first reply can be the answer instead of a question.
If the integration is the main job and tickets are a small part, see Discord integrations. If you want answers from your docs before a human steps in, that's an AI support bot, and it can hand off into a ticket. For a company server where tickets sit next to plan roles and bug reports, see Discord bots for business.
Free bot, builder or custom?
Prices below were checked on the vendors' own pages in September 2026.
| Option | Price | What you get | Pick it when |
|---|---|---|---|
| Ticket Tool, free | $0 | Unlimited panels, transcripts you generate, support roles, up to 10 tickets a minute | You want a standard panel today |
| Ticket Tool Premium | $7.99/mo | Adds automatic transcripts, auto-close and auto-delete, DM notices, full embed customization; claiming is listed as a premium feature | You like Ticket Tool and want automation |
| Tickets, free | $0 | Unlimited tickets, forms, claiming, automatic ticket archives, up to 3 panels | Three panels with forms are enough |
| Tickets Premium / White-label | $2.99 per server/mo; white-label $6.99/mo | Unlimited panels, autoclose, statistics, exit surveys; white-label adds your own bot name, avatar and status | You want your branding on a ready-made bot |
| Mava | Free for 30 requests a month; paid plans $39 to $599/mo billed monthly | A support desk with AI answers trained on your sources; Discord support on every plan | You want an AI-first support desk rather than a bot you own |
| Custom ticket bot | From $590, plus optional Care from $49/mo | Your forms, routing, integrations and storage, on your own bot, with the code | Tickets depend on your data or rules |
Say yes to Ticket Tool or Tickets if your tickets are "member asks, staff answers" and the transcript is only for your own reference. Their free tiers do that well, and it would be poor value to pay me to rebuild them.
A custom bot makes sense when one of these is true:
- Tickets need data from your systems, like an order, subscription, league match or game account.
- Routing depends on rules a dashboard can't express, such as a team's division or a customer's plan.
- Transcripts and ticket data must live in storage you control, for disputes, refunds or compliance.
- You'd rather run one bot for tickets and your other jobs than pay for three.
What a custom Discord ticket bot costs
A ticket bot usually lands in the Starter tier: from $590, delivered in 1 to 2 weeks. That covers one ticket system: panels and ticket types, forms, private channels or threads, claiming, close with HTML transcripts to a log channel and DMs, and up to about five slash commands. You get the source code, setup docs, 30 days of bug fixes and the first month of Care.
It moves to Community, from $1,490, when it needs a database-backed audit log and SLA statistics, one outside integration such as Google Sheets, a helpdesk or your own API, or when tickets are one of up to three systems in the same bot. A web dashboard where staff search transcripts and see statistics is Platform work, from $3,500. Full tier details are on the pricing page.
For comparison, Upwork's hiring guide lists moderation, onboarding or ticketing bots at $1,000 to $4,000 per project (September 2026).
What moves a quote:
- Up: many ticket types with different routing, forms that validate against your data, migrating old tickets, multiple servers, and a staff dashboard.
- Down: one or two ticket types, transcripts to a log channel only, and hosting it yourself.
Hosting is separate. Care is $49 a month and covers hosting, monitoring, library updates and one small change a month. If you're unsure what you need, the Bot Blueprint ($249) gets you a written spec and a fixed price, credited in full if you order the build within 30 days.
How the build works
- Brief. You send a short brief: ticket types, who handles each, where transcripts should go. I reply within one business day with questions or a price range, then a fixed quote.
- Spec. We agree on each ticket type's form, category, staff role and SLA time, what gets logged, and how long transcripts are kept. That list becomes the acceptance checklist.
- Build and test. I build in a private test server and invite you and a couple of staff to open, claim and close real test tickets.
- Launch. The bot goes live on your own Discord application, and I hand over the repository and setup docs.
- Aftercare. Thirty days of bug fixes are included, and Care keeps it hosted and updated after that.
Builds are paid 50% up front to book the slot and 50% when you accept the delivery against the checklist. I take a limited number of builds each month, so the brief also tells you when I can start.
Technical notes
- Intents. The bot connects with the Guilds intent. Transcripts need the privileged Message Content intent, switched on in the Developer Portal; Discord reviews access once more than 10,000 users can see the app. Server Members is only needed for features like closing a member's tickets when they leave.
- Permissions. Manage Channels, View Channels, Send Messages, Embed Links, Attach Files and Read Message History. Adding people to an open ticket edits its permission overwrites, which also needs Manage Roles. Thread mode swaps Manage Channels for Create Private Threads, Send Messages in Threads and Manage Threads. The bot never needs Administrator. You can check the numbers with the permissions calculator.
- Data. Transcripts and the staff log go to channels and storage you control; Community builds also keep ticket records and staff actions in a database you own. Nothing is sent to a third-party ticket service unless you ask for a helpdesk integration.
- Reliability. Panel buttons are handled by a global listener rather than a timed collector, so a panel keeps working after restarts and redeploys.