Tickets

Support in the same console as everything else — no context-switch, no lost tenant. Opt-in per project.

Anatomy of a ticket

  • A public_ref like TKT-3F7A2C (also the email-threading token).

  • A threaded message timeline — messages are authored by a member, the requester or the system, and can be is_internal notes never mailed out.

  • An append-only assignment chain of custody — who held it, when, and why.

  • A state machine: open ⇄ pending, → resolved, → closed; the only way out of closed is reopen.

Inbound email

Customers can reply by email: POST /inbound (generic) and /inbound/brevo turn an email into a ticket — a TKT-… token in the subject threads the reply onto the existing ticket and reopens it, otherwise a new one is opened. Gated by SVITRIO_TICKETS_INBOUND_SECRET / SVITRIO_TICKETS_BREVO_SECRET.

One inbox across products

GET /admin/tickets is a cross-project unified queue over every project where you hold tickets:read — so a support person works one inbox, not one per tenant.