Help
Everything's configurable two ways - Discord slash commands, or this dashboard - reading and writing the same data. This page walks through the dashboard; the slash command reference is at the bottom.
Quick start
- Log in at the top of the dashboard, then add the bot to your server if it isn't already there.
- Open the server → Panels → create a panel, then add at least one category to it.
- On the panel page, pick a channel and hit Post new message, or paste a Discord Copy Message Link and hit Update message to edit an existing bot message in place.
- Members click through to open a ticket. You're done - everything else is optional tuning.
Your servers
The dashboard only lists servers where you have the Manage Server permission, split into servers that already have the bot (click Manage) and ones that don't yet (click Add to Discord).

Server overview
A server's landing page leads with CSAT: the average score, how many tickets were rated, the rating distribution, and a ticket list you can narrow by UTC date, assignee (who claimed it), and rated-only. Below that is today's snapshot (since midnight UTC) and shortcuts into the other sections. The left sidebar - server icon, name, member count, then the section list - stays the same across every page for that server.

Panels & categories
A panel is the embed + button/select menu you post in a channel. Each panel has one or more categories - a category is one type of ticket (e.g. "Billing", "Bug Report"), each with its own settings:
- Who can open tickets here - restrict to specific roles, or leave empty for everyone.
- Support roles - who can claim/close/manage tickets in this category (independent from who can open one).
- The Discord category ticket channels are created under, a per-user open-ticket limit, and the welcome / claim / close message embeds (including optional Discord message content above each embed). The ticket-opened message can include extra embeds - Discord's own 10-embed limit. Each category has a channel prefix and a next ticket number: opened channels are named 🔸prefix-number, and claimed or closed-after-claim channels are named 🔹prefix-number-nickname, so counting can continue from another bot.
- Enabled for members - if off, a Buttons panel shows a greyed-out Discord button; a Dropdown panel hides the category from the menu.
- Duplicate - clones a category's settings into a new one so you don't re-enter the same roles, form, and embeds.
- Request opener to confirm close - when enabled, Close is replaced by Request Close, which posts a confirm message for the opener.
/ticket closestill force-closes.
Choose Buttons or Dropdown on the panel editor - it is not inferred from how many categories you have. Each category has its own name, emoji (unicode or <:name:id>), and button color (Gray / Blue / Green / Red). Buttons sit up to 5 per row. Dropdowns list enabled categories in order, with optional descriptions. After you save, use Update message with a Discord Copy Message Link to edit the existing panel message in place, or Post new message to send a fresh one. From the panels list you can clone a panel (you'll be asked for the new name) or delete one. The panel editor can rename the panel as well.

Ticket forms
Any category can optionally ask up to 5 questions in a popup before the ticket channel is created - Discord's own modal limit. Leave every label blank and the category behaves as before: the channel opens immediately with no form. Answers get posted as fields on the ticket's welcome message.

Browsing tickets
The Tickets section lists every ticket ever opened in the server - category, opener, status, who claimed it, who closed it (and their close reason, if they gave one), timestamps, and CSAT rating - filterable by status and category. Useful for checking what staff are actually doing, not just the aggregate numbers on Analytics. Click a ticket's number to jump to its channel in Discord (if it hasn't been deleted).
Automation
Three independent, opt-in behaviors, all off by default:
- Auto-close inactive tickets - a quiet ticket gets a warning after N hours, then closes automatically M hours after that if still quiet. Any reply cancels the warning.
- Auto-delete closed tickets - after close (and the CSAT prompt), wait N minutes then save a transcript and delete the channel, whether or not the opener rated. Reopening cancels the timer; staff can still Delete immediately.
- Alert on slow first response - pings a channel (and optionally a role) if a ticket goes too long without a staff reply.
The transcript log channel (where HTML transcripts land when a ticket is deleted) lives on this page too.

Custom commands
Save reusable reply snippets, optionally grouped into folders, and post one into a ticket any time with /say in Discord (autocomplete searches by name or folder). Useful for answers your team gives often - requires the Manage Messages permission by default.

Analytics
Ticket volume over time, average claim/first-response/resolution time, CSAT (the opener is prompted to rate 1–5 right after a ticket closes; the server overview shows the score, response rate, and rating breakdown), tickets broken down by panel and by category, and a staff leaderboard of who's claimed/closed the most. Discord user ids listed in STATS_ADMIN_IDS also get an All servers page in the header: the same CSAT view across every server the bot is in, with a date range and assignee filter. That page is read-only and does not open a server's settings.

History
Every config change made from this dashboard - panels, categories, automation settings, custom commands - is logged here with who did it and when. Search by admin name or action text.

The ticket lifecycle
However a ticket gets opened (button, select menu, with or without a form), what happens next is the same:
- A private channel is created, visible to the opener, that category's support roles, and admins.
- Staff use the Claim / Close buttons on the ticket (or
/ticket claim|close|add|remove). Claim posts a customizable embed in the channel. - On close, the channel locks and the opener is asked to rate the support 1–5 - that's what feeds CSAT in Analytics. If the category has Request opener to confirm close on, Close is replaced by Request Close; the opener confirms with no reason. Staff can still force-close with
/ticket close. - Reopen or Delete from there - deleting saves an HTML transcript to the log channel (if one's set) before removing the channel. If auto-delete after close is enabled, the channel is transcribed and removed automatically after the configured delay.
Slash command reference
Everything below has a dashboard equivalent except /say (which is Discord-only by nature - it posts into whatever channel you run it in).
| Command | What it does |
|---|---|
| /panel create|delete|list|send|edit | Create/manage panels and post them to a channel |
| /panel category add|remove|role-add|role-remove|open-role-add|open-role-remove | Manage a panel's categories and their permissions |
| /ticket claim|unclaim|close|add|remove | Manage the ticket in the current channel |
| /config log-channel|view | Set the transcript log channel / view current config |
| /say <command> | Post a saved custom command into the current channel |