Skip to main content

Overview

Every scheduled outbound call — whether you created it in the New Call modal, launched it from a batch, or triggered it from an automation — is dialled by the Voxworks dispatch engine. Dispatch is the short journey between “this call is due” and “this call is ringing”: the engine picks the call up as its scheduled time arrives, checks that your team has a free calling slot, and hands it to the calling infrastructure. Most of the time this takes seconds and you never think about it. This page explains what happens when you do need to think about it: how calls are claimed for dialling, what the dispatch status messages mean, why a call can show as delayed, and which failures retry themselves versus which need you to act. For the full list of call statuses, end reasons, and outcomes, see Call Statuses, End Reasons & Outcomes — this page covers only the dispatch leg of the journey.

The dispatch window

A scheduled call doesn’t wait until the exact second of its scheduled time. It enters the dispatch queue about two minutes before it is due, and the engine then dials it as soon as your team has capacity. In practice this means calls connect at or very slightly before their scheduled time rather than late. While a call is still in the future, its dispatch status shows a countdown to the moment it will enter the queue:
  • More than about two hours out, the status simply reads Scheduled.
  • Between two hours and ten minutes out, the countdown steps down in roughly five-minute increments — for example Will enter dispatch queue in ~25 min.
  • Inside the final ten minutes, it counts down minute by minute.
The countdown refreshes about once a minute, so don’t worry if it appears to skip a step.

Queue order

When several calls are due at once, the queue is worked highest-priority account first, then earliest scheduled time first within each account. Priority is an account-level setting managed by Voxworks — see Priority tiers below.

Claiming: Scheduled → Queued → In Progress

When the engine picks a call up, it claims it atomically: the call’s status moves from Scheduled to Queued, and only then is the dial started, after which the call becomes In Progress. Claiming is what makes cancellation race-free:
  • If you cancel a call (or pause its batch) before the claim lands, your action always wins — the call will not dial.
  • Once a call has been claimed and shows Queued, dialling is already underway and it can no longer be cancelled. The Queued state normally lasts only a moment.
Batch calls follow two extra rules at dispatch time:
  • Calls belonging to a paused batch are held — they stay Scheduled, untouched, and are reconsidered as soon as you click Resume Scheduler. See Batch Scheduling.
  • Calls belonging to a cancelled batch are never dialled — any stragglers the cancellation missed are swept to Cancelled by the dispatch engine itself.

Dispatch status messages

Alongside its main status, every scheduled call carries a short dispatch status — a plain-text note recording exactly where it is in the dispatch process. Dispatch statuses are stored on the call record and are available through the API as the call object’s dispatch_status field.

Concurrency slots and rate limits

Two account-level limits govern how quickly your scheduled calls dispatch:
  • Concurrent calls — how many of your calls can be live at the same time. Your plan lists a concurrent-call figure on its plan card under Settings → Billing (see Plans, Tiers & Feature Gates), but the limit actually enforced against your account comes from your priority tier — see Priority tiers below. When every slot is busy, the next due call shows DELAYED, concurrency limited and dispatches the moment a slot frees.
  • Hourly calling rate — how many outbound calls your team can start per hour. Calls in progress count towards the rate alongside recently completed calls. When the rate is reached, due calls show DELAYED, rate limited and dispatch as the hourly window rolls forward.
Three things worth knowing about how these limits behave:
  • Delays are queues, not failures. A delayed call is never dropped — it keeps its place and dispatches automatically the moment capacity frees. You never need to reschedule a delayed call.
  • They apply to scheduled outbound calls only. Inbound calls are answered immediately, and the platform reserves dedicated capacity for inbound, web, and test calls, so a busy outbound queue never blocks your AI Receptionist from picking up.
  • Voxworks keeps queues moving. When the wider platform has spare capacity, delayed calls may be dispatched ahead of the strict limit rather than left waiting — so you may occasionally see slightly more simultaneous calls than your slot count.

Priority tiers

Underneath your plan, each account carries a priority tier that sets its hourly calling rate, its concurrency allowance, and its place in the dispatch queue when the platform is busy. Tiers are set on the account by Voxworks and have no in-app control. If you’re planning a large campaign and need higher call concurrency or faster dispatch rates, speak to the Voxworks team for further custom configuration.

Delay warnings

You don’t have to watch the queue to know a call is waiting:
  • The call’s dispatch status updates in place — DELAYED, rate limited or DELAYED, concurrency limited — and keeps updating as the queue moves.
  • Voxworks raises Dispatch delays as an in-app notification event. You can mute it (or unmute it) under Settings → Notifications, alongside events like Call completed and Batch started. See Team Settings & Notifications — notifications are currently in beta, available to selected invites only.
Occasional delay warnings during a busy batch are normal and resolve themselves. Persistent delays across every batch you run are the signal that your team has outgrown its current capacity — see Priority tiers above.

Transient vs permanent failures

Dispatch distinguishes sharply between problems that will fix themselves and problems that won’t:
  • Transient failures retry automatically. If a dispatch attempt fails partway — a momentary network fault, a busy downstream service — the claim is released, the call returns to Scheduled with the dispatch status dispatch failed, and the engine retries it on its next pass, usually within seconds. You don’t need to do anything, and the call keeps its scheduled time.
  • Permanent failures are marked Failed. If the call can never succeed as configured — most commonly because no outbound number is set up for the account — it is marked Failed with the dispatch status Failed to dispatch: followed by the reason. These calls are not retried: fix the underlying cause (for example, add a number under Numbers & Routing), then schedule a fresh call.
Note this covers failures before the call connects. What happens when a dialled call goes unanswered, hits voicemail, or drops out is covered on Call Statuses, End Reasons & Outcomes, and automatic retries for batch calls are covered in Calling Rules.

Next Steps