> ## Documentation Index
> Fetch the complete documentation index at: https://heimdall.gg/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Tickets

> Structured support ticket system with categories, staff assignment, and member-facing controls.

The ticket system creates private Discord threads for individual support requests. Members open a ticket, staff respond inside the thread, and the ticket is closed when the issue is resolved. Configuration in the dashboard defines which categories of support are available, who can open tickets, and how the system behaves automatically.

![Tickets Dashboard](https://mintcdn.com/bifrost-77/0kYEuVbQILcbqGYE/images/Tickets_Dashboard.png?fit=max\&auto=format\&n=0kYEuVbQILcbqGYE\&q=85\&s=9ec43fcb86ca1d95f97a39cc8aed26a5)

## How tickets work for members

A member runs `/ticket open` or clicks an opener button you have placed in a channel. They select a category, optionally fill in an opening form, and a private thread is created. The thread is visible only to the member and staff roles configured for that category. The member and staff exchange messages inside the thread as a normal conversation.

When the issue is resolved, either the member or a staff member closes the ticket. Closed tickets can be reviewed in the dashboard under [**Tickets > Tickets**](https://bot.bifrost.gg/go/tickets/list).

## Setting up

### Creating categories

Navigate to [**Tickets > Categories**](https://bot.bifrost.gg/go/tickets/categories) in the dashboard and click **New Category**. Each category defines:

| Setting | Description |
| - | - |
| **Name** | Displayed when a member selects a ticket type |
| **Description** | Brief explanation of what this category is for |
| **Channel** | The parent channel where ticket threads are created |
| **Staff roles** | Which roles can see and respond to tickets in this category |
| **Opening form** | Optional questions the member fills in when opening the ticket |
| **Opening message** | The first message posted by the bot inside the ticket thread |
| **Auto-close** | Automatically close inactive tickets after a set period |

### Inactivity reminders

Each category can warn about, and then close, tickets that go quiet. Under **Inactivity Reminder** in the category editor you set how long a ticket can sit before the warning is posted, how long after the warning it closes, and who the warning pings:

| Ping behavior | Who is pinged |
| - | - |
| **Ping ticket opener** | The member who opened the ticket |
| **Ping all participants** | The opener and the staff member who claimed it |
| **Smart (direction-aware)** | Whoever owes the next reply: the opener if staff spoke last, staff if the opener spoke last |
| **No ping** | Nobody |

With **Smart**, choose whether a ticket waiting on staff pings the category's staff roles or only the staff member who claimed it. An unclaimed ticket always pings the staff roles.

#### Asking the opener when they look done

A support conversation often ends with staff answering and the member replying "thanks". Smart would then treat the ticket as waiting on staff. To avoid pinging staff about a solved ticket, Smart can recognise a sign-off and ask the member instead: the warning becomes "Is your issue sorted?" with **Yes, close it** and **I still need help** buttons. "I still need help" pings staff straight away. If nobody answers, the ticket closes on the normal schedule.

Two settings decide when a reply counts as a sign-off:

| Setting | How it decides | Default |
| - | - | - |
| **Ask the opener when they look done (AI)** | [Odin AI](https://heimdall.gg/docs/ai/odin.md) reads the end of the conversation. Only runs on servers with AI set up, and sends the recent ticket messages to the AI provider | On |
| **Ask the opener when they look done (length)** | Everything the member said since staff last replied is under the character limit, with no question mark and no attachment. Also used when the AI check can't run | Off |

The question's wording can be changed under [**Tickets > Configuration**](https://bot.bifrost.gg/go/tickets/config) as the **Resolution Check** message.

### Configuring openers

Openers are the buttons or select menus members use to create tickets. Navigate to [**Tickets > Openers**](https://bot.bifrost.gg/go/tickets/openers) and click **New Opener**. After configuring the opener, click **Post** to have the bot send the opener panel to a channel of your choice. You can post the same opener in several channels, and refresh or delete each copy from the **Posted in** list in the post dialog. See [Panels posted in more than one channel](https://heimdall.gg/docs/dashboard.md#panels-posted-in-more-than-one-channel).

An opener can present a single "Open Ticket" button or a select menu listing multiple categories, depending on how you configure it.

## Slash commands

The `/ticket` command provides the following subcommands:

| Subcommand | Description |
| - | - |
| `/ticket open [category]` | Open a new ticket, optionally pre-selecting a category |
| `/ticket close [reason]` | Close the current ticket thread |
| `/ticket claim` | Assign the ticket to yourself as the handling staff member |
| `/ticket unclaim` | Release your claim on the ticket |
| `/ticket assign <user>` | Assign the ticket to another staff member |
| `/ticket add <user>` | Add a member to the private thread |
| `/ticket remove <user>` | Remove a member from the private thread |
| `/ticket rename <name>` | Rename the ticket thread |
| `/ticket priority <level>` | Set the ticket's priority level |
| `/ticket note <content>` | Add a private staff note to the ticket |
| `/ticket transcript` | Generate a text transcript of the conversation |

The `/ticket-admin` command provides category management directly from Discord, covering the same operations as [**Tickets > Categories**](https://bot.bifrost.gg/go/tickets/categories).

## AI-assisted responses

If the AI plugin is enabled and connected to your ticket categories, Heimdall can suggest draft responses based on your knowledgebase and past resolutions. See [Odin AI](https://heimdall.gg/docs/ai/odin.md) for setup.

## Reviews

Members can optionally be prompted to leave a satisfaction review when a ticket is closed. The review prompt asks the member to rate their experience and optionally leave a comment. Scores and comments are aggregated in the analytics dashboard under [**Tickets > Reviews**](https://bot.bifrost.gg/go/tickets/reviews) and can be filtered by category and date range.

Enable reviews in [**Tickets > Configuration**](https://bot.bifrost.gg/go/tickets/config). Whether closing a ticket sends the review prompt is set per category, with **Send Review Prompt on Close** in [**Tickets > Categories**](https://bot.bifrost.gg/go/tickets/categories).

## Auto-Responses

Ticket auto-responses are pre-written replies that fire automatically when a ticket is opened if the opening message matches a trigger. Navigate to [**Tickets > Auto-Responses**](https://bot.bifrost.gg/go/tickets/auto-responses) to configure them.

Each auto-response has:

| Setting | Description |
| - | - |
| **Name** | Internal label |
| **Trigger** | A keyword or phrase that must appear in the opening message |
| **Response** | The message posted automatically inside the ticket thread |
| **Category scope** | Optionally restrict the auto-response to specific ticket categories |

Auto-responses post as the bot inside the thread. They do not close the ticket - staff still handle the conversation.

## Quotas

Quotas limit how many open tickets an individual staff member can be assigned to at once. Navigate to [**Tickets > Quotas**](https://bot.bifrost.gg/go/tickets/quotas) to configure per-role or per-user limits.

When a staff member reaches their quota:

* Auto-assignment skips them when distributing new tickets
* Manual assignment is still possible if a manager overrides the quota

Quota usage is visible in [**Tickets > Analytics**](https://bot.bifrost.gg/go/tickets/analytics) alongside response time and closure metrics.

## Required permissions

| Action | Permission key |
| - | - |
| Opening a ticket | No permission required |
| Closing any ticket | `tickets.operations.manage_tickets` |
| Claiming tickets | `tickets.operations.claim_tickets` |
| Viewing all tickets | `tickets.operations.view_tickets` |
| Viewing analytics | `tickets.analytics.view_analytics` |
| Managing configuration | `tickets.config.manage_config` |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.