Skip to main content

Pacing: how many to dial

Every second, and right after an agent frees up, the pacer decides for each campaign how many new lines to open. Due callbacks take that budget first; regular leads get the rest.

In progressive (and for preview callbacks) the answer is simple: one line per free agent. Power and predictive dial ahead, using the model below.

How power and predictive dial ahead​

  • Expected connects. The dialer estimates how many people will answer the calls already in flight, from the campaign's own answer rate and how long people take to answer. Both are learned per campaign from its recent calls.
  • Free and "soon free" agents. Power dials for the agents who are free now. Predictive also counts agents expected to finish their call and wrap-up within the time it takes to reach a customer; this is what sets it apart from power.
  • Ramp-up. For the first minute after start the campaign runs as progressive, then ramps up over three minutes. Without it, the first wave of calls causes a burst of waits.

Safety margin​

The dialer keeps a safety margin measured in agents: it dials for fewer agents than it expects to be free, so pacing scales with team size on its own. The margin starts at about a quarter of the team (at least 1, at most 6) and is adjusted continuously:

SituationWhat the dialer does
Recent answers waited longer than the target allowsRaises the margin: dials less
Waits stay well under the targetLowers the margin a little: dials more
The wait rate exceeds 4 times the targetSafety breaker: the margin goes up by 1, the campaign runs progressive for 5 minutes and supervisors get an alert

The target is the campaign's missed-wait target (abandonTargetPct, 3 % by default): the share of answered calls that waited longer than the normal connect time plus waitGraceSec, hung up while waiting, or reached the hold ceiling. The live view shows the current safety margin.

What the simulator shows​

The dialer's pacing runs in a simulator with virtual agents and telephony: 120 minutes, synchronous AMD, 3 % target, connect time 3.5 ± 0.7 s, 25 % chance a human answers.

Agent utilization (average of two runs, seeds 1 and 2):

TeamProgressivePredictive
20 agents73.9 %79.1 %
50 agents73.0 %89.1 %

This is a simulator, not production traffic: the estimates need calibrating after the first few hundred real calls.

ScenarioUtilizationMissed wait targetp95 waitReached ceiling
progressive, 20 agents73.9 / 73.8 %0.4 / 0.4 %4.7 s0
progressive, 50 agents73.1 / 72.8 %0.2 / 0.2 %4.7 s0
power, 20 agents75.5 / 78.7 %3.0 / 2.5 %4.9–5.0 s0
predictive, 20 agents77.5 / 80.7 %2.9 / 3.1 %5.0 s0
predictive, 20 agents, 15 % contact rate78.1 / 76.9 %3.4 / 3.0 %4.8–4.9 s0
predictive, 50 agents89.5 / 88.6 %3.2 / 3.2 %5.0 s0

The two values in a cell are the two seeds. The progressive figures were simulated on the customer-first path. In the product, progressive runs agent-first: the customer does not wait, and the agent's idle time during ringing is already reflected in this utilization.

Limits​

  • maxCallsPerAgent (8 by default): a cap on open lines per available agent, in case the estimates are wrong.
  • maxLines: a hard cap on concurrent calls for the campaign (0 means no cap). The dialer also has an account-wide cap on concurrent calls (50 by default).
  • Twilio CPS (1 call per second per account by default, see Setup): bursts are smoothed and the budget is split between campaigns. The highest priority is served first; campaigns of the same priority split by weight.
  • Agents who fail to accept a reservation ("zombies") are excluded from dialing for a while.
  • Auto wrap-up (autoWrapUp): the task completes itself N seconds after the disposition is saved. Otherwise a task left open silently removes that agent from pacing.