**Management -> Tickets** in your admin dashboard.

Everything your traders send you lands here. One conversation per ticket, with
the full history, images, internal notes for your team, and whatever the AI
already said before a human took over.

Two permissions govern it: `view_tickets` to read the inbox, `manage_tickets` to
reply, assign, tag, reprioritise and close.

## How a ticket arrives

A trader opens a ticket from the Live Support button in their own dashboard. What
happens next depends on the support mode set under
[Configuration -> Support](/docs/platform/admin/support):

| Mode                          | What happens                                                                         |
| ----------------------------- | ------------------------------------------------------------------------------------ |
| AI first (with human handoff) | The AI answers immediately and hands over to your team when it cannot help           |
| Human only                    | The ticket goes straight to your team, no AI involved                                |
| Disabled                      | Traders cannot open tickets. Point them somewhere else with the external contact URL |

In AI first mode the ticket opens with the AI switched on for that conversation.
The AI answers from your own FAQs and settings, and hands over when:

- the trader explicitly asks for a human,
- it cannot answer the question with confidence,
- the trader is frustrated or angry,
- the problem is account specific, such as a payout, a suspected bug or a
  dispute about your rules,
- or the AI itself fails.

A handover sets the ticket to **Awaiting admin**, switches the AI off, notifies
your team, and drops a note in the thread saying why it handed over. You pick up
the conversation knowing what the trader already tried.

:::info The AI never overrules a human
Once anyone on your team replies, the AI is switched off for that ticket. It
does not come back on its own, and it does not answer when the trader writes
again. It only returns if someone asks for it with the `/ai` command below.
:::

## Statuses

| Status          | Meaning                                                                                  |
| --------------- | ---------------------------------------------------------------------------------------- |
| Open            | New, or being handled by the AI                                                          |
| Awaiting admin  | The ball is with your team. Either the trader replied, or the AI handed over             |
| Awaiting trader | Your team replied last and is waiting on an answer                                       |
| Resolved        | Your team answered the question and said so                                              |
| Closed          | Ended without being resolved: the trader closed it, your team closed it, or it timed out |

The first three follow what actually happened in the conversation rather than
anything you set by hand, which is what makes the **Awaiting admin** filter
trustworthy as a work queue.

The last two are the two ways a ticket ends, and the difference is the point.
**Resolve** on a ticket says the trader got their answer; **Close** ends it
without that claim. Both are final and neither reopens, so a trader with a new
question opens a new ticket. Both live under the Closed filter.

Resolve from the ticket itself or from the right-click menu in the inbox. The
trader sees a line in the thread saying support marked it resolved, so the
conversation does not just stop on them.

:::tip Resolve is what you want to be able to count
Closed says a conversation ended. Resolved says it ended well. Keep the
distinction honest and the numbers mean something later.
:::

## Tickets that time out

A ticket waiting on a trader who never comes back would sit in the Open list
forever. So it does not:

1. After **five days** with no reply, the trader gets one email saying the
   ticket is waiting on them, and a line goes into the thread saying the same.
2. **Two days** later, if they still have not written, the ticket closes itself
   with a note in the thread. Nothing is deleted; it moves to the Closed filter
   with its full history.

Any message from either side clears the countdown, so answering, even on the
last day, puts the ticket back to normal. A ticket is never closed without the
warning having gone out first.

The email is **Ticket reminder** on the Email templates screen, editable and
switchable like every other transactional mail. Switching it off does not switch
off the timeout: the ticket still closes, the trader just is not told in
advance. Replying to that email answers the ticket, same as the reply
notification.

## Priorities

Low, Normal, High or Urgent, set by your team and changeable at any time. The
trader does not choose it and does not see it, so it stays useful as an internal
signal rather than turning into a race.

## Working the inbox

Five filters across the top:

- **Open**, everything still live. The default.
- **Mine**, tickets assigned to you or to a team you are a member of.
- **Unassigned**, live tickets nobody has picked up. This is the one to keep at
  zero.
- **Closed**, the archive.
- **All**.

On top of those you can search on subject, trader name or email address, and
narrow by priority and by tag. Tickets are ordered by their last message, newest
first, so the inbox reads like an inbox.

The unread counter on a ticket counts messages from the trader and from the AI
that nobody on your team has opened yet. Your own replies never make something
look unread.

Right-clicking a row opens it, or closes it straight from the list without
having to open the conversation first. Closing from there needs
`manage_tickets`, and the option is not offered on a ticket that is already
closed.

## Assignment

A ticket can go to an individual admin, to a support team, or both. Teams are
groups of admins you create from this screen, so a ticket can land with "Payouts"
rather than with a specific person who might be on holiday. A team name has to be
unique within your firm, and only your own admins can be members.

**The first reply assigns the ticket to you** if nobody had it yet. That is
deliberate: it means the common case needs no extra click, and two people are
less likely to answer the same trader twice.

## Who gets notified

Every time a ticket moves to **Awaiting admin**, whether a trader replied, the
AI handed over or it failed, a notification goes out. Who receives it follows
the assignment:

| The ticket is                            | Notified                        |
| ---------------------------------------- | ------------------------------- |
| Assigned to an admin                     | That admin only                 |
| Assigned to a team, nobody in particular | Every member of that team       |
| Unassigned                               | Every admin with `view_tickets` |

An owner outranks their team, so a ticket that belongs to one person does not
ring for the rest of it. Each step falls back to the next when it would reach
nobody: assigned to someone who has since been deactivated or lost the
permission, and it still reaches their team, and otherwise everyone. Silence is
the one outcome worse than noise.

Handing a waiting ticket to someone else notifies the new owner straight away.
Beyond that the same ticket only notifies once every five minutes, so a burst of
events cannot turn into a burst of bells.

## Tags

Tags are yours to define, each with its own colour, and a ticket can carry
several. You manage them from this screen, next to the team manager. They are the
fastest way to find out what your traders actually ask about, because you can
filter the inbox on one and count.

Editing the tag list needs `manage_tickets`. Editing the team list needs
`manage_support_settings`, because teams are also used by the settings on the
[Support](/docs/platform/admin/support) screen.

## Commands

Typing `/` in the reply box opens a short menu of commands. Both sides of a
ticket have them: your team in this screen, the trader in their support popup.
Pick one with the arrow keys and Enter, or type it out and send.

| Command                           | Who        | What it does                                                                  |
| --------------------------------- | ---------- | ----------------------------------------------------------------------------- |
| `/ai <instruction>` (or `/agent`) | Your team  | The assistant writes the next reply to the trader, following your instruction |
| `/close` (or `/exit`)             | Both       | Closes the ticket, after the same confirmation as the Close button            |
| `/ai` (or `/agent`)               | The trader | Switches the assistant back on for their ticket                               |

**`/ai` for your team needs an instruction.** `/ai send our pricing overview`
posts an answer to the trader written by the assistant. Bare `/ai` does nothing
except tell you to add one. What you typed stays behind as an internal note, so
your team can see what was asked for, while the trader only ever sees the
answer. The ticket stays yours: your name stays on it, the assistant does not
take the conversation over, and the status moves to Awaiting trader like any
other reply.

**`/ai` for the trader takes no instruction.** It switches the assistant back on
for that ticket and drops a line in the thread telling them to go ahead and ask.
Their next message goes to the assistant instead of to your team. It is only
offered when your support mode allows AI at all, and never while the assistant
is already answering.

### Blocking the assistant

**Block AI** in the ticket header takes that command away from the trader. Use
it when someone keeps flipping the conversation back to the assistant, or when a
case is too delicate for it. Blocking a ticket the assistant is still answering
hands it to your team on the spot and tells the trader so.

Your own `/ai` keeps working on a blocked ticket. The block is about who may
call the assistant in, not about whether your team may use it. Unblock from the
same button.

## Internal notes

Any reply can be marked internal. An internal note is visible to your team only.
It does not change the ticket status, does not touch the AI, and never reaches
the trader.

Use it to hand context to a colleague inside the conversation instead of next to
it in a chat app where it gets lost.

:::warning Internal is a checkbox, not a separate screen
The note sits in the same thread as the replies the trader can read. Check
before you send.
:::

## Images

Both sides can attach an image to a message. Screenshots of a chart, a rejected
order or a payment page are usually faster than a paragraph.

Images are served through the application, not from a public URL. Someone who
gets hold of the link but is not on your team or not the trader in question
cannot open it.

## Real time

New messages, status changes and assignments arrive over WebSockets in both
directions. A reply from a trader appears in an open ticket without refreshing,
and yours appears on their side the same way. An AI answer streams in word by
word while it is being written. There is nothing to poll and nothing to
configure.

You also see when a trader is writing: a line under the last message while they
type, which disappears when they send or stop. It runs entirely over the
websocket, so it never touches the server or the ticket history. It works one
way only. Traders do not see your team typing, which keeps the pressure off an
agent who opens a ticket, reads it and needs a minute to work out the answer.

## Things worth knowing

**Closing is not deleting.** A closed ticket keeps its full history and stays
searchable under the Closed filter.

**A trader can close their own ticket.** If they solved it themselves, they can
end the conversation without waiting for you.

**A finished ticket stays finished.** Resolved and closed both end the
conversation for good. Neither side can reopen one, so a trader coming back with
something new opens a new ticket and your team reads a clean question instead of
a thread that changed subject three times.

**If the AI fails, the trader is never left waiting.** When the AI cannot
produce a reply, whether from a provider error or a timeout, the ticket escalates
to Awaiting admin and your team is notified. A trader never stares at silence
because something broke on our side.

**Tickets to us are a different inbox.** Questions from your own admins to
Propper live under a separate platform ticket screen, not here. This inbox is
only your traders.

Related: [Features](/docs/platform/features) for what else the platform does.