Campaigns overview
Outbound campaigns let you call a list of contacts with an assistant or squad. You choose the caller, upload or enter the contacts, decide when calls can run, and review the result of every attempt from one campaign.
Use a campaign when the same assistant or squad needs to make many related calls, such as appointment reminders, lead qualification, customer follow-ups, or surveys.
How campaigns work
Every campaign combines four parts:
- Caller: The assistant or squad that handles each conversation.
- Phone number: The outbound-capable number used to place the calls. Vapi Free Numbers are not supported for campaigns.
- Contacts: The people to call and any values used to personalize their conversations.
- Schedule: When dialing starts, when it must stop, and how many calls the campaign can place concurrently.
When the campaign starts, contacts begin in a pending state. Vapi dispatches calls as capacity becomes available, up to the campaign’s Max concurrency and the call concurrency available to your subscription.
Each contact is processed independently. A completed campaign therefore contains a result for each contact rather than one result for the campaign as a whole.
Creating a campaign launches it immediately or schedules it for later; there is no saved draft. After creation, its configuration is fixed:
- You cannot edit the caller, contacts, or schedule. These are locked when the campaign is created.
- Before a scheduled run, you can only cancel. You can cancel a queued or scheduled campaign, but you cannot change it.
A campaign runs once. To run it again, or to change its configuration, duplicate it, review the copied contacts and settings, and launch the duplicate.
Campaign lifecycle
Configure the campaign
Select an outbound phone number and an assistant or squad that can detect and handle voicemail. Choose either the voicemail tool for assistant-driven handling or automatic voicemail detection for provider-based detection that does not depend on the assistant’s prompt; do not configure both on the same assistant. Optionally configure a Server URL, event webhooks, and a pre-dial eligibility check.
Add contacts
Upload a CSV file or enter contacts manually. A campaign can contain up to 10,000 contacts.
Choose when calls run
Start immediately or define a scheduled calling window. The Dashboard supports scheduling a campaign up to seven days in advance.
Personalize calls with contact data
Every contact needs a phone number. You can also provide a name and additional values that the assistant or squad uses as dynamic variables.
For example, this CSV provides name, appointment_date, and location for each contact:
You can reference the values in an assistant prompt:
The number and name columns have dedicated contact fields. Vapi also makes name and every additional populated column available to the caller as a variable. Empty cells are omitted for that contact.
Control maximum call concurrency
Max concurrency limits how many calls this campaign can have active at once. It does not reserve capacity exclusively for the campaign or increase your subscription’s total concurrency.
For example, if the campaign limit is 10 but only four subscription concurrency slots are available, the campaign can start up to four calls. Calls from every organization in the subscription use the same pool of concurrency slots.
Calls that cannot start immediately wait for capacity during the campaign’s execution window. Review call concurrency before launching a high-volume campaign. To add more simultaneous capacity to the subscription, purchase additional call lines.
Review campaign results
The campaign detail page remains available after the campaign is completed. Its summary shows:
- Audience: Every contact added to the campaign, including contacts that were skipped or failed.
- Remaining calls: Contacts that are still pending or dispatched and have not reached a final status.
- Connected calls: Calls answered by a person.
- Pick up rate: Connected calls divided by calls actually placed. Voicemail does not count as a pickup.

Use Contact status to filter the results by pending, dispatched, completed, failed, skipped, or pre-dial failed. The results table shows the call ID, customer phone number, contact status, call type, ended reason, start time, duration, and cost.
Contacts that were skipped or failed before dialing do not have a call ID or call details. When a call ID is present, select the row to open the call record and review its transcript, recording, analysis, and ended reason with the rest of your call logs.