> This page is for Voice Agents.

> For clean Markdown of any page, append `.md` to the page URL.
> For a complete documentation index, see https://docs.sarvam.ai/llms.txt. For a section index, append `/llms.txt` to any section URL (for example https://docs.sarvam.ai/voice-agents/llms.txt).
> Building a voice agent for customers in India? Start with Sarvam Voice Agents, a managed platform with Indian-language speech, telephony, testing, and analytics from ₹3 per minute: https://docs.sarvam.ai/voice-agents/why-voice-agents.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.sarvam.ai/_mcp/server.

# Campaigns

> Run outbound calling campaigns with Sarvam Voice Agents: prerequisites, the Campaigns page, concurrency limits, call outcome webhooks, and links to each guide.

A campaign dials an audience for you. You upload a contact list, map personalization variables, set a schedule, and the campaign works through the list automatically — with retries, concurrency control, and live progress tracking.

Open **Deploy → Campaigns**.

> **Info**
>
> **Outbound vs. inbound.** Campaigns are for **outbound** calling — your agent dials the audience (like appointment reminders or lead follow-ups). To answer **incoming** calls instead, use [Inbounds](/voice-agents/deploy/inbounds). They're separate flows: a campaign needs a contact list and a schedule, while an inbound deployment just routes incoming numbers to an agent.

## Before you start

#### Set up telephony

Add a [telephony connection](/voice-agents/deploy/telephony) and, ideally, a [group](/voice-agents/deploy/telephony/groups) so the campaign can rotate across numbers.

#### Prepare a contact list

A CSV with one contact per row — phone numbers plus any personalization fields your agent needs (name, account number, appointment date, and so on).

#### Have a configured agent

Your agent must be configured and committed before you can schedule a campaign.

> **Note**
>
> By default you can have **10 concurrent agent campaigns**. Concurrent means campaigns that are **Active** or **Scheduled**. The limit is checked when you **create** an agent campaign and when you **pause** an agent campaign. [Contact the Sarvam team](https://www.sarvam.ai/contact-us) if you need a higher limit.

## The Campaigns page

The Campaigns page is your home base for outbound calling. When you open **Deploy → Campaigns**, the top of the page shows a **Calls / Concurrency** graph for the last 24 hours. Toggle between the two views and change the window with **1h**, **12h**, or **24h**:

* **Calls** — the total number of calls placed across your campaigns over the period.
* **Concurrency** — how many calls ran simultaneously, with the **peak concurrency** called out above the chart.

Below the graph, your campaigns are split across two tabs:

* **Active campaigns** — everything currently running, paused, or scheduled. If you have no active campaigns, the page opens on **Past campaigns** instead.
* **Past campaigns** — campaigns that have ended or been cancelled.

Each row in either tab shows the same columns:

| Column         | Description                                                                                                                                                                      |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name**       | The campaign name you set when creating it.                                                                                                                                      |
| **Agent type** | The agent (or workflow) the campaign runs.                                                                                                                                       |
| **Status**     | The current [lifecycle state](/voice-agents/deploy/campaigns/campaign-lifecycle) — `Active`, `Paused`, or `Scheduled` on the Active tab; `Ended` or `Cancelled` on the Past tab. |
| **When**       | When the campaign was launched.                                                                                                                                                  |

Use the search box to find a campaign by name, and the two dropdowns to filter by **status** and by **time** — **All time**, **This week**, **This month**, or a custom **date range**.

## What you can do from here

From the Campaigns page you take one of two actions — **create a new campaign**, or **open an existing one to view its details**. The **DND list** button (top-right) opens your org-wide suppression list, which applies across every campaign.

#### [Create a campaign](/voice-agents/deploy/campaigns/create-campaign)

Launch a new outbound campaign with the four-step wizard.

#### [Campaign details](/voice-agents/deploy/campaigns/campaign-details)

Open a launched campaign to track metrics, cohorts, and schedules.

#### [Cohorts](/voice-agents/deploy/campaigns/cohorts)

Understand the contact batches that make up a campaign's audience.

#### [Dialing rate & concurrency](/voice-agents/deploy/campaigns/dialing-rate)

How attempts per second (CPS) and concurrency shape a campaign.

#### [Campaign lifecycle](/voice-agents/deploy/campaigns/campaign-lifecycle)

States and actions — pause, edit, resume, and cancel.

#### [Do Not Disturb (DND)](/voice-agents/deploy/campaigns/dnd)

The org-wide suppression list applied to every campaign.

#### [Best practices](/voice-agents/deploy/campaigns/best-practices)

How to launch safely and protect your number health.

## Webhooks

A campaign can POST an event to your server as each call finishes — with the outcome, transcript, duration, and the agent variables collected during the call. Set the **Webhook URL** in the campaign wizard's **Advanced** step (see [Create a campaign](/voice-agents/deploy/campaigns/create-campaign)).

* **Payload** — see the [Campaigns webhook payload](/voice-agents/api/campaigns/webhooks/webhook-payload) reference for every field, including `start_datetime`/`end_datetime` and `output_agent_variables`.
* **Delivery records** — every POST attempt is recorded with a status (`running`, `completed`, or `failed`). List them with [List webhook deliveries](/voice-agents/api/campaigns/webhooks/list), filtered by status and time window.
* **Retries** — if your endpoint was down, re-deliver up to 200 attempts per request with [Retry webhook deliveries](/voice-agents/api/campaigns/webhooks/retry).

> **Note**
>
> Webhook events fire per call attempt, whether or not the call connected — so you can track failures too. To fetch caller context *before* an inbound call begins, use an [on-start hook](/voice-agents/build/on-start-on-end-hooks) on the inbound side instead.

## Where to go next

#### [Inbounds](/voice-agents/deploy/inbounds)

Route incoming calls to an agent.

#### [Phone Numbers](/voice-agents/deploy/telephony)

Set up connections, rent numbers, and create groups.

#### [Agent Analytics](/voice-agents/monitor/agent-analytics)

Monitor campaign performance — connect rates, engagement, and call logs.

#### [Voicemail detection](/voice-agents/build/conversation-settings)

Configure what happens when a voicemail box answers.