Routing

Every path,
a policy.

Routes on Dials are declarative. You write what should happen before it does. Inbound, outbound, fallback, and blocked paths each have a contract, a scope, and a usage event.

At a glance

Four kinds of path. One policy graph.

Inbound
Ring
Match by DID, hours, consent state, and capacity. Ring the right seat.
Outbound
Dial
Per-seat dial permissions, DNC suppression, STIR/SHAKEN signing.
Fallback
Catch
Voicemail, transcript, or rerouting when the primary path can't take the call.
Blocked
Deny
Explicit deny lists, per-jurisdiction blocks, recorded for audit.

Declarative

Read it before it runs.

A routing policy is a graph of conditions and actions. Conditions match on the DID, time, scope, consent state, capacity, and jurisdiction. Actions ring, hold, forward, voicemail, or deny — all with an event written before and after.

  • Condition graph
  • Per-action telemetry
  • Versioned and diffable
  • Roll forward, never roll back silently
dials · routes
Inbound
Match DID → Ring reception
Ring
Outbound
Permit · DNC checked
Dial
Fallback
Voicemail · transcript
Catch
Emergency
E911 · bound address
Modeled
Blocked
Premium-rate denied
Deny
Quiet hours
22:00–08:00 local
Defer

Safe by default

Deny is a verb.

Anything not explicitly allowed is denied. A new seat without an outbound policy can't dial. A new DID without a route can't ring. A new agent without a scope can't send.

  • Explicit allow lists
  • Per-seat outbound policy
  • Per-DID inbound policy
  • Deny events recorded
dials · deny
Premium-rate (1-900)41 blocked
International toll fraud risk18 blocked
Recipient on internal DNC6 blocked
Outside dial scope for seat12 blocked

See it ring.

Walk a sample inbound path through the console. The policy renders the same way a regulator would read it.