Working with Tickets

Creating, managing, and resolving support tickets.

Creating a ticket

Click New ticket from the dashboard or ticket list. Staff and admins can create tickets on behalf of any user. Users create tickets for themselves.

Required fields

Optional fields

CTI cascade behavior

The three dropdowns are chained:

Guest ticket submission

When guest submission is enabled, the public submission form at /submit asks for an email address instead of requiring login. The subject, description, category, and email are required. Type, Item, and priority are shown if applicable. See Guest submission for how access links work.

Ticket lifecycle

A ticket moves through statuses over the course of its life. The default lifecycle is:

New → In Progress → Pending → Resolved → [reopen window] → Closed
                                  ↑              |
                                  └── Reopened ──┘

Statuses are customizable — admins can add intermediate statuses. The system statuses (New, Resolved, Closed) have fixed behavior regardless of their display name.

Status transitions

TransitionWho can trigger itNotes
Any status → any statusStaff, AdminNo restrictions except Closed (see below).
Any → ResolvedStaff, AdminOptionally captures resolution notes. Starts the reopen window timer.
Resolved → ClosedSystem (automatic)Triggered when the reopen window expires. A background job runs every hour to check.
Resolved → Reopened (via reply)UserOnly within the reopen window. Automatically transitions the ticket back to New.
Closed → anyStaff, Admin onlyUsers cannot interact with Closed tickets.
Resolved or Closed → Reopened (manual)Staff, AdminBypasses the reopen window restriction.

Resolution notes

When marking a ticket Resolved, staff are prompted to optionally enter resolution notes — a brief summary of what was done and how the issue was fixed. These notes are visible to the submitter and are preserved when the ticket is reopened. They're useful for building a history of known fixes.

The reopen window

After a ticket is Resolved, the submitter has a configurable number of days to reopen it by replying. The default is 7 days. When a user adds a reply to a Resolved ticket within the window:

  1. The reply is saved.
  2. The ticket status is automatically changed back to New.
  3. The ticket is flagged in the staff queue as reopened.
  4. The original assignee (if any) receives an email notification.

After the window expires, the ticket transitions to Closed automatically. Users can still view Closed tickets but cannot add replies. Staff can reopen Closed tickets manually at any time.

Replies & internal notes

Public replies

Public replies are the standard response mechanism. They are visible to:

Email notifications are sent to all participants when a public reply is added.

Internal notes

Staff and admins can add internal notes to any ticket. Internal notes are:

Use internal notes for:

Markdown support

Both replies and notes support a subset of Markdown:

HTML is not supported and is escaped before rendering.

Editing and deleting replies

Users can edit or delete their own replies within 15 minutes of posting. Staff and admins can edit any reply at any time. Deletions are soft — a "deleted reply" placeholder is shown to staff. The original content is preserved in the audit log.

Any ticket can be linked to any other ticket, regardless of status. Links are always bidirectional — adding a link on ticket A automatically creates the reverse link on ticket B.

Link types

TypeMeaningWhen to use
related_to These tickets are related in some way. They affect similar systems, came from the same user, or are otherwise connected but neither caused the other.
parent_of / child_of One ticket is a sub-issue of another. A "batch laptop deployment" parent ticket with individual "setup laptop for [user]" children. Or a widespread network outage parent with individual "I can't access the VPN" children.
caused_by This ticket was caused by another ticket's issue. A failed Windows update ticket caused several "Outlook won't open" tickets.
duplicate_of This ticket is a duplicate of another. A user submitted the same request twice. Mark the newer one as a duplicate of the original.

Adding a link

From the ticket detail view, click Add link in the Linked tickets section. Search for the target ticket by ID or by subject keywords. Select the link type and confirm.

Removing a link

Click the × next to any linked ticket. This removes the link in both directions. Staff and admin only — users cannot modify links.

Bulk operations on linked tickets

From a parent ticket, staff can resolve all child tickets at once using Resolve all children. Each child receives the same resolution notes as the parent. This is useful for closing out many individual duplicate or child tickets after resolving the root cause.

Assignment

A ticket can be assigned to:

Who can assign

Staff and admins can assign tickets to any staff member or group, regardless of scope. This is intentional — cross-team escalation should not be blocked by routing rules. A ticket can be assigned to staff outside their normal scope, and it will appear in the assignee's queue.

Self-assignment

Staff can click Assign to me to take ownership of an unassigned ticket immediately.

Reassignment

Reassigning a ticket (changing from one assignee to another) generates an email notification to the new assignee. The old assignee does not receive a notification unless they are also a participant (i.e. they added a reply).

Assignment and scope

Scope controls what tickets a staff member sees in their default queue. Assignment overrides this for the assignee — if you are assigned a ticket outside your scope, it appears in your queue. You can always find any ticket by its ID using the search bar, regardless of scope or assignment.

Attachments

Files can be attached to a ticket at creation or in any reply. All attachments are served through the API and require authentication to download.

Limits

LimitDefaultConfigurable?
Maximum file size25 MB per fileYes — Admin → Settings → Max attachment size
Files per upload10 filesNo
Total per ticketUnlimitedNo

Allowed file types

The following types are blocked regardless of extension: .exe, .bat, .cmd, .sh, .ps1, .vbs, .dll, .so, .dylib. All other MIME types are accepted including images, PDFs, Office documents, archives, and text files.

Files are stored with randomized names in ATTACHMENT_DIR to prevent enumeration. The original filename is preserved in the database and displayed in the UI.

Guest access to attachments

Guests with a valid access link can download attachments on their ticket. The download URL includes the same authentication token as the access link — no separate login is required.

Quick search

The search bar at the top of the ticket list searches subject lines. Staff and admins can also enter a ticket ID directly to navigate to it immediately.

Filters

The ticket list can be filtered by:

Sorting

Sort the ticket list by: newest, oldest, last updated, priority (high to low), or SLA deadline (soonest first). The default sort is last updated descending.

Saved views (staff and admin)

Staff can save any combination of filters and sort order as a named view. Saved views appear in the left sidebar under My Views. Admins can publish shared views visible to all staff.

← Admin Guide REST API →