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
Inbound
Match DID → Ring reception
RingOutbound
Permit · DNC checked
DialFallback
Voicemail · transcript
CatchEmergency
E911 · bound address
ModeledBlocked
Premium-rate denied
DenyQuiet hours
22:00–08:00 local
DeferSafe 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
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.