Campaigns: bulk outbound calls at scale
Run outbound voice campaigns end-to-end — CSV upload, concurrency, retries, real-time monitoring, post-call data extraction. From setup to first live call in 30 minutes.
Updated May 6, 2026
Campaigns are how you turn one voice agent into many simultaneous calls. The agent stays the same; the campaign primitive handles the queue, concurrency, retries, and reporting.
Anatomy of a campaign
Every campaign has four moving parts:
- An agent — what the AI says on the call (configured separately)
- A from-number — the phone number you're dialing from
- A contact list — CSV uploaded once or appended over time
- Run settings — concurrency, retry rules, time-window restrictions
You configure each piece once; the platform runs the campaign.
CSV format
phone_number,name,company
+905551234567,Ahmet Yılmaz,ABC Ltd
+905559876543,Mehmet Demir,XYZ Corp
+14155550123,Sarah Johnson,Acme Inc
Required: phone_number in E.164 format (with + and country code).
Optional: any column you want available as a dynamic_variable during
the call. The agent's prompt can interpolate them — {{name}} becomes
"Ahmet" for the first row, "Mehmet" for the second.
Max file size: 5 MB. For larger lists, split and upload in batches.
Concurrency
The concurrency setting controls how many calls run simultaneously.
Higher numbers finish the campaign faster but require:
- enough provisioned phone-number capacity for outbound
- compute headroom (a 50-concurrent campaign uses 50 voice-agent sessions)
- carrier rate limits, which differ per provider
Practical defaults: start at 10, raise to 25–50 once you've watched a real campaign and seen the call-completion stats are clean.
Retry rules
Each contact has a status: pending, dialing, completed, failed,
busy, no-answer. Retries apply to failed, busy, and no-answer:
retry_count— how many additional attempts (default 2)retry_delay_minutes— wait between attempts (default 30)
A contact is final once it's completed or once retries are exhausted.
Time-window restrictions
For B2C campaigns, set a window so the system never dials outside acceptable hours:
{
"allowed_hours": { "start": "09:00", "end": "20:00" },
"timezone": "Europe/Istanbul",
"skip_weekends": true
}
The campaign respects this even during retries — a number that errors at 8pm waits until 9am the next day.
Monitoring
While the campaign is running, the dashboard shows:
- queue size and progress bar
- live counts: completed / failed / busy / no-answer
- average duration, total cost
- per-contact transcript and recording links as they finish
You can pause, resume, or stop at any time from the same view.
Post-call extraction
Combine campaigns with post-call data extraction to turn each call into
structured rows. Define fields once on the agent (interest_level,
callback_requested, customer_objection), and every campaign call
returns a JSON record with those fields filled in. See
Post-Call Actions.
What's next
- Schedules — single scheduled calls instead of bulk
- Phone Numbers — provisioning numbers to dial from
- Post-Call Actions — wire results into your CRM
Frequently asked
Q.How big can a campaign be?
There's no upper limit on contacts. Practical limits come from your concurrency setting and your phone-number capacity. A typical setup with 20 concurrent calls clears 1,000 contacts in about 90 minutes.
Q.What CSV format does Call2Me expect?
One column phone_number is required (E.164 format like +905551234567). Optional columns: name, company, email, plus any custom field you reference in dynamic_variables.
Q.What happens to busy or failed numbers?
The campaign retries each failed contact based on your retry rules — count and delay between attempts. Final status appears in the Results tab once retries are exhausted.
Q.Can I pause or stop a campaign mid-run?
Yes. Pause keeps the campaign queued; new calls don't start until you resume. Stop cancels everything in flight.