> For the complete documentation index, see [llms.txt](https://acoservice.gitbook.io/acoservice-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://acoservice.gitbook.io/acoservice-documentation/discord-integration/tickets.md).

# Support tickets

A private channel between one member and your staff, opened on demand.

A ticket is a private channel in your Discord server. Only the member who opened it and your support staff can see it. When it is closed, a transcript is filed and the channel goes away.

Tickets are **off by default**. Turn them on in the [feature flags](/acoservice-documentation/setting-up-your-tenant/feature-flags.md) for your tenant.

## Setting it up

Four steps, in this order. The third one is the one people skip.

**1. Post the panel**

```
/support panel
```

Run it in the channel you want the buttons in — usually a read-only `#open-a-ticket`. It posts a message with three buttons: Billing, Technical, Something else.

**2. Choose where transcripts go**

```
/support transcripts #ticket-logs
```

Pick a channel only staff can read. Transcripts contain whatever was said in the ticket.

**3. Say who your staff are**

```
/support staff-role add @Support
```

{% hint style="danger" %}
**Until you do this, only server administrators can see tickets.** Your moderators will not, and Discord gives no sign that anything is wrong — the ticket opens, the member writes into it, and nobody answers.

`/support panel` and every ticket opened without a staff role warn you about this. `/support status` will tell you at any time.
{% endhint %}

You can add more than one role. Members holding **Manage Server** count as staff whether or not they hold a configured role.

**4. Check your work**

```
/support status
```

Shows both feature flags, your staff roles, all three channels, and how many tickets are open. Anything not set, or set to something that no longer exists, is flagged.

## Opening a ticket

Members press a button on the panel, or run:

```
/ticket topic:Billing
```

They get one open ticket **per topic** — an open billing ticket does not stop them reporting a bug.

Staff can open a ticket on someone's behalf:

```
/ticket topic:Billing user:@member
```

The channel says who opened it. The member has to be in the server; a ticket for someone who is not would be invisible to them, so the bot refuses instead of opening a dead channel.

## Closing a ticket

Press **Close ticket** in the channel, or run `/close`. Staff and the member who opened it can both close.

What happens:

1. A transcript of the whole channel is generated.
2. It is posted to your transcript channel with who closed it and when.
3. The channel is deleted ten seconds later.

{% hint style="info" %}
**If the transcript cannot be posted, the channel is not deleted.** With no transcript channel configured — or if the file is too large, or the bot cannot attach files there — the ticket is closed and locked instead, renamed `closed-004`, and the reason is said out loud in the channel.

Deleting the only copy of a support conversation because a setting was missing is not something that should happen quietly.
{% endhint %}

## Numbering

Tickets are numbered per server, starting at 1. Your numbering is yours; it does not move when another ACO opens a ticket.

Numbers are never reused. A gap means a ticket failed to open after its number was reserved.

## What the bot needs

**Manage Channels**, to create the ticket channel and the `🎫｜Tickets` category on first use. Without it, `/ticket` says so rather than failing silently.

If the ticket category hits Discord's 50-channel limit, new tickets are refused with that as the reason. Close some.

## Permissions on an existing ticket

Adding or removing a staff role changes **new** tickets. Channels that already exist keep the permissions they were created with — Discord does not retroactively rewrite channel overwrites, and quietly rewriting a live support channel is not something to do behind someone's back. Adjust an open ticket in its own channel settings if you need to.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://acoservice.gitbook.io/acoservice-documentation/discord-integration/tickets.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
