| Time | Event | Timer / Routing Result |
|---|---|---|
| 10:00 | Agent A is offered (ringed) a call | Timer resets for Agent A |
| 10:01 | Agent B is offered a call | Timer resets for Agent B |
| 10:05 | Next engagement arrives | Routes to Agent A because A’s offer was earlier |
To configure engagement distribution:
This routes engagements to the agent who has gone the longest since they were last offered (routed or ringed) an engagement regardless of whether they answered it. Each agent has a last-idle timestamp that updates whenever they are offered an engagement. This includes cases where the agent is notified (ringed) but doesn’t answer due to timeout, rejection, or backend failure. Over time, this method provides a round-robin–like balance across agents.
Notes:
Timer logic example:
| Time | Event | Timer / Routing Result |
|---|---|---|
| 10:00 | Agent A is offered (ringed) a call | Timer resets for Agent A |
| 10:01 | Agent B is offered a call | Timer resets for Agent B |
| 10:05 | Next engagement arrives | Routes to Agent A because A’s offer was earlier |
This routes engagements to the agent who has been idle the longest since they ended their last engagement. Unlike Longest Idle (Offer-Based), this method measures idle time based on when an engagement ended, not when it was offered. It also differs from Longest Idle While Ready because toggling between Not Ready and Ready does not reset the timer. This is best for support or service environments where fairness and workload balance are key, and where agents should not be able to manipulate availability by toggling readiness.
Timer logic example:
| Time | Event | Timer / Routing Result |
|---|---|---|
| 10:00 | Agent A ends a call | Timer starts for Agent A |
| 10:02 | Agent B ends a call | Timer starts for Agent B |
| 10:04 | Agent A toggles Ready → Not Ready → Ready | Timer continues running |
| 10:05 | New call arrives | Routes to Agent A because A has been idle the longest since the last call ended |
This is the same logic as Longest Idle (Post-engagement) but only considers engagements handled in this specific queue. Engagements from other queues do not affect the idle time tracking for this queue. This is ideal for multi-queue support centers where agents handle multiple queues and fairness must remain isolated per queue.
Timer logic example:
| Time | Event | Timer / Routing Result |
|---|---|---|
| 10:00 | Agent A handles a call in Queue A | — |
| 10:01 | Agent A ends the call in Queue A | Timer resets for Agent A in Queue A |
| 10:00 | Agent B handles a call in Queue B | — |
| 10:01 | Agent B ends the call in Queue B | Timer resets for Agent B in Queue B; no effect on Queue A timer |
| 10:05 | New call arrives in Queue A | Routes to Agent B, who has been idle the longest based on their engagement end time for Queue A |
This routes engagements to the agent who has been in Ready status the longest since last changing from Not Ready. The timestamp resets every time an agent enters Ready. This is ideal for sales or lead distribution environments where staying Ready is rewarded and ensures fair opportunity.
Timer logic example:
| Time | Event | Timer / Routing Result |
|---|---|---|
| 10:00 | Agent A switches to Ready | Timer resets for Agent A |
| 10:05 | Agent B switches to Ready | Timer resets for Agent B |
| 10:10 | New call arrives | Routes to Agent A because A has been Ready longer |
This is same as Longest Idle While Ready, but the timer only tracks engagements handled within this queue. Engagements from other queues do not affect the timer. This is recommended for multi-queue environments where each queue should have independent fairness logic such as shared service/sales teams supporting multiple product lines.
Timer logic example:
| Time | Event | Timer / Routing Result |
|---|---|---|
| 10:00 | Agent A handles a call in Queue A | — |
| 10:01 | Agent A finishes the call in Queue A | Timer resets for Agent A in Queue A |
| 10:00 | Agent B handles a call in Queue B | — |
| 10:01 | Agent B finishes the call in Queue B | Timer resets for Agent B in Queue B; no effect on Queue A timer |
| 10:05 | New call arrives in Queue A | Routes to Agent B because B has been Ready the longest for Queue A |
This routes engagements in a fixed, pre-defined order (for example, Agent 1 → Agent 2 → Agent 3). The order repeats once the list completes. This is ideal for predictable or structured routing where agents receive calls in a consistent order.
Example:
| Engagement | Assigned Agent |
|---|---|
| Engagement 1 | Agent 1 |
| Engagement 2 | Agent 2 |
| Engagement 3 | Agent 3 |
| Engagement 4 | Agent 1 (cycle restarts) |
| Engagement 5 | Agent 2 |
All available agents (up to 50) are notified or ringed at once, and the first to accept receives the engagement. This is recommended for high-priority or real-time response scenarios, such as escalation teams or emergency hotlines.
Timer logic example:
| Time | Event | Result |
|---|---|---|
| 10:00 | 20 agents are notified simultaneously | All 20 agents receive the offer |
| 10:00:03 | Agent C accepts first | Agent C receives the engagement |
This disables automatic routing. Agents or supervisors must manually assign engagements from the Active Engagements panel. This mode is often used for cherry-pick workflows in asynchronous messaging channels such as email or social messaging, where agents select which engagements to handle manually based on context or priority. This is recommended for email or messaging queues where manual triage, prioritization, or selective engagement handling is required.
Example:
|
Event |
Result |
|
10 new emails arrive in the queue |
Emails are added to the queue |
|
Agents manually select email threads |
Agents choose which emails to open and respond to |
|
Automatic routing |
No automatic routing occurs |
Used for messaging and email channels only. Engagements are distributed based on agent workload capacity rather than idle time. Agents with the lowest rate (most available capacity) are prioritized. This is ideal for asynchronous channels (email or messaging) where fairness depends on available capacity instead of idle time.
Formula:
Availability rate (r) = total engagement weight / agent total capacity
Example:
| Agent | Active Chats | Capacity Used |
| Agent A | 1 of 4 | 25% |
| Agent B | 2 of 10 | 20% |
| Next chat | — | Routes to Agent B (lower capacity) |