Using engagement distribution methods in Zoom Contact Center

Zoom Contact Center (ZCC) offers several engagement distribution methods that control how inbound engagements such voice, video, emails, messaging, and work items are routed among available agents in a queue. Selecting the right method helps you balance workload, reward agent availability, and support predictable or capacity-based routing.

Requirements for using the engagement distribution methods

Table of Contents

How to access engagement distribution settings

To configure engagement distribution:

  1. Sign in to the Zoom web portal as an admin.
  2. In the top-right corner, click your profile picture or initials, then click Admin Center.
  3. In the side menu, click CX Management .
  4. Click Contact Center then Queues.
  5. Select the desired queue.
  6. In the General tab, under Inbound Settings, click the Engagement distribution drop-down menu.
  7. Select the desired distribution method below.

Available distribution methods

Longest idle (Offer-based)

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:

TimeEventTimer / Routing Result
10:00Agent A is offered (ringed) a callTimer resets for Agent A
10:01Agent B is offered a callTimer resets for Agent B
10:05Next engagement arrivesRoutes to Agent A because A’s offer was earlier

Longest idle (Offer-based) for this queue

This is the same logic as Longest Idle (Offer-based) but only considers engagements handled in this specific queue.

Longest Idle (Post-engagement)

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:

TimeEventTimer / Routing Result
10:00Agent A ends a callTimer starts for Agent A
10:02Agent B ends a callTimer starts for Agent B
10:04Agent A toggles Ready → Not Ready → ReadyTimer continues running
10:05New call arrivesRoutes to Agent A because A has been idle the longest since the last call ended

Longest Idle (Post-engagement) for this queue

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:

TimeEventTimer / Routing Result
10:00Agent A handles a call in Queue A—
10:01Agent A ends the call in Queue ATimer resets for Agent A in Queue A
10:00Agent B handles a call in Queue B—
10:01Agent B ends the call in Queue BTimer resets for Agent B in Queue B; no effect on Queue A timer
10:05New call arrives in Queue ARoutes to Agent B, who has been idle the longest based on their engagement end time for Queue A

Longest Idle while ready

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:

TimeEventTimer / Routing Result
10:00Agent A switches to ReadyTimer resets for Agent A
10:05Agent B switches to ReadyTimer resets for Agent B
10:10New call arrivesRoutes to Agent A because A has been Ready longer

Longest Idle while ready (for this queue)

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:

TimeEventTimer / Routing Result
10:00Agent A handles a call in Queue A—
10:01Agent A finishes the call in Queue ATimer resets for Agent A in Queue A
10:00Agent B handles a call in Queue B—
10:01Agent B finishes the call in Queue BTimer resets for Agent B in Queue B; no effect on Queue A timer
10:05New call arrives in Queue ARoutes to Agent B because B has been Ready the longest for Queue A

Sequential

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:

EngagementAssigned Agent
Engagement 1Agent 1
Engagement 2Agent 2
Engagement 3Agent 3
Engagement 4Agent 1 (cycle restarts)
Engagement 5Agent 2

Simultaneous

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:

TimeEventResult
10:0020 agents are notified simultaneouslyAll 20 agents receive the offer
10:00:03Agent C accepts firstAgent C receives the engagement

Do Not Distribute

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

Most Available

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:

AgentActive ChatsCapacity Used
Agent A1 of 425%
Agent B2 of 1020%
Next chat—Routes to Agent B (lower capacity)

Common use cases