Queues
Queues hold callers in a waiting line until an available agent answers. Unlike a ring group — which rings everyone at once for a single call — a queue keeps callers on hold (with music or announcements) and pulls them off the front of the line as agents become available. Use queues when you expect more concurrent calls than agents.
Viewing Queues
Navigate to Queues from the sidebar. The table shows each queue's name, extension, strategy, timeout, and current member count for the selected account.
Creating a Queue
- Click Add Queue.
- Enter a Name (e.g., "Sales", "Tier 1 Support").
- Optionally assign an extension number so the queue can be dialed directly.
- Click Add Queue.
Queue Settings
Open a queue to edit its settings. Settings are grouped into a short top-level set everyone tends to touch, plus an Advanced section (collapsed by default) for the rest.
Top-level:
- Extension — Internal number for directly dialing the queue.
- Strategy — How waiting callers are distributed to agents. See Strategies below.
- Max wait (seconds) — How long a caller waits for an agent to answer, from
1to3600(one hour). New queues default to300(5 minutes). If an agent's phone is already ringing when the time is up, that ring is allowed to finish before the timeout behavior runs. - Timeout Behavior + Timeout Target — What happens to a caller whose Max wait elapses, and where they go. See Timeout behavior below.
- Hold music — The audio callers hear while they wait in this queue. Defaults to the account's hold music. See Hold music below.
Inside Advanced:
- Max queue length — Maximum number of callers waiting at once.
0means unlimited. When the queue is full, new callers are rejected and never enter; what a rejected caller hears is described under Timeout behavior. - Entry prompt and Periodic prompt — Your own recorded messages for waiting callers: one played once as they join, one replayed while they wait. See Entry and periodic prompts below.
- Wrap-up time (seconds) — Cooldown applied to the agent who just took a call from this queue. It follows the agent rather than the queue, so while it runs no queue they belong to will ring them.
0disables wrap-up. - Position announcements — Periodically tells waiting callers their place in line ("You are caller number three"). See Position announcements below.
- Press-1 Callback — Lets a waiting caller hang up and have an agent call them back when one becomes available. See Press-1 callbacks below.
- Allow callers to exit the queue — Lets a waiting caller press a key to stop waiting and go somewhere else. See Exit key below.
- Allow new callers when — How much of the team has to be free before a new caller may join. See Allowing and holding callers below.
- Keep callers in the queue when — How much of the team has to be free to keep callers already waiting. The queue waits about 30 seconds before moving anyone on, so a brief dip does not drop callers. A caller who is moved on goes wherever the timeout behavior sends them, exactly as if their Max wait had elapsed. See Allowing and holding callers below.
Strategies
Strategies decide which member to ring next when a caller reaches the front of the queue.
- Ring all — Rings every member who could take the call right now, at the same time; the first to answer takes it. Members who are paused, in wrap-up, or already on a call are skipped. Best when each call needs the fastest possible pickup and team size is small.
- Linear — Rings members in a fixed order based on their position value (lowest position first). Use when there is a clear primary, secondary, tertiary, etc.
- Round robin — Rings members one at a time in position order, remembering where the rotation left off. The next call starts with the member after the previous one rung. Distributes work evenly over time. Weight is ignored.
- Least recent — Rings the member who has been idle the longest (longest time since their last call ended).
- Fewest calls — Rings the member who has handled the fewest calls so far today. The counter resets at midnight in your account timezone.
- Random — Rings a member chosen uniformly at random.
- Weighted random — Random with bias: members with lower weight are more likely to be chosen on any given call. A higher-weight member can still be picked first — just with proportionally lower probability (
1 / (weight + 1)).
Allowing and holding callers
Two settings decide how much of your team has to be free for the queue to take a caller, and to keep one waiting. Both ask the same question, so both offer the same three answers:
- Allow new callers when — applies to a new caller arriving at the queue.
- Keep callers in the queue when — applies to callers already waiting.
The three answers run from strictest to most lenient:
- Any agent can answer immediately — At least one agent is logged in, not paused, not in wrap-up, and not already on another call. The strictest option: nobody waits for a team that is busy.
- Any agent is available — At least one agent is logged in and not paused. Being on a call is fine, so callers wait on hold for an agent who is busy right now. This is the state the Members list badges Available, with one difference: an agent in their wrap-up cooldown still badges Available but does not satisfy this option.
- Any agent is logged in — At least one agent is logged in, even if every one of them is paused or on a call. The most lenient option.
Treat wrap-up as a short automatic break. All three options handle it exactly as they handle a paused agent: the first two do not count an agent who is in wrap-up, and the third does. So on a queue with one agent and wrap-up configured, the first two options stop holding callers during each cooldown.
If the setting name and the option read together as a sentence, that is the intent: "Allow new callers when any agent is available."
These names in the API
The API keeps its original field and value names, which describe the condition for turning a caller away rather than for accepting one. The rules are identical; only the direction of the phrasing differs.
| Setting | API field |
|---|---|
| Allow new callers when | join_empty |
| Keep callers in the queue when | leave_when_empty |
| Option | API value |
|---|---|
| Any agent can answer immediately | strict |
| Any agent is available | no_agents_available |
| Any agent is logged in | no_agents_online |
Using the queue as a front door
The two settings do not have to match, and setting the first more leniently than the second is a deliberate pattern rather than a mistake.
Your entry prompt, position announcements and press-1 callback offer all reach a caller only once the queue has admitted them. So a queue can be set up to let everyone in, so they hear why you cannot take the call, and then move them on rather than leaving them holding: set Allow new callers when to Any agent is logged in and Keep callers in the queue when to Any agent is available.
Two things to know before you do. This is the one case where the second setting is stricter than the first, so a caller can be admitted and then moved on shortly afterwards; that is the intent here, but it is worth being deliberate about. And do not use Any agent can answer immediately for the second setting: that treats a team who are simply all on calls as absent, which at a busy time is most of the time, so callers would be moved on constantly.
If you want them to be offered a callback first, lower Callback offer delay as well. It defaults to 60 seconds, and a caller moved on for lack of staffing can leave after about 30, so at the default they would never hear the offer.
Timeout Behavior
When a caller has waited the Max wait without an agent answering, the timeout behavior runs. A ring already in progress is never cut short, so a caller an agent is being connected to is not interrupted; the behavior runs when that ring ends instead.
- None — The call hangs up.
- Ring user — Forwards the caller to a specific user's extension. Use for an "always-on" fallback person.
- Voicemail — Sends the caller to voicemail. The target can be either a user (their personal voicemail) or a shared voicemail box.
- Overflow to queue — Overflows the caller into a different queue. Useful for tiered escalation (e.g., Tier 1 → Tier 2 after waiting too long). Cycles are rejected when you save: a queue can't overflow into itself, directly or transitively.
The Timeout Target picker only appears once a behavior other than None is selected, and only shows targets compatible with that behavior.
If the caller reached the queue through a dial plan whose Internal Extension node has its No Answer exit wired to another node, that exit wins, and the timeout behavior above is not used. The same exit is taken when the queue refuses the caller outright, instead of the caller getting a busy signal. A queue refuses for two reasons: it is full, or less of the team is free than Allow new callers when requires. A refused caller with no wired exit has no fallback, and is refused exactly as before: an external caller hears the queue-full announcement when the queue is full, and a busy signal otherwise. The timeout behavior runs for two kinds of caller: one the queue admitted whose Max wait then elapsed, and one the queue stopped holding because the team was no longer staffed enough to reach them, per Keep callers in the queue when. In both cases the wired exit is tried first, then the timeout behavior. If something on our side fails while the call is being set up, the call simply ends.
Exit key
By default a waiting caller has two choices: keep holding, or hang up. Allow callers to exit the queue (under Advanced) gives them a third: press a key and be sent somewhere else, such as a shared voicemail box, without waiting out the Max wait.
- Exit key — The key the caller presses. Any digit
0-9or#; new queues that turn the exit on start with0. The*key is not offered because it starts the caller's own in-call commands. - Exit Behavior + Exit Target — Where the caller goes. The options are the same as the timeout behavior: None hangs up, Ring user, Voicemail (a user's or a shared box), or Overflow to queue. The target picker appears once a behavior other than None is selected.
Nothing announces the key on its own. Record the instruction into an entry or periodic prompt ("press 0 to leave a message") so callers know it is there.
Behavior notes:
- Unlike the timeout, the exit does not wait for a ring in progress to finish. A caller who presses the key while an agent's phone is ringing leaves at once, and that agent's phone stops ringing.
- While the press-1 callback prompt is being offered,
1requests the callback even if1is also the exit key. At any other time it exits. - Inside a dial plan, the exit behavior runs as configured; the Internal Extension node's No Answer exit does not override it, unlike the timeout. With the exit behavior set to None, a caller who presses the key follows the No Answer exit if one is wired, so "leave the queue" continues the plan rather than hanging up.
- Turning the exit off also clears the exit behavior, so turning it back on later starts from None.
Hold music
Hold music picks the audio callers hear while they wait in this queue. The list holds the account's audio clips — upload the clip there first, then select it here.
Leaving the setting on Account default means the queue plays whatever the account's hold music is, so one change on the account covers every queue that hasn't chosen its own. If the account hasn't set hold music either, callers hear the default hold music.
Behavior notes:
- The clip loops for as long as the caller waits. A position announcement, a press-1 prompt or one of the queue's own prompts interrupts it, and the clip starts again from the beginning afterwards.
- Changing the setting affects new waits. A caller already waiting keeps the clip they started with — but if the queue plays any prompt, they pick up the new clip when the music resumes. Switching the queue back to Account default mid-wait is the exception: callers already waiting drop to the default hold music until they leave the queue.
Entry and periodic prompts
Hold music tells a caller they are waiting; it doesn't tell them anything about why. Two optional prompts let the queue play your own recording instead — clinic hours, an apology for the wait, a pointer to the website. Both come from the account's audio clips, so upload the recording there first.
- Entry prompt — Played once, as soon as the caller joins the queue, before hold music starts. Use it for the greeting a caller should hear exactly once ("Thanks for calling. All of our team members are with other patients").
- Periodic prompt — Replayed for as long as the caller waits. Use it for the message that bears repeating ("You can also book online at example.com").
- Prompt interval (seconds) — How often the periodic prompt repeats. Defaults to 60 seconds. Minimum 10, maximum 600. The field appears once you pick a periodic prompt.
Both default to None, which is the behavior queues had before: hold music only.
Behavior notes:
- Hold music pauses while a prompt plays and resumes afterwards, the same way a position announcement interrupts it.
- The caller holds their place in line while the entry prompt plays, and agents are rung underneath it — an entry prompt does not delay the first ring.
- A prompt is cut short the moment an agent answers, so a caller is never talking over a recording.
- Only one thing plays at a time. When a periodic prompt and a position announcement come due together, the periodic prompt plays and the position announcement waits for the next interval.
- Deleting a clip that a queue points at removes the prompt rather than breaking the wait — callers simply hear hold music.
Position announcements
Long, silent holds make callers anxious. With position announcements enabled, a waiting caller hears a short "You are caller number N" prompt at a configurable interval, interrupting hold music briefly each time.
- Position announcements — Turns the announcement on for this queue. When off, callers hear uninterrupted hold music until an agent answers.
- Announcement interval (seconds) — How often the announcement repeats. Defaults to 30 seconds. Minimum 10, maximum 600.
Behavior notes:
- Positions above 30 are not announced (the prompt set only covers callers 1 through 30); a caller deeper in the queue keeps hearing hold music until they reach a position the system can read.
- The announcement is cut short the moment an agent answers — callers do not hear "You are caller number two" over the start of a live conversation.
Press-1 Callbacks
Long hold times push callers to hang up. With press-1 callbacks enabled, a waiting caller is offered a prompt — "Press 1 to hang up and be called back when an agent is available" — and can keep their place in line without staying on the line. When an eligible agent becomes available, the system rings that agent first; once they accept, it rings the caller back and bridges them.
- Enable callback option — Turns the press-1 prompt on for this queue. When off, callers always wait on the line.
- Offer after (seconds) — How long a caller waits before the prompt is offered. Lower values give the option sooner; higher values reserve it for genuinely long waits. Defaults to 60 seconds.
- Callback caller ID — Optional. The DID used as the outbound caller ID when the system rings the caller back. Must be an active, outbound-enabled DID owned by this account. When unset, the queue falls back to the inbound DID the caller dialed (or the account's default outbound DID).
Behavior notes:
- Callbacks survive process restarts — pending requests are stored durably and re-evaluated on startup.
- Each callback retries up to three more times on no-answer (1 minute, then 5 minutes, then 15 minutes later) before being dropped.
- Callbacks are evaluated whenever an agent becomes available (including via the
*45login and*46unpause star codes), so an agent coming back online wakes any waiting callbacks for queues they're a member of. - The agent who accepts the callback hears a short whisper ("Callback. Press 1 to accept, 2 to skip.") before the recipient leg is dialed, so they're never surprised mid-call.
Members
The Members card shows a banner at the top whenever no agents are currently eligible to take a call — every member is logged out, paused, or already on a call. Whether a fresh caller is turned away in that state depends on Allow new callers when: Any agent can answer immediately always turns them away. Any agent is available turns them away too when the reason is that everyone is paused or in wrap-up, and admits them when the reason is that everyone is on a call. Any agent is logged in admits them in every case the banner covers. A caller who is turned away skips past the queue in the dial plan when the queue node's exit is wired, and hears the queue's refusal otherwise. Either way the banner is a heads-up that you need to add members, have them log in, or unpause before traffic starts.
The banner reflects live state (refreshed every 15 seconds) and disappears as soon as at least one member is available.
Queue members are the users who answer queued calls. Each member has a Position (lowest first; positions start at 1). Linear and round robin ring in that order outright, and every other strategy except random and weighted random falls back to it whenever two members are otherwise equal — which is common, since two agents who have not taken a call today are tied. It is worth setting deliberately rather than leaving it arbitrary.
When the queue uses the weighted random strategy, members also get a Weight column. Lower weight = higher pick probability (probability ∝ 1 / (weight + 1)). For every other strategy the column is hidden because it has no effect.
When you add a new member at a position that's already taken, existing members at that position and below shift down by one to make room — you never have to manually renumber.
An agent reached at an external number sees the original caller's number when the call came in on one of your numbers, and one of yours when the call started inside the account.
When the queue picks one agent at a time — every strategy except ring all — it rings that agent's full Find Me / Follow Me sequence, step by step, using each step's own timeout. So an external number in step 2 does receive queue calls. Two consequences worth planning for:
- The agent holds their turn for as long as their sequence takes, so a caller reaches fewer agents within the same Max wait. A 2-minute wait against 65-second sequences reaches two agents, not four.
- Max wait stops the queue offering the call to anyone new; a sequence already ringing finishes. A caller can therefore stay on hold slightly past their max wait — at most the length of the sequence being rung.
Ring all rings the first step only, for a fixed 30 seconds. It offers the call to every available agent at once, so no single agent's sequence governs the ring — the same reason ring groups ring first steps only.
Adding a Member
- Click Add Member.
- Pick a user from the picker. Users already in the queue are hidden.
- Set Position (defaults to one past the highest existing).
- When the queue strategy is weighted random, set Weight (defaults to
0). The field is hidden under all other strategies. - Click Add.
The new member is automatically logged in for queue dispatch, so they start
receiving calls right away — you don't need to ask them to dial *45 first.
Already-logged-in members are unaffected, and paused members stay paused
(their break isn't ended by being added to another queue). Members can still
log themselves out with *45.
Removing a Member
Hover over a member row and click the trash icon. Other members keep their positions; gaps are fine and don't affect ringing order.
Agent Star Codes
Agents manage their own availability from any of their devices:
| Code | Action |
|---|---|
*45 | Toggle logged out / in. |
*46 | Toggle paused / unpaused |
Dial the code on its own — there is no queue number to append. Availability is stored per agent, not per queue, so one *45 logs the agent out of every queue they're a member of and the next logs them back in to all of them. Each code is a toggle, so an agent unsure of their state can dial it and listen: the confirmation announces the state they are now in.
State follows the agent's user rather than the phone they dialed from, so a desk phone and a softphone share one state. The confirmation prompts say "paused" and "unpaused", which is the wording to use when walking an agent through it.
The two codes interact in both directions. Logging out with *45 also clears any pause. Less obviously, an agent who is logged out and dials *46 is logged back in as well as paused, so *46 is not purely a pause toggle: pressing it makes them a queue member again.
Renaming a Queue
Click the queue name at the top of the detail page to edit it inline. Press Enter or click away to save.
Deleting a Queue
Open the queue and use the delete action from the queue list page. Deleting a queue releases its extension number for reuse and removes all members. Existing call routing rules that point at this queue must be updated separately.