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:
| Situation | What the dialer does |
|---|---|
| Recent answers waited longer than the target allows | Raises the margin: dials less |
| Waits stay well under the target | Lowers the margin a little: dials more |
| The wait rate exceeds 4 times the target | Safety 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):
| Team | Progressive | Predictive |
|---|---|---|
| 20 agents | 73.9 % | 79.1 % |
| 50 agents | 73.0 % | 89.1 % |
This is a simulator, not production traffic: the estimates need calibrating after the first few hundred real calls.
| Scenario | Utilization | Missed wait target | p95 wait | Reached ceiling |
|---|---|---|---|---|
| progressive, 20 agents | 73.9 / 73.8 % | 0.4 / 0.4 % | 4.7 s | 0 |
| progressive, 50 agents | 73.1 / 72.8 % | 0.2 / 0.2 % | 4.7 s | 0 |
| power, 20 agents | 75.5 / 78.7 % | 3.0 / 2.5 % | 4.9–5.0 s | 0 |
| predictive, 20 agents | 77.5 / 80.7 % | 2.9 / 3.1 % | 5.0 s | 0 |
| predictive, 20 agents, 15 % contact rate | 78.1 / 76.9 % | 3.4 / 3.0 % | 4.8–4.9 s | 0 |
| predictive, 50 agents | 89.5 / 88.6 % | 3.2 / 3.2 % | 5.0 s | 0 |
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
priorityis served first; campaigns of the same priority split byweight. - 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.