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

# Manage Tickets

> List, filter, view, reply to, and close tickets in the Xobito customer portal.

Once tickets exist, the day-to-day work happens on the list view and inside individual tickets. This page covers everything that happens after a ticket is created.

## The ticket list

`/{subdomain}/tickets` shows every ticket the current user has access to — for a customer, that's their own tickets. Fresh activity bubbles to the top based on `last_reply_at`.

### What each row shows

| Column            | What's in it                             |
| ----------------- | ---------------------------------------- |
| **Ticket ID**     | Unique ID like `TKT-000042`              |
| **Subject**       | One-line summary entered by the customer |
| **Department**    | Team the ticket was routed to            |
| **Priority**      | Low / Medium / High / Urgent             |
| **Status**        | Open / Answered / Closed                 |
| **Last activity** | Timestamp of the most recent reply       |

## Filter the list

Use the filter controls above the list to narrow down what's shown:

<Tabs>
  <Tab title="By status">
    **Open**, **Answered**, or **Closed**. Most customers keep this on **Open + Answered** to see active cases.
  </Tab>

  <Tab title="By priority">
    **Low**, **Medium**, **High**, or **Urgent**. Filter to **Urgent** first to make sure nothing critical is missed.
  </Tab>

  <Tab title="By department">
    Show only tickets routed to a given team.
  </Tab>
</Tabs>

## Open a ticket

Clicking a row opens the ticket view at:

```
GET /{subdomain}/tickets/{ticket}
```

From there you see:

* **Header** — ticket ID, subject, status, priority, department.
* **Thread** — the original body, then every reply in chronological order with its attachments.
* **Reply composer** — at the bottom, for adding your next message.
* **Close action** — a button to resolve the ticket.

## Reply to a ticket

<Steps>
  <Step title="Scroll to the composer">
    At the bottom of the ticket view.
  </Step>

  <Step title="Type your reply">
    Plain text. Required. Minimum 5 characters, **maximum 2000 characters**.
  </Step>

  <Step title="Attach files (optional)">
    Up to 10 MB per file. Allowed types: jpg, jpeg, png, gif, pdf, doc, docx, txt, zip.
  </Step>

  <Step title="Click 'Send Reply'">
    Posts to `POST /{subdomain}/tickets/{ticket}/reply`. The reply is appended to the thread and the other party is emailed.
  </Step>
</Steps>

<Note>
  When an admin replies, the ticket status moves to **Answered**. When a customer replies on an **Answered** ticket, it's the admin's turn to respond — follow-up emails are sent automatically in both directions.
</Note>

### Writing a reply that helps

<CardGroup cols={2}>
  <Card title="Stay within 2000 characters" icon="pen">
    If you need more room, attach a document rather than pasting walls of text.
  </Card>

  <Card title="Reference specifics" icon="hashtag">
    Quote the relevant ticket ID, invoice number, or campaign name in every reply.
  </Card>

  <Card title="One issue per reply" icon="list">
    Don't pile three questions into one message — answer a, b, c in order.
  </Card>

  <Card title="Attach proof" icon="paperclip">
    Screenshots of error states, confirmation emails, or policy documents — up to 10 MB per file.
  </Card>
</CardGroup>

## Download an attachment

Every file shared in the thread has a download action. It hits:

```
GET /{subdomain}/tickets/{ticket}/download
```

Attachments live under `tickets/{tenant_id}/replies/` on the workspace's public disk and are served to members of the ticket thread.

## Close a ticket

When the issue is resolved, close the ticket:

<Steps>
  <Step title="Open the ticket">
    From the list.
  </Step>

  <Step title="Click 'Close Ticket'">
    Posts to `POST /{subdomain}/tickets/{ticket}/close`.
  </Step>

  <Step title="Status flips to Closed">
    The other party gets an email letting them know the ticket has been closed.
  </Step>
</Steps>

<Warning>
  A closed ticket is archived. If the same customer needs help again, open a **new** ticket — don't try to resurrect an old closed one.
</Warning>

## Status lifecycle recap

| From         | Trigger                          | To                                   |
| ------------ | -------------------------------- | ------------------------------------ |
| (new)        | Customer submits the create form | **Open**                             |
| **Open**     | Admin posts a reply              | **Answered**                         |
| **Answered** | Customer replies                 | (stays **Answered**, admin notified) |
| any          | Close button pressed             | **Closed**                           |

Only three statuses exist: **Open**, **Answered**, **Closed**. There's no "on hold" or "pending" — if a case is waiting on a third party, leave a reply explaining and keep it **Answered**.

## Email notifications

Xobito sends emails automatically on these events:

| Event                                 | Sent to                                        |
| ------------------------------------- | ---------------------------------------------- |
| Ticket created                        | Admin users + staff assigned to the department |
| Reply posted                          | The other party (admin ↔ customer)             |
| Status changed                        | The other party                                |
| Ticket assigned to a department/admin | The new assignee                               |

If a customer isn't receiving emails, double-check spam and the email on file against the contact record.

## Productivity tips

<AccordionGroup>
  <Accordion title="Start each day on Urgent + High">
    Filter to Priority = Urgent, then High, Status = Open. Work through those first.
  </Accordion>

  <Accordion title="Keep replies tight">
    The reply body is capped at 2000 characters for a reason — readers scan, they don't read. One tight reply beats a rambling one.
  </Accordion>

  <Accordion title="Close resolved tickets promptly">
    A ticket that hasn't had activity in a few weeks is almost certainly resolved. Close it; the customer can always open a new one.
  </Accordion>

  <Accordion title="Use the subject as your breadcrumb">
    When you reference a ticket in email or Slack, paste the full `TKT-` ID — it's copy-paste searchable from the list.
  </Accordion>
</AccordionGroup>

## Automation and webhooks

<Note>
  Ticket events do **not** trigger outbound webhooks. The Xobito webhook system fires only on Contact, Status, and Source create/update/delete events — not on ticket activity. For automation around tickets, reply through the UI or monitor the email notifications.
</Note>

## Next

<CardGroup cols={2}>
  <Card title="Tickets overview" icon="ticket" href="/tickets/overview">
    Back to the tickets hub.
  </Card>

  <Card title="Create a ticket" icon="plus" href="/tickets/create-ticket">
    Open a new ticket from the portal.
  </Card>
</CardGroup>
