How it works
- The system picks a batch of pending contacts from the queue (up to the configured max lines)
- Calls are placed with a stagger delay between each (e.g. 500ms apart) to avoid all phones ringing at the exact same moment
- The system polls
GET /v1/calls/parallel/{groupId}every 500ms to check call status - When someone answers, they become the winner — you’re connected
- All other calls in the batch are terminated via
POST /v1/calls/parallel/{groupId}/terminate - After your call ends, the next batch is dialed
Enabling parallel dialing
Two ways:- Home screen: set Calling mode to Parallel / Power Dialer before starting a session
- Queue settings modal: toggle Parallel dialing on during an active queue
- Keyboard shortcut: press
Cmd+Shift+M/Ctrl+Shift+Mto toggle between single and parallel
Parallel settings
| Setting | Default | Description |
|---|---|---|
| Max lines | 3 | How many contacts to dial simultaneously per batch (configurable 2-5) |
| Cooldown | 2000ms | Wait time between batches when no one answers |
| Stagger | 500ms | Delay between each call in a batch |
Strategy profiles
The backend uses a profile registry to control parallel dialing behavior based on context:| Profile | Fanout | Stagger | AMD Policy | When used |
|---|---|---|---|---|
| balanced | 3 | 500ms | human-or-unknown | Default for most queues |
| conservative | 2 | 800ms | human-only | VIP segments or queues with “vip” in the name |
| aggressive | 5 | 300ms | human-or-unknown | Low answer rate queues (below 12%) |
- Fanout — how many calls to place per batch
- Stagger — delay between each call in the batch
- AMD policy — answering machine detection.
human-onlyonly connects you to live humans.human-or-unknownalso connects when the system can’t determine if it’s a human or machine. - Termination — all profiles use
winner-take-all: first answer wins, all others are dropped
Parallel call status
Each call in a batch has its own status, visible in the queue panel:| Status | Icon | Description |
|---|---|---|
dialing | — | Call is being placed |
ringing | 📞 | Recipient’s phone is ringing |
in-progress | ✅ | Connected (this is the winner) |
completed | — | Call ended |
failed | — | Call failed to connect |
terminated | — | Hung up because another call won |
voicemail | — | Reached voicemail, terminated |
Parallel outcomes
| Outcome | Description |
|---|---|
pending | Call hasn’t started yet |
winner | This contact answered first — connected to you |
terminated | Hung up because another contact answered first |
voicemail | Reached voicemail |
no-answer | Didn’t answer within the timeout |
failed | Call failed (network error, invalid number) |
Batch progression
Canceling a parallel batch
Click Cancel during an active batch. All calls in the current batch are terminated via the/terminate endpoint and the queue pauses.
Local presence with parallel dialing
When local presence is enabled, each call in a batch can use a different caller ID based on the recipient’s area code. Contact A in Austin sees a512 number, Contact B in Houston sees a 713 number — all in the same batch.
Next steps
- Queue Management — configure the queue that feeds parallel dialing
- Use Parallel Dialing — step-by-step guide