Skip to content
DocsStart free

Users & Devices

A user (sip_user) is a person or agent; a device (sip_device) is a registered endpoint: a softphone, desk phone, or app. One user can have many devices. When a call routes to a user, SIP.IO forks to their devices according to the user’s ring strategy, after applying do-not-disturb and call-forwarding rules.

When a call targets a user (dest_kind: "user"), the platform finds the user’s reachable devices (those with a live registration and available) and rings them:

Field (sip_user)Purpose
ring_strategysimultaneous (default): ring all reachable devices at once; sequential: ring them in order; specific: only the devices opted in.
ring_timeout_secHow long to ring before it’s a no-answer (default 25).

Each device’s ring_order (sip_device, lower rings first) sets the sequence for sequential, and the tiebreak otherwise. A device with ring_on_fork = 0 is excluded from the fork (it won’t ring on a call routed to the user) but stays reachable for a direct dial, which is useful for a backup or recording endpoint. With one ringing device, the call takes a direct fast path; with several, it forks.

The user’s internal caller-ID is stamped onto each fork leg, so an extension-to-extension call shows who’s calling on every device.

Before ringing, the user’s call-handling rules are evaluated in order:

fwd_always set? → route there immediately (skip ringing)
dnd = 1? → fwd_busy, else voicemail, else hang up
otherwise → ring the user's devices
no answer in time → fwd_noanswer, else voicemail, else hang up
Field (sip_user)Fires
dndDo-not-disturb: don’t ring; divert to busy handling.
fwd_always_kind / _idForward all calls (a route target).
fwd_busy_kind / _idForward when busy / DND.
fwd_noanswer_kind / _idForward on ring-timeout / no reachable device.

Each forward target is an ordinary route target, so a user can forward to another user, a queue, voicemail, or an external PSTN forward. Falling back to the user’s voicemail_id is automatic when no forward is set.

What a user presents as caller-ID is managed per user and validated; see per-user caller-ID. Internal (extension-to-extension) calls stamp the user’s internal identity; external (PSTN) calls present a validated external number.