ExamplesSupport Ticket Escalation

Support Ticket Escalation


Old fragile flow

POST /api/tickets/:id/escalate
  → update ticket status
  → page on-call
  → create Slack thread
  → write audit row
  → maybe page twice on retry

Causet version

escalate_ticket intent
  → ticket_escalated
  → oncall_paged
  → slack_thread_created
App keeps tickets table in sync via event bridge

Sample intent

actions:
  escalate_ticket:
    state: support_ticket
    entity_id_expr: intent.ticket_id
    input:
      ticket_id: { type: string, required: true }
      reason:    { type: string, required: true }
      severity:  { type: string, required: true }

Sample events

ticket_escalated
oncall_paged
slack_thread_created
escalation_acknowledged

Sample query

queries:
  ticket_escalation_status:
    from: ticket_escalation_status
    where:
      ticket_id: { eq: input.ticket_id }

Timeline output

escalate_ticket (tkt_42)
  ✓ ticket_escalated
  ✓ oncall_paged
  ✗ slack_thread_created (failed)

What you can inspect

  • Escalation reason and severity on the intent payload
  • Which notification side effects succeeded
  • Whether a duplicate escalate was rejected

What you can replay or repair

  • Retry Slack creation on a fork with idempotency
  • Repair projection so the agent UI shows escalated
  • Audit the full escalation history for compliance

Related: Support Copilot (AI) · Replay.