Looking for advanced outbound calling? The new
Campaigns feature provides a full-featured dialer with prospect management, timezone-aware scheduling, DNC compliance, and intelligent dialing controls. Batch Calling remains available for simpler, one-off call lists.
Overview
Batch calling lets you upload a spreadsheet of phone numbers and dynamic variables, then dispatch calls at scale. The system handles concurrency, capacity limits, scheduling, and per-item status tracking.
Your CSV file should include a phone_number column and any dynamic variable columns:
phone_number,customer_name,appointment_date,account_id
+14155551234,John Smith,2026-02-15,ACC-001
+14155555678,Jane Doe,2026-02-16,ACC-002
+14155559012,Bob Wilson,2026-02-17,ACC-003
- First column must be
phone_number
- Additional columns become dynamic variables (injected into the agent’s system prompt)
- Phone format: E.164 recommended (+1XXXXXXXXXX)
Creating a Batch Job
Upload CSV
Go to Batch Calling → Upload and select your CSV file.
Configure the Batch
| Setting | Description |
|---|
| Name | Display name for this batch (e.g., “Feb Appointment Reminders”) |
| Agent | Select the agent that will make the calls |
| Agent Number | Phone number to call from |
| Schedule | Choose “Send Now” or pick a future date/time |
| Timezone | Your local timezone for scheduling |
Review and Launch
- Review the parsed phone numbers and variables
- Click Send Now to start immediately, or Schedule for later
- The batch is sent to the Celery task queue for processing
How Dispatch Works
Concurrency control: The dispatcher checks Redis livekit:active_calls before each call.
If at capacity (MAX_AGENT_SESSIONS), it waits and retries automatically.
Batch Statuses
| Batch Status | Meaning |
|---|
draft | Saved but not submitted |
scheduled | Scheduled for a future time |
running | Currently dispatching calls |
completed | All calls processed |
| Item Status | Meaning |
|---|
pending | Waiting to be called |
calling | Currently in a call |
completed | Call finished successfully |
failed | Call failed (error recorded) |
Monitoring Batch Progress
View real-time progress on the batch details page:
- Total items vs. completed/failed/pending
- Per-item status with call IDs
- Error messages for failed items
- Link to individual call logs for completed calls
You cannot delete a batch that is currently running. Wait for it to complete or manually stop the Celery worker.
For large batches (1000+ numbers), consider scheduling during off-peak hours. The concurrency limit ensures you don’t overwhelm the system, but processing will take longer.