Pacing a predictive dialer on Twilio Flex
Every outbound dialer answers one question, many times a minute: how many numbers should we dial right now? Dial too few and agents sit idle listening to ringing. Dial too many and a customer says "hello" to silence because no agent is free.
Twilio provides the building blocks: voice calls, answering machine detection (AMD), task routing and Flex. It does not decide how many calls to place. This post explains how the Floor Walker dialer makes that decision, and what it means for the people running a campaign and the customers it calls.
Who waits: four dialing modes
Each mode is a choice about who waits: an agent listening to ringing, or a customer who answered.
| Mode | Rule | Who waits |
|---|---|---|
| Preview | The agent sees the lead, then dials | The agent |
| Progressive | One call per free agent | The agent |
| Power | Dials ahead for free agents, minus a safety margin | Sometimes the customer |
| Predictive | Like power, plus agents about to finish a call | Sometimes the customer |
Progressive is the default. Power and predictive raise agent utilization by dialing ahead, and accept that a customer occasionally answers when no agent is free.
Agent first or customer first
The mode also decides who is put on the line first.
Agent first (preview, progressive, and callbacks an agent dials). The dialer reserves a free agent, puts them on the line, and only then dials the customer. The customer hears a person right after "hello": in our live test the silence was about 0.3 seconds, against about 3.2 seconds customer first. It also closes a gap: while a customer's phone rings, an agent who is only expected to take the call still looks free to Flex, and another call can take them. Agent first holds the agent from the start. The cost is agent time: the agent listens to every ring, and each dial uses two calls.
Customer first (power and predictive). The customer is dialed first; when a person answers, the call goes to the first free agent on the campaign. Because these modes open more lines than there are free agents, they cannot hold an agent for every line.
How power and predictive decide how many to dial
Every second, and right after an agent frees up, the dialer works out for each campaign how many new calls to place. Due callbacks take that budget first; regular leads get the rest. Three things go into it:
- Expected answers. How many people are likely to answer the calls already ringing, from the campaign's own answer rate and how long its customers take to pick up, both learned from its recent calls.
- Free and soon-free agents. Power dials only for 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. That forecast is the whole difference between the two.
- Ramp-up. A campaign that starts or resumes runs as progressive for a minute, then ramps up over three, so answers don't arrive in one wave.
A safety margin measured in agents
The dialer never dials for every agent it expects to be free. It keeps a safety margin, counted in agents, and adjusts it continuously.
We count it in agents rather than as an overdial ratio because the risk behaves that way: with 50 agents a few extra answers almost always find someone; with 12 they collide. It starts at about a quarter of the team (at least one agent, at most six):
| Situation | What the dialer does |
|---|---|
| Recent answered calls waited longer than the target allows | Raises the margin: dials less |
| Waits stay well under the target | Lowers the margin a little: dials more |
| Waits exceed four times the target | Safety breaker: raises the margin, runs the campaign as progressive for five minutes and alerts supervisors |
What counts as a missed wait
The margin steers by the campaign's missed-wait target, 3% by default: the share of answered calls that waited longer than normal for an agent, hung up while waiting, or reached the hold limit.
"Longer than normal" matters. Even with a free agent, connecting a customer to an agent working in a browser takes a few seconds, about 3.5 in our live measurements. That is not a sign of too few agents, so the dialer learns each campaign's normal connect time, adds two seconds of grace, and counts a miss only beyond that.
3% also appears in some regulators' rules for predictive dialing, but their definitions of an abandoned call differ from country to country and from ours. The target is a campaign setting; confirm the rules for your campaigns with counsel.
Hold, don't hang up
Some dialers hang up on a customer who answers when no agent is free. Ours does not: someone you called is better served by a short, explained wait.
| Time after "hello" | What the customer hears |
|---|---|
| Up to the normal connect time | Silence. Most customers are connected here |
| Plus two seconds | Still silence: a message cut off by the agent's "hello" sounds like a fault |
| After that | A message saying who is calling and that an agent is joining, then hold music. Without music the message repeats, so there is never dead air |
| 90 seconds | An apology and a promise to call back. The callback is booked automatically and the attempt is not counted |
The messages and the music are set per campaign.
Why small teams should use progressive
Dialing ahead works because, across many agents, someone is almost always about to become free. Below 12 active agents, power and predictive fall back to progressive on their own: in our simulator, holding a 3% target with 10 agents needed a margin of about 40% of the team. The real benefit starts at around 15 agents.
Answering machines
AMD is set per campaign, and it trades agent time against the customer's first seconds:
- Synchronous AMD (the default) decides human or machine before the call is connected. Voicemail never reaches agents, at the cost of about two seconds of extra silence for a real person.
- Asynchronous AMD connects at once and drops machines when the result arrives. No extra silence, but slow-to-detect voicemail reaches an agent, flagged with a warning.
AMD is off on agent-first calls: the agent hears the greeting and can leave a message.
Calling windows, calendars and do-not-call
Every number is checked when the dialer picks the lead and again at dial time. Two questions decide whether it may be called:
- Calling windows: is it too late to call this person? Evaluated in the lead's own time zone.
- The contact center calendar: are we open? Weekly hours, holidays and special events, from the same calendar your IVR uses for opening hours.
A lead is called only when both are open; otherwise it is postponed, not dropped, to the next moment when both are. A campaign whose calendar has never loaded does not dial at all. Do-not-call lists and attempt limits are checked in the same pass.
The call in Flex
A customer who answers reaches the agent as an ordinary Flex voice task in the campaign's own queue, so hold, transfer and call recording work as usual. The task is accepted automatically, and the agent sees a lead card with the customer's name, number, campaign and the lead details your administrator chose to show.
After the call the agent picks a disposition: success, closed, try again later, callback (for themselves or anyone on the team), do not call, or invalid number. It decides what happens to the lead next. Calls that rang out or were busy never reach an agent; they are retried by the campaign's rules.
One detail matters for pacing: the dialer only dials for free agents, so an agent who leaves a task in wrap-up quietly drops out of the campaign. An optional automatic wrap-up closes the task a set number of seconds after the disposition is saved.
What the simulator shows
We test pacing in a simulator with virtual agents and phone lines: 120-minute runs, synchronous AMD, a 3% target, a connect time of 3.5 seconds give or take 0.7, and a 25% chance that a call reaches a person. Average agent utilization over two runs:
| Team | Progressive | Predictive |
|---|---|---|
| 20 agents | 73.9% | 79.1% |
| 50 agents | 73.0% | 89.1% |
In those runs predictive held the missed-wait rate between 2.9% and 3.2%, and no customer reached the 90-second limit. These are simulator results, not production traffic; the estimates settle over a campaign's first few hundred real calls.
FAQ
Does Twilio Flex include a predictive dialer?
No. Flex lets agents place outbound calls, but pacing, answering machine handling, retries and calling-hour rules have to be built on top of Twilio or added with a product such as Floor Walker.
How does a predictive dialer keep the abandon rate under 3%?
It dials ahead from answer rates learned per campaign, keeps a safety margin of agents, and adjusts that margin by watching how many answered customers waited too long. If waits overshoot badly, it falls back to progressive for a few minutes.
When should I use progressive instead of predictive dialing?
With small teams (below about 12 to 15 agents), or when every customer must reach a person right after "hello". Predictive pays off for larger teams with low contact rates.
Floor Walker adds a predictive dialer, per-task screen recording, a CRM and live and historical reporting to Twilio Flex, hosted by us or installed in your own cloud or data center. Read the dialer docs at https://floorwalker.dev/docs/dialer.
Book a demo: hello@floorwalker.dev