Ticket Escalation
The escalation system allows both clients and agents to flag tickets for urgent attention. There are two escalation paths: Emergency (immediate alerts) and Higher Priority (daily digest).
Escalation Types
| Type | Trigger | Response |
|---|---|---|
| Emergency | Client or agent selects "Emergency" | Immediate email + SMS to PMs and assigned staff |
| Higher Priority | Client or agent selects "Higher Priority" | Added to daily escalation digest (7:30 AM CST) |
How Escalation Works (Agent Side)
Escalating a Ticket
- Open the ticket
- Click the Escalate button
- Select escalation level:
- Higher Priority — normal escalation (digest)
- Emergency — immediate multi-channel alert
- Add a reason/note explaining why
- Click Submit Escalation
What Happens — Emergency
Agent submits Emergency escalation
→ Immediate email to: PMs + assigned staff + department manager
→ SMS alert to PMs (via Twilio, if opted in)
→ Browser notification to subscribed staff
→ Ticket flagged with escalation badge
→ Recorded in ost_ticket_escalations
What Happens — Higher Priority
Agent submits Higher Priority escalation
→ Recorded in ost_ticket_escalations
→ Ticket flagged with escalation badge
→ Included in next morning's escalation digest (7:30 AM CST)
→ Digest email sent to PMs and department managers
Escalation Cooldown
A 48-hour cooldown prevents repeated escalations on the same ticket:
- After escalating, the same ticket cannot be escalated again for 48 hours
- This applies to both clients and agents
- The cooldown is per-ticket, not per-user
- Emergency overrides do NOT bypass the cooldown
Checking Cooldown Status
The escalation button will show:
- Available: "Escalate" button active
- On Cooldown: Button disabled with countdown timer
- Already Escalated: Shows current escalation status
The AJAX endpoint GET /tickets/check_escalation/{tid} returns the cooldown status.
Escalation Digest
Daily Digest Email
Sent at 7:30 AM CST daily via cron-escalation-digest.php:
Recipients: All PMs + department managers with escalated tickets
Contents:
- List of tickets escalated since last digest
- Escalation type and reason for each
- Client name and organization
- Current assignee
- Direct link to each ticket
Configuring the Digest
The digest cron runs on a schedule. To adjust timing, modify the cron schedule for cron-escalation-digest.php.
De-Escalation
To remove an escalation flag:
- Open the ticket
- The escalation badge shows in the header
- Click De-escalate or resolve the ticket normally
- Closing the ticket automatically clears the escalation
De-escalation does not reverse SMS or email alerts already sent. It only removes the visual flag and excludes the ticket from future digests.
Viewing Escalated Tickets
Escalation Queue
PMs and department managers can view all escalated tickets:
- Navigate to the ticket list
- Filter by escalation status
- Or check the PM Dashboard (
scp/pm.php) escalation widget
Escalation Badge
Escalated tickets show a visual indicator:
- 🔴 Emergency — red badge
- 🟡 Higher Priority — yellow badge
- No badge — not escalated
Client-Initiated Escalation
Clients can also escalate from the client portal:
At Ticket Creation
When creating a new ticket, clients see an escalation dropdown:
- None — standard processing
- Higher Priority — flags for daily digest
- Emergency — triggers immediate alerts
On Existing Tickets
- Client opens their ticket
- Clicks Escalate button
- Selects level and provides reason
- Same 48-hour cooldown applies
See Client Portal → Escalation for client-facing documentation.
Escalation Tracking
All escalations are recorded in ost_ticket_escalations:
| Field | Description |
|---|---|
ticket_id | The escalated ticket |
escalation_type | emergency or higher_priority |
escalated_by | Staff ID or client user ID |
reason | Free-text reason provided |
created_at | When escalation was submitted |
digest_sent | Whether included in a digest email |
resolved_at | When de-escalated or closed |
Best Practices
- Reserve Emergency for true emergencies — production-down, security incidents, data loss
- Provide clear reasons — helps PMs triage without opening the ticket
- Check AI urgency first — if AI already flagged CRITICAL, PMs are already alerted
- Don't escalate for speed — escalation is for urgency, not impatience
- Follow up after escalating — don't escalate and walk away; stay engaged
- Communicate with the client — let them know their escalation was received