Mermaid exampleState Diagram

Customer Support Ticket Lifecycle State Diagram

A ticket lifecycle state diagram defines the statuses a support request can hold and the events that move it between them. Support managers use it to align the help desk configuration with SLA reporting; engineers use it to validate status transitions in the ticketing API.

  • support ticket state diagram
  • ticket lifecycle
  • help desk status workflow
  • mermaid stateDiagram
Customer Support Ticket Lifecycle State Diagram

agent reviews

assigned

question sent

customer replies

no reply in 7 days

fix confirmed

customer accepts

customer reopens

In progress

Waiting on customer

New

Triaged

Closed

Resolved

Open in editor → 13 linesrenders in GitHub, Notion, Obsidian

Mermaid code

stateDiagram-v2
    state "In progress" as InProgress
    state "Waiting on customer" as Waiting
    [*] --> New
    New --> Triaged : agent reviews
    Triaged --> InProgress : assigned
    InProgress --> Waiting : question sent
    Waiting --> InProgress : customer replies
    Waiting --> Closed : no reply in 7 days
    InProgress --> Resolved : fix confirmed
    Resolved --> Closed : customer accepts
    Resolved --> InProgress : customer reopens
    Closed --> [*]

Paste this into any tool that renders Mermaid, or into the editor to change the theme and export PNG or SVG. Syntax reference: State Diagram guide.

What this diagram shows

The two states with spaces in their names, In progress and Waiting on customer, are declared first with state "..." as Alias so the transitions below can use short identifiers. Waiting has two exits: the customer replies and work resumes, or seven days pass and the ticket auto-closes. The Resolved --> InProgress edge is the reopen path that most teams forget to document.

How to adapt it

  • Add an Escalated state between InProgress and Resolved if tier-2 handoffs need their own SLA clock.
  • Change no reply in 7 days to your actual auto-close window, or remove that edge if tickets never close without a human.
  • Use note right of Waiting to spell out which timers pause while a ticket waits on the customer.
  • Group Triaged, InProgress, and Waiting inside a composite state called Open to show which statuses count toward open-ticket metrics.

FAQ

Why declare aliases instead of writing the full state name everywhere?

State names with spaces cannot appear directly in a transition line. The state "Waiting on customer" as Waiting form gives the diagram a readable label while the transitions use the alias.

Should "Closed" be a terminal state or can it go back to "In progress"?

Most help desks treat closed as final and ask the customer to open a new ticket. If yours allows reopening after close, add Closed --> InProgress : reopened and remove the Closed --> [*] edge.