Tickets overview
A full support-queue system: members open tickets by clicking a button; staff claim, assign, respond, and close them; transcripts are generated automatically; analytics show how the queue is performing. Optionally, an AI co-worker handles routine questions before a human ever sees the ticket.
The three pieces
Three concepts work together:
- Panels — message templates that you post in a channel. Each panel has buttons that open ticket types.
- Types — ticket categories. Each type defines its own form fields, staff roles, channel mode, welcome message, transcript settings.
- Tickets — actual support conversations. Open, claimed, assigned, closed, optionally archived.
Where it lives
Dashboard: Tickets. Six sub-pages:
- Panels — design + deploy the buttons.
- Types — define what opening a ticket means (forms, staff, channels).
- Tickets — live list of open / claimed / closed tickets.
- Resources — canned responses + tags for staff productivity.
- Analytics — open rate, resolution time, SLA breach rate, top categories.
- Settings — global module config (defaults, transcript retention, etc.).
Channel modes
A ticket can live as either:
- Channel — a new private text channel created per ticket. Most common.
- Thread — a private thread inside a parent channel. Cheaper on Discord's channel quota; good for high-volume support.
Slash commands (in-ticket)
| Command | What it does |
|---|---|
/ptickets info | Show ticket metadata (status, claimer, opener, message count, etc.). |
/ptickets close | Close the current ticket. |
/ptickets reopen | Reopen a closed ticket. |
/ptickets claim / unclaim | Take / release ownership. |
/ptickets assign | Assign to a specific staff member. |
/ptickets priority | Set low / normal / high / urgent. |
/ptickets pin | Pin so auto-close doesn't touch it. |
/ptickets adduser | Add a non-staff user to the ticket. |
/ptickets note | Internal staff-only note. |
/ptickets move | Move to a different type (re-categorise). Re-applies the destination type's welcome-ping configuration. |
/ptickets rename | Pop a modal to rename the ticket channel + set a custom "subject" so the dashboard and search use your wording. |
/ptickets can <name> | Post a canned reply by name. Autocompletes from the per-guild list. |
/ptickets list | List open tickets in this server. |
/ptickets stats | Quick analytics. |
/ptickets transcript | Generate a transcript right now. |
Inside a ticket channel, staff can also fire a canned reply via ?<name> shortcode (e.g. ?welcome). Phantom deletes the trigger message and posts the rendered reply.
Permissions
tickets.view— see the dashboard pages + ticket list.tickets.edit— manage panels, types, settings; configure auto-assist.
Per-ticket-type staff_role_ids ALSO grant staff abilities — a member with one of the type's staff roles can claim/assign/close/etc. that type's tickets regardless of dashboard permissions. This is the "different staff for different ticket kinds" model.
(Discord's Manage Channels + Administrator are also accepted as legacy fallback paths.)
Limits
- 50 panels per guild
- 50 types per guild
- 5 form fields per type
- 25 buttons per panel
- 90-day transcript retention (configurable up)
Defaults
- Auto-close: idle for 3 days → close. Warning DM sent 1 day before.
- Priority: normal.
- Transcript: HTML, hosted by Phantom and accessible via a private link for staff.
Where to go next
- Set up your first panel → Panels & types
- Train your staff workflow → Staff workflow
- Add the AI co-worker → Auto-Assist
