Skip to main content

Per-user call forwarding

Every user controls where inbound calls to their own extension ring, from Me → Voice preferences in the dashboard. No admin role is needed — each person manages their own rule, and the rule applies only to calls addressed to them. This is the Find Me / Follow Me pattern familiar from RingCentral, Zoom Phone, and 8x8: sim-ring a mobile alongside the desktop softphone, roll a call through a list of destinations until someone answers, and let an assistant screen an executive’s calls. Until now these constructs were why teams kept a parallel legacy PBX; here they are per-user settings.

Forwarding modes

Pick one mode per user. Each mode answers “when a call comes in for me, what rings?” Destinations are PSTN numbers in E.164 format (for example +14155551234) or internal SIP URIs (sip:alice@orbit.devotel.io). A rule holds up to 5 destinations, each with an optional label (“Mobile”, “Home office”). Modes other than none require at least one destination. Ring timeout (5–120 seconds) sets how long each leg rings before the call moves on. It applies to sim_ring, sequential, and forward_after_timeout. Optional active window — set Active from / Active until and the rule applies only inside that window; outside it, calls fall back to the dashboard softphone. Add a short note (“Vacation 6/10 – 6/20”) so the reason for the rule is visible later. Clear rule reverts everything to none in one step: destinations, active window, and note are removed after a confirmation.

How each mode resolves

When every leg expires unanswered, the call follows the route’s no-answer path — typically the user’s voicemail. See Voice call lifecycle for how fallbacks resolve.
Forwarding destinations are configuration only. The actual outbound leg to a PSTN destination is placed by the call router over the tenant’s configured carrier — the page itself never dials.

API contract — call handling (Find Me / Follow Me)

Everything the Call handling card saves is a per-user rule you can also drive over the API. These routes are self-scoped — any authenticated user manages their own rule; no admin role is needed. Base path: /api/v1/voice. Read the current rule — returns the resolved rule. A user who has never configured one gets a synthetic none back, so this endpoint never 404s:
A destination is { kind: "pstn" | "sip", value, label? } — an E.164 number for pstn, a sip:-prefixed URI for sip. The array is ordered and capped at 5 entries. Upsert the rule — idempotent; replaces the current rule in full. Send only mode and the defaults below fill the rest (destinations empty, ring_timeout_sec 20, active window null, reject_anonymous false):
The 200 reply echoes the resolved rule in the same shape as the GET above. Malformed destinations (a non-E.164 PSTN value, a SIP value without the sip: prefix) return 400 with per-field details. Clear the rule — reverts to none and removes destinations, the active window, and the note in one call. Returns 204 with no body:
Org owners and admins can also provision rules on behalf of users in their organization via the /api/v1/voice/call-forwarding/users admin surface — same rule shape, plus user_id per entry.

Find Me / Follow Me ring ladder

The Find me / follow me card is a planner for a per-step reach order: an ordered ladder where each step rings for its OWN window before rolling to the next — the full RingCentral-class construct, beyond the flat sequential mode’s single shared timeout. Build the ladder from steps of any mix: desk phone, mobile, softphone, a PSTN number, or a SIP URI. Each step rings between the server-advertised minimum and maximum window, and the ladder is capped at a maximum number of steps and a total ring budget. A End at voicemail toggle decides where an unanswered call lands after the last step. As you type, the card previews the resolved timeline live — “rings desk 0–12s, mobile 12–32s, voicemail at 32s” — so the reach order is visible before it matters.
The ring ladder is currently preview-only: it shows the reach order the call router applies at dial time, but the ladder itself is not saved yet. To persist call forwarding today, use the Call handling modes above.

Voicemail greeting

The Voicemail greeting card manages the audio callers hear when a call reaches your voicemail box.
  • Upload an .mp3 or .wav file up to 2 MB.
  • Generate from text — type up to 500 characters and the greeting is rendered as synthesized speech, stored exactly like an upload. When text-to-speech is not configured for the tenant this option reports unavailable and the upload path remains.
  • Revert to the tenant default greeting at any time; the uploaded file is kept in cold storage but no longer plays.
Until you set a custom greeting, callers hear the tenant-wide default. Any authenticated user manages their own greeting.

Call delegation (boss-admin)

The Call delegation card lets an executive grant assistants the right to act on their calls — the classic boss-admin arrangement. The executive owns every call; saved assistants share control of it. Delegated actions per assistant — grant any subset: Ring distribution decides how inbound calls split between executive and assistants:
  • Screen first — the assistant answers, announces the caller, then extends to the executive. Requires at least one assistant granted the Screen action.
  • Simul-ring — executive and all assistants ring together.
  • Assistant first — assistants ring first; the call rolls to the executive on no-answer.
  • Executive first — the executive rings first; assistants ring on no-answer.
Set the screen/alert window (how long the screening stage rings) and per- assistant ring priority (lower alerts earlier within a stage). Up to the advertised maximum number of assistants per policy. Shared ownership — when enabled, an assistant who answers shares control of the call with the executive: either can transfer, end, or re-take it. When disabled, ownership stays exclusive to the executive. The card previews the resolved ring stages live as you build the policy. Save policy persists it — it takes effect on the executive’s inbound calls immediately. Clear policy removes it (after confirmation) and calls revert to the executive’s normal routing.

API contract — call delegation (boss-admin)

The policy the Call delegation card saves is also available over the API. Persistence is self-scoped: an executive saves their OWN policy — executive_user_id must be the authenticated user, and every assistant grant must name a user inside the caller’s organization. Base path: /api/v1/voice/delegation. Preview a policy — validates a posted policy and returns the resolved plan (ordered ring stages, per-participant permitted actions, shared ownership) without persisting anything. This is what the card uses to render the live stage preview:
A grant is { assistant_user_id, assistant_label?, actions, ring_priority? } — actions is a non-empty subset of screen, answer, place, transfer, monitor; ring_priority (0–99, default 0) orders assistants within a stage, lowest first. The four ring modes are screen_first (the default; requires at least one grant with the screen action), simul_ring, assistant_first, and exec_first (executive first). The advertised bounds (screen-timeout 5–120 s, max 10 delegates, ring-priority 0–99) and the action/ring-mode catalogs are published by the static GET /api/v1/voice/delegation/capabilities endpoint so an editor renders against the server’s own limits. Save the policy — persists it; inbound calls to the executive are then distributed per the resolved plan. executive_user_id must be the caller (403 otherwise), and unknown assistant ids are rejected with 422:
The 200 reply echoes the stored policy alongside its resolved plan. Read the saved policy — returns { policy, plan }, or both null when none is saved:
Clear the policy — inbound calls revert to the executive’s normal routing; the reply is { deleted: true }: