Skip to content

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.

Phantom ticket module settings for a Discord server, including transcripts and loggingTickets → Settings.

Phantom ticket analytics for Discord showing volume, first response times and SLA breachesTickets → Analytics, the health of your support desk over time.

The three pieces

Three concepts work together:

  1. Panels — message templates that you post in a channel. Each panel has buttons that open ticket types.
  2. Types — ticket categories. Each type defines its own form fields, staff roles, channel mode, welcome message, transcript settings.
  3. 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)

CommandWhat it does
/ptickets infoShow ticket metadata (status, claimer, opener, message count, etc.).
/ptickets closeClose the current ticket.
/ptickets reopenReopen a closed ticket.
/ptickets claim / unclaimTake / release ownership.
/ptickets assignAssign to a specific staff member.
/ptickets prioritySet low / normal / high / urgent.
/ptickets pinPin so auto-close doesn't touch it.
/ptickets adduserAdd a non-staff user to the ticket.
/ptickets removeuserRemove a user previously added to the ticket.
/ptickets noteInternal staff-only note.
/ptickets moveMove to a different type (re-categorise). Re-applies the destination type's welcome-ping configuration.
/ptickets renamePop 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 listList open tickets in this server.
/ptickets statsQuick analytics.
/ptickets transcriptGenerate 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.

Welcome message variables

The welcome message posted when a ticket opens (Types → Welcome message) supports these tokens:

TokenBecomes
{server}Your server name.
{user}A mention of whoever opened the ticket.
{ticket}The ticket number, e.g. #12.
{date}The date the ticket opened, e.g. 23 August 2026.
{time}The time the ticket opened, e.g. 20:21.

{date} and {time} are written in your server's timezone (Settings → Timezone), falling back to UTC if you haven't set one.

Anything else in {braces} is left exactly as typed, so a misspelled token is visible in the posted message rather than silently blank.

Panel variables

The panel embed (Panels → Embed) has its own set, resolved when you publish:

TokenBecomes
{server}Your server name.
{membercount}Member count, e.g. 12,480.
{date}The date you published the panel.
{time}The time you published the panel.

A panel is one stored message rather than a per-viewer render, so these are a snapshot of your last publish — re-publish the panel to refresh them.

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

Free plan: 1 panel and 2 ticket types per server. Phantom Pro lifts both. If a server drops to Free with more than that already set up, nothing is deleted — you simply can't add another until you're back on Pro.

System limits, on every plan:

  • 50 panels per guild
  • 50 types per guild
  • 5 form fields per type
  • 25 buttons per panel
  • 90-day transcript retention (configurable up)
  • 100 tags per guild, 10 per ticket
  • 100 canned responses per guild
  • 5 reopens per ticket

Defaults

  • Auto-close: 3 days idle → warning, another day with no reply → close. Claimed tickets and high-priority tickets are excluded by default.
  • Priority: normal.
  • Transcript: HTML, hosted by Phantom and accessible via a private link for staff.

Where to go next

Phantom is a product of Hydra Labs. The bot is run as a managed service; you do not need to host it yourself.