Skip to main content

Overview

TalkifAI Batch Calling lets you run large-scale automated outbound call campaigns. Upload a CSV with contacts, select an agent, and the system automatically calls all contacts using your voice agent. Best for:
  • Payment collection reminders
  • Appointment confirmations
  • Customer satisfaction surveys
  • Lead follow-ups
  • Renewal notifications
  • Event reminders
Scale: Supports up to 10,000 contacts per batch with automatic retry and concurrency control.

How It Works


URL: /batch-calls Access: Studio → Batch Calls (sidebar)
Permission Required: Owners and Admins can create batch jobs. Members can view batches in their organization.

UI Overview

The Batch Calls page has two tabs:

Tab 1: Create New

  • CSV file upload
  • Batch configuration form
  • Scheduling options

Tab 2: Your Batches

  • List of all batch campaigns
  • Status filtering
  • Search and pagination
  • Batch actions (view, pause, resume, cancel, delete)

Creating a Batch Campaign

Step 1: Navigate to Batch Calls

  1. Go to Studio → Batch Calls (sidebar)
  2. Click Create New tab (default)

Step 2: Upload CSV File

CSV Requirements: CSV Template:
Upload Process:
  1. Click Upload CSV button or drag & drop file
  2. System validates:
    • File type (.csv)
    • Required phone column
    • Phone number format
    • Duplicate detection
    • Empty rows
  3. Shows validation report:
    • ✅ Total rows
    • ✅ Valid rows
    • ⚠️ Invalid rows (with reasons)
    • ⚠️ Duplicate phones
Validation Checks:

Step 3: Configure Batch Settings

Batch create form
Form Fields: Agent Selection:
  • Dropdown shows all voice agents in your organization
  • Shows agent name and architecture
  • Only Pipeline/Realtime agents (text agents can’t make calls)
From Phone Number:
  • Must be a registered phone number in your organization
  • Must have outbound trunk configured
  • Dropdown shows all available numbers
Concurrency Settings:
  • Default: 5 concurrent calls
  • Range: 1-50
  • Higher = faster completion but more load
  • Recommended: 5-10 for most campaigns
Retry Settings:
  • Default: 3 attempts
  • Retryable statuses: no_answer, busy, timeout
  • Retry delays: 5 min (attempt 2), 30 min (attempt 3)

Step 4: Schedule (Optional)

Immediate Start:
  • Leave “Schedule Start Time” empty
  • Batch starts immediately after creation
Scheduled Start:
  1. Click calendar icon
  2. Select date from calendar
  3. Select time (HH:MM format)
  4. Select timezone
  5. System converts to UTC
Calling Hours Compliance: Ensure scheduled times comply with local regulations (e.g., TCPA in US prohibits calls before 8 AM or after 9 PM local time).

Step 5: Review & Create

Review Checklist:
  • ✅ CSV validated successfully
  • ✅ Batch name entered
  • ✅ Agent selected
  • ✅ From number selected
  • ✅ Concurrency set (default: 5)
  • ✅ Retry attempts set (default: 3)
  • ✅ Schedule time set (or immediate)
Click “Create & Launch Batch”:
  • Button shows loading spinner
  • Backend validates all data
  • Creates batch job in database
  • Enqueues contacts in Redis
  • Redirects to batch detail page
Success Response:

Batch Statuses


Viewing Batch Details

URL: /batch-calls/{batchId} Access: Click any batch in the list OR go directly via URL

Batch Detail Page Layout

Section 1: Overview Cards

Batch detail page
4 Summary Cards:
  1. Total Contacts
    • Total number in batch
    • Icon: Users
  2. Successful Calls
    • Completed successfully
    • Success rate percentage
    • Icon: CheckCircle
  3. Failed Calls
    • Failed after all retries
    • Failure rate percentage
    • Icon: XCircle
  4. Processing
    • Currently in progress
    • Pending + Running
    • Icon: Clock

Section 2: Batch Information

Details Card:

Section 3: Contacts List

Table Columns: Contact Statuses: Pagination:
  • Default: 50 contacts per page
  • Options: 25, 50, 100
  • Shows: “Showing X of Y contacts”
Search:
  • Search by phone number
  • Search by name
  • Search by status
Filter:
  • Filter by status
  • Filter by attempt count
  • Filter by date range

Managing Batches

Batch Actions

Available actions depend on batch status:
Export Feature: Export functionality is available for Completed and Failed batches. Export options include CSV (all contacts, successful only, or failed only).

Pause a Batch

When: Temporarily stop calling (e.g., outside business hours) How:
  1. Go to batch detail page
  2. Click Actions (⋮) → Pause
  3. Confirm in dialog
  4. Status changes to “Paused”
  5. Running calls complete normally
  6. Pending calls wait in queue
Effect:
  • No new calls initiated
  • Contacts in queue preserved
  • Can resume later

Resume a Batch

When: Continue a paused batch How:
  1. Go to batch detail page
  2. Click Actions (⋮) → Resume
  3. Confirm in dialog
  4. Status changes to “Running”
  5. Queue processing resumes

Cancel a Batch

When: Stop batch permanently How:
  1. Go to batch detail page
  2. Click Actions (⋮) → Cancel
  3. Confirm in dialog (“This action cannot be undone”)
  4. Status changes to “Cancelled”
  5. Running calls complete
  6. Pending calls not processed
Effect:
  • Irreversible action
  • Contacts in queue discarded
  • Can export results before cancelling

Delete a Batch

When: Remove batch from system How:
  1. Go to batch list page
  2. Click Actions (⋮) → Delete
  3. Confirm in dialog
  4. Batch and all contacts deleted
Permanent Deletion: This action cannot be undone. Export data first if you need to keep records.

Reschedule a Batch

When: Change scheduled start time How:
  1. Go to batch detail page
  2. Click Actions (⋮) → Reschedule
  3. Opens reschedule dialog:
    • Select new date
    • Select new time
    • Select timezone
  4. Click Confirm
  5. Scheduled time updated
Restrictions:
  • Only for Pending/Scheduled batches
  • Cannot reschedule running batches
  • New time must be in future
API Endpoint:
Response:

Export Batch

When: Download batch results for analysis or reporting How:
  1. Go to batch detail page (Completed or Failed status)
  2. Click Export button
  3. Select export options:
    • Format: CSV
    • Filter: All / Successful / Failed
  4. Download CSV file
Export Includes:
  • Contact name
  • Phone number
  • Call status
  • Number of attempts
  • Call duration
  • Failure reason (if failed)
  • Call timestamp
API Endpoint:
Response: CSV file download
Export Availability: Export is only available for batches with Completed or Failed status. Running batches must complete before export.

Retry Behavior

Automatic Retry Logic

Failed calls are automatically retried:

Non-Retryable Failures

These statuses are NOT retried:

Retry Queue

How it works:
  1. Failed contact added to retry queue
  2. Status changes to “Queued”
  3. Shows “Next Retry At” time
  4. Worker picks up at scheduled time
  5. Attempts counter increments
View Retry Queue:
  • Filter contacts by status = “Queued”
  • Shows retry attempt number
  • Shows scheduled retry time

Concurrency Control

Two-Level Concurrency

TalkifAI uses sophisticated concurrency management:

Example Scenario

Setup:
  • Org limit: 5 concurrent calls
  • Batch A limit: 5 concurrent
  • Batch B limit: 5 concurrent
At any moment:
  • Max 5 calls total across both batches
  • NOT 10 calls (5+5)
Behavior:
  • If Batch A is using 3 calls
  • Batch B can only use 2 calls
  • Batch B waits if it needs more

Adjusting Concurrency

Increase for Faster Completion:
Decrease for Stability:

Cost Estimation

Pricing Model

Per-Call Pricing:
  • Base cost: $0.05/minute (infrastructure)
  • LLM cost: $0.015/minute (GPT-4o-mini)
  • STT cost: $0.003/minute (Deepgram)
  • TTS cost: $0.005/minute (Cartesia)
Estimated Total: ~$0.073/minute

Cost Calculator

Formula:
In UI:
  • Shows estimated cost before creation
  • Based on average 3-minute calls
  • Updates as batch progresses
  • Shows actual cost in analytics

Analytics & Reporting

Real-Time Metrics

Live Dashboard:
  • Calls completed (real-time counter)
  • Success rate percentage
  • Average call duration
  • Cost incurred so far
  • Estimated completion time

Post-Completion Reports

Summary Statistics:
  • Total contacts
  • Successful calls
  • Failed calls
  • Success rate
  • Average duration
  • Total cost
  • Retry statistics
Export Options:
  • CSV export (all contacts)
  • CSV export (successful only)
  • CSV export (failed only)
  • PDF report (summary)

Contact-Level Analytics

Per-Contact Data:
  • Call start time
  • Call end time
  • Duration
  • Number of attempts
  • Final status
  • Failure reason (if failed)
  • Recording URL (if enabled)
  • Transcript (if enabled)

Best Practices

Start with Test Batch

Before running 10,000 calls, test with 10-20 contacts to verify agent behavior and CSV format.

Respect Calling Hours

Schedule calls during business hours (9 AM - 6 PM local time). Use timezone-aware scheduling.

Optimize Concurrency

Start with 5 concurrent calls. Increase to 10-20 for large batches. Monitor system load.

Clean Your Data

Remove duplicates, validate phone numbers, and update invalid contacts before uploading.

Monitor Failed Calls

Check failure reasons. High invalid_number rate indicates data quality issues.

Use Descriptive Names

Name batches clearly: “2024-01-Payment-Reminders” not “Test Batch 1”.

Troubleshooting

Error: “CSV must have ‘phone’ column”Solution:
  1. Check first row contains headers
  2. Ensure one column is named phone (case-insensitive)
  3. Verify phone numbers are in E.164 format (+1234567890)
  4. Remove any empty rows or columns
Template:
Status: Stuck in “Pending”Check:
  1. Organization has available credits
  2. From phone number has outbound trunk configured
  3. Agent is active and uses Pipeline/Realtime architecture
  4. Concurrency limit not exceeded by other batches
Fix: Check batch detail page for error messages
Problem: >20% calls failingCommon Causes:
  • Invalid phone numbers → Clean your data
  • Carrier blocking → Rotate phone numbers
  • No answers → Adjust calling hours
  • Agent errors → Check agent configuration
Solution: Export failed contacts, review failure reasons, fix data, create new batch
Problem: Taking longer than estimatedSolutions:
  1. Increase concurrent call limit (10-20)
  2. Check organization concurrency limit
  3. Verify no other batches competing for capacity
  4. Check system health (Redis, workers)
Status: Shows “Queued” but not callingCheck:
  1. Batch status is “Running” (not “Paused”)
  2. Concurrency limit not maxed out
  3. Redis worker is running
  4. Retry time hasn’t passed yet
Fix: Refresh page, check batch status, contact support if persists

API Reference

Create Batch

Get Batch List

Get Batch Detail

Pause Batch

Resume Batch

Cancel Batch

Delete Batch

Reschedule Batch

Parameters:
  • scheduledStartTime — ISO 8601 datetime (e.g., 2024-01-20T14:00:00)
  • timezone — IANA timezone (e.g., America/New_York)
Response:

Export Batch

Response: CSV file download