Statuses and lifecycle

Five statuses, what each means, and when they transition.

Every ticket sits in exactly one of five statuses:

Status Meaning
Open New or reopened, no agent has replied yet.
Pending Waiting on something external (customer reply, third-party fix).
In progress An agent has replied at least once; active conversation.
Resolved Agent thinks it's done; customer hasn't confirmed.
Closed Done. No longer active.

Default transitions

  • CreateOpen (or In progress if it came from chat-to-ticket conversion — see Convert chat to ticket).
  • First public reply by agentOpenIn progress. Also stamps first_response_at.
  • Customer reply while Resolved or Closed → reopens to Open. Clears resolved_at / closed_at.
  • Agent sets status manually to any of the five values. We auto-stamp resolved_at / closed_at if those weren't already set.

Internal notes never change status. They're conversation state, not lifecycle state.

When to use each

Open — nobody has touched it yet. Useful as a filter ("who hasn't been responded to?").

Pending — there's nothing for you to do until something external happens. Use it generously: it's the difference between "waiting on the customer" and "stalled because nobody noticed". Marking a ticket Pending takes it out of your active queue without closing it.

In progress — active back-and-forth. Most of your tickets live here.

Resolved — you believe the issue is fixed, but the customer hasn't confirmed. Useful for SLA reporting (resolved-time isn't necessarily closed-time).

Closed — done done. Customer either confirmed, or you waited long enough that you're declaring victory.

What about auto-resolve and auto-close?

Not built yet. Tickets stay in their current status until someone moves them. Two rules we'll likely add later:

  • Auto-resolve after N days in In progress with no customer reply.
  • Auto-close after N days in Resolved with no customer reply.

Until then, set up a weekly cleanup hour to walk the queue.

Tracking time

The first_response_at, resolved_at, closed_at timestamps are stamped automatically. They're shown on the ticket page and included in the CSV export. SLA reporting from these is on the roadmap.

What changes when a ticket hits Resolved or Closed

  • The customer portal renders a 1-5 star "How did we do?" prompt — see Customer feedback (CSAT). One rating per ticket.
  • Closed tickets remove the reply form on the customer portal entirely. Resolved tickets still allow replies (a reply reopens the ticket).
  • If the customer sends a follow-up after Resolved or Closed, the ticket auto-reopens to Open and resolved_at / closed_at are cleared. Any existing CSAT rating stays on the ticket; the customer can't re-rate the new round of work.