Draft events

The natural first external event family

  • call.routed when a validated route is executed
  • call.missed when nobody answers and fallback handling begins
  • call.completed when the call lifecycle closes
  • call.summary.created when a call summary is generated
Suggested payload shape

Keep payloads operational, not ornamental

{
  "event": "call.routed",
  "id": "evt_123",
  "occurred_at": "2026-08-02T12:00:00Z",
  "call_session_id": "...",
  "call_log_id": "...",
  "caller_number": "+15551234567",
  "called_number": "+15557654321",
  "route": {
    "target_type": "team",
    "target_id": "...",
    "strategy": "priority"
  },
  "outcome": {
    "fallback_action": "sms_callback"
  }
}
Important caveat

What this draft does not promise yet

This draft does not yet guarantee retry policy, signature format, event ordering, duplicate delivery semantics, or idempotency headers. Those must be documented before this becomes a production partner contract.

Why this matters

External events are part of the moat

A routing platform becomes more defensible when customers can hook routing outcomes, missed calls, and summaries into their CRM, ticketing, and callback workflows.