Outbound Campaigns
A campaign is a batch of automated outbound calls powered by an AI agent. Define a list of contacts, assign an agent, set a schedule, and start the campaign. The platform dials each contact, runs the agent conversation, and records the results.
Use campaigns for sales outreach, appointment reminders, surveys, follow-ups, collections, and any scenario where you need to call a list of people with a consistent message.
Campaign Lifecycle
A campaign moves through these statuses:
| Status | Description |
|---|---|
draft | Created but not yet fully configured — no call list or schedule set |
active | Running and actively dialing contacts |
paused | Temporarily stopped — active calls finish but no new calls are initiated |
completed | All contacts have been processed |
failed | An error stopped the campaign |
The typical flow is: draft -> active -> completed, with optional pause/resume cycles in between.
Code
Creating a Campaign
Via API
Code
Code
Code
Configure Schedule and Settings
After creation, attach a call list, schedule, and dialing configuration:
Code
Call Lists
A call list is a reusable group of contacts. Each campaign dials the contacts in its assigned list.
Create a Call List
Code
Code
Code
Add a Contact
Code
Bulk Import via CSV
Upload a CSV file with up to 10,000 contacts per import (max 10 MB file size):
Code
The CSV should include a header row. Required column: phone_number. Optional columns: first_name, last_name, email, company, subject, city, country, industry, profile, and any custom fields.
Example CSV:
Code
Contacts
Each contact has a phone number and optional variables that the agent can use during the conversation.
Contact Fields
| Field | Required | Description |
|---|---|---|
phone_number | Yes | E.164 format |
first_name | No | Contact's first name |
last_name | No | Contact's last name |
email | No | Email address |
company | No | Company name |
subject | No | Call reason or topic |
city | No | City |
country | No | Country |
industry | No | Industry sector |
profile | No | Contact notes |
custom_data | No | JSON object with any additional fields |
Contact Status
| Status | Description |
|---|---|
active | Available to be called |
called | Has been called |
dnc | Do Not Call — excluded from dialing |
invalid | Invalid phone number — skipped |
Dynamic Variables
Contact data is injected into the agent's system prompt at call time as template variables. This lets a single agent configuration handle personalized conversations for each contact.
Available template variables:
| Variable | Source |
|---|---|
{{first_name}} | Contact first_name field |
{{last_name}} | Contact last_name field |
{{phone_number}} | Contact phone_number field |
{{email}} | Contact email field |
{{company}} | Contact company field |
{{subject}} | Contact subject field |
{{city}} | Contact city field |
{{country}} | Contact country field |
{{industry}} | Contact industry field |
{{contact_data.field}} | Any key from custom_data |
Example Prompt Using Variables
Code
Campaign Execution
When a campaign is active:
- The scheduler checks whether the current time is within the configured calling hours.
- The next pending contact is selected from the call list.
- Concurrency limits are checked — if
max_concurrent_callsis reached, the system waits. - The agent dials the contact.
- The agent handles the conversation using the contact's variables.
- The contact's status is updated based on the call outcome.
- If the call failed and retry attempts remain, a retry is scheduled.
- The system moves to the next contact.
Retry Logic
Configure how failed calls are retried:
Code
After all retry attempts are exhausted, the contact is marked with its final status.
Limits
| Limit | Value |
|---|---|
| Contacts per bulk CSV import | 10,000 |
| Max CSV file size | 10 MB |
| Max concurrent calls per campaign | Depends on plan |
Compliance
Do Not Call (DNC) — Scrub your contact lists against national and state DNC registries before importing. You are responsible for DNC compliance.
Calling hours — Configure calling windows in the campaign schedule to comply with local regulations (e.g., FTC rules require calls between 8 AM and 9 PM local time in the US).
Caller ID — Ensure your outbound number is properly registered and compliant with STIR/SHAKEN attestation for US calls. Neuratel handles attestation for numbers provisioned through the platform.
API Reference
Code
Next Steps
- Agents — Configure an agent for outbound conversations
- Phone Numbers — Use numbers as outbound caller ID
- Analytics — Track campaign performance and call outcomes
