HC Tickets

Everything in HC Tickets

A complete ticketing system, configured per server, with no server-specific behaviour baked into the product.

Every feature below is available to every server at no cost. There is no premium tier and nothing on this page is gated.

Panels

A panel is the message your members click. You control the embed — title, description, colour, thumbnail, image, footer, author, and up to 25 fields — plus the buttons or select menu attached to it.

  • Unlimited panels per server, on every server
  • Buttons or a select menu, with labels, emoji and styles
  • Each button carries its own ticket configuration
  • Live Discord-accurate preview before you deploy
  • Deployed messages stay linked to their panel, so edits redeploy cleanly

Forms

Attach a modal to any button and collect what you need before a channel is even created. Answers are stored against the ticket and exposed to every template as variables.

  • Short and paragraph fields
  • Required or optional, with min and max lengths
  • Named variables like {form.order_id}
  • Reusable across panels
  • Responses preserved in the transcript

Claiming

Claiming is recorded as history rather than a single overwritten column, so a handoff does not erase who worked the ticket first.

  • Claim and unclaim, with full history
  • Optional channel permission changes on claim
  • Staff can only release their own claim; admins can override
  • Claim counts feed the staff analytics

Permissions

Access is decided server-side on every action. Hiding a button is presentation, never protection.

  • Support, admin, dashboard and blacklist roles
  • Per-panel support roles that override the server default
  • Administrator bypass you can switch off
  • Row-level security enforced in the database itself

Logging

Every meaningful action is written to a structured event table. Discord log messages are a projection of that data, not the record itself.

  • Created, closed, reopened, deleted, claimed, unclaimed
  • Users added and removed, renames, transcript generation
  • Configuration changes
  • Queryable history that outlives a purged channel

Transcripts

Each transcript is captured as canonical JSON and rendered to HTML from it. If the design changes, the whole archive can be regenerated from the source documents.

  • Messages, attachments, embeds, stickers, reactions, replies
  • Edited and deleted state preserved
  • Stored in a private bucket, served through short-lived signed URLs
  • Versioned schema, so old transcripts stay readable

Analytics

Metrics computed in Postgres over recorded events. Nothing is estimated, and a metric with no data says so instead of showing a zero.

  • Tickets created, closed and currently open
  • Average resolution time
  • Average first response time
  • Volume by panel and by day
  • Staff claim leaderboard