> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wittify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Outbound Voice Campaigns

> Run outbound phone campaigns. Pick your provider and caller ID, layer a per-campaign script over the agent's voice prompt, upload a list of numbers, set pacing rules, and schedule a dialer run. Live progress, recordings, and transcripts route to Voice Conversations.

<Note>
  Outbound Voice Campaigns is for **Voice and Hybrid agents only**. Text-only agents don't see this sidebar item. The page lives at `/agents/{agentId}/outbound-voice-campaigns`.
</Note>

## When to use this

Place a wave of outbound calls to a list of numbers: appointment reminders, satisfaction surveys, payment-due nudges, lead qualification, retention. The agent runs the call autonomously using your voice prompt and knowledge base, with optional per-campaign script overrides.

The page does not replace your agent's normal inbound calls. It's the **outbound** lane.

## Sub-tabs

Three sub-tabs collapse-in under the **Outbound Voice Campaigns** sidebar item, behind a chevron toggle:

| Sub-tab       | What's in it                                     |
| ------------- | ------------------------------------------------ |
| **Campaigns** | Active and historical campaigns                  |
| **Archived**  | Campaigns you've archived                        |
| **Deleted**   | Soft-deleted campaigns. Recoverable for 30 days. |

## Campaigns table

The main table of campaigns. Columns:

| Column        | What it shows                                                                      |
| ------------- | ---------------------------------------------------------------------------------- |
| **Name**      | The campaign name you chose                                                        |
| **Provider**  | One of: **Twilio**, **Telnyx**, **SIP Trunk**, **WhatsApp Calls**                  |
| **Audience**  | Segment label + count                                                              |
| **Status**    | One of: **Draft**, **Scheduled**, **Dialing**, **Completed**, **Failed**           |
| **Connected** | Calls where the recipient picked up                                                |
| **Answered**  | Calls that reached at least 30 seconds (the agent had time to deliver the message) |
| **No answer** | Voicemail / busy / didn't pick up                                                  |
| **Created**   | Timestamp                                                                          |

Click any row to open the detail drawer.

### Status chips

| Status        | Color         | Meaning                                  |
| ------------- | ------------- | ---------------------------------------- |
| **Draft**     | Muted         | Saved but not scheduled                  |
| **Scheduled** | Blue          | Will start dialing at the scheduled time |
| **Dialing**   | Amber + pulse | Live, the dialer is placing calls        |
| **Completed** | Green         | All calls finished                       |
| **Failed**    | Red           | Provider rejection or critical error     |

### Toolbar

Above the table:

* **Search box** , matches campaign name. Capped at 120 chars.
* **Provider filter** , multi-select.
* **Status filter** , multi-select.
* **+ New Campaign** button on the end.

### Bulk actions

Same shape as WhatsApp Campaigns: **Pause** (Dialing only), **Archive** (with confirm), **Delete** (red confirm).

## Detail drawer

### Header

* Campaign name + status pill
* Provider name and caller ID
* Created and Last updated timestamps

### Live progress

For Dialing campaigns, a live progress card with:

* **In flight** , calls currently ringing or in conversation
* **Queued** , calls waiting for an open slot in the concurrency window
* **Completed** , calls that ended (any outcome)
* **Failed** , provider-level rejections

A live success rate ratio with a colored donut underneath.

### Recent outcomes

A scrolling tail of the last 50 call outcomes. Each line shows:

| Field          | Example                                                                                         |
| -------------- | ----------------------------------------------------------------------------------------------- |
| Phone          | `+966500000000`                                                                                 |
| Outcome        | **Connected** / **Voicemail** / **No answer** / **Busy** / **Hangup** / **Failed**              |
| Duration       | e.g. *1:42*                                                                                     |
| Sentiment      | Pill (positive / neutral / negative) when transcribed                                           |
| Recording link | Opens the call in [Voice Conversations](/en/Systems/AI-Agents/Manage-Agent/Voice-Conversations) |

### Footer actions

* **Pause** , for Dialing campaigns only
* **Duplicate** , clones as Draft
* **Archive** , confirmation
* **Delete** , red confirmation

## Create a campaign

Click **+ New Campaign** to open the multi-step wizard. Five steps:

<Steps>
  <Step title="Pick a provider + caller ID">
    A list of the telephony providers you've connected in [Deployment](/en/Systems/AI-Agents/Wizard/Deployment): **Twilio**, **Telnyx**, **SIP Trunk**, **WhatsApp Calls**. Pick one provider for this campaign (you can run multiple campaigns simultaneously, one per provider).

    Below the provider, a **Caller ID** dropdown lists your provisioned phone numbers from that provider. The number you pick will appear as the calling number on the recipient's phone.
  </Step>

  <Step title="Goal and script overrides">
    Choose between two modes:

    * **Use the agent's voice prompt as-is** , the agent runs the call exactly like a normal inbound call.
    * **Layer per-campaign overrides** , a textarea where you write extra context (e.g. *This is a satisfaction survey call. After greeting, ask these 3 questions in order: ...*). The override is layered on top of the agent's main prompt for the duration of the campaign.

    Up to **2,500 characters** in the override.
  </Step>

  <Step title="Choose audience">
    Two options:

    * **Upload CSV** , `.csv` file with a `phone` column (E.164 format) and any optional variable columns (e.g. `customer_name`, `appointment_date`) you reference in the override. Bilingual sample CSVs are linked.
    * **Saved segment** , pick from segments you've defined elsewhere.

    Audience size shows live as you upload. Invalid rows are flagged for cleanup before launch.
  </Step>

  <Step title="Pacing rules">
    Four sub-fields:

    | Rule                   | What it controls                                                                                                      |
    | ---------------------- | --------------------------------------------------------------------------------------------------------------------- |
    | **Concurrency**        | Max simultaneous calls (e.g. 10). The dialer never exceeds this.                                                      |
    | **Calling window**     | Start and end hours per recipient timezone (e.g. *9 AM to 8 PM*).                                                     |
    | **Retry rules**        | How many retries on no-answer / busy, with a cool-down between attempts (e.g. retry up to 2 times, 30 minutes apart). |
    | **Voicemail handling** | **Leave a recorded message** (with the override script as the script) or **Hang up**.                                 |
  </Step>

  <Step title="Schedule and launch">
    * **Send now** , dialing starts as soon as you launch.
    * **Schedule for later** , pick a date / time.

    Confirm and click **Launch Campaign**. The dialer obeys the pacing rules end-to-end. Toast: *Campaign scheduled* or *Campaign launched.*
  </Step>
</Steps>

## Recordings and transcripts route to Voice Conversations

Every completed call from a campaign appears in [Voice Conversations](/en/Systems/AI-Agents/Manage-Agent/Voice-Conversations) under the matching provider tab, with full audio playback, click-to-seek waveform, synced transcript, and on-demand AI summary. There's no separate recordings inbox for campaigns, the call stream is shared with inbound traffic.

## Compliance

* The agent honors **remove-me** / opt-out instructions automatically. Recipients who say "remove me" or "stop calling" are added to the do-not-call list and excluded from future campaigns.
* The dialer respects **local do-not-call windows** by default (e.g. 8 AM to 9 PM in the US, 9 AM to 8 PM in KSA). The Calling window in Pacing rules can narrow this further but cannot override it.
* An **audio recording disclosure** plays at the start of every call when required by local law.
* Audience CSV is parsed with the same UTF-8 BOM + CRLF rules as the [Knowledge Base](/en/Systems/AI-Agents/Wizard/Knowledge-Base).

## Common questions

<AccordionGroup>
  <Accordion title="My campaign launched but Status went straight to Failed.">
    Open the drawer. The most common cause is a provider rejection (e.g. caller ID not verified by Twilio for outbound, or Telnyx number doesn't have outbound enabled). Fix the underlying provider config in [Deployment](/en/Systems/AI-Agents/Wizard/Deployment), then duplicate the campaign and re-launch.
  </Accordion>

  <Accordion title="Concurrency seems lower than I set.">
    Telephony providers cap concurrency per account by default. If you set 50 but the provider's account-level cap is 10, you'll see at most 10 in flight. Contact your provider to raise the cap.
  </Accordion>

  <Accordion title="A recipient picked up but the agent stayed silent.">
    The recording disclosure plays first. After it finishes, the agent starts speaking. Most "silence" reports are people hanging up before the disclosure ends. Listen to the recording in Voice Conversations to confirm.
  </Accordion>

  <Accordion title="Can I pause a Dialing campaign and resume later?">
    Yes. Open the drawer, click **Pause**. The campaign moves to **Paused** state, in-flight calls finish but no new ones get queued. Click **Resume** to continue. Pacing rules and audience are preserved.
  </Accordion>

  <Accordion title="The override script keeps getting ignored.">
    The agent decides what to say based on the conversation context, not just the override. Make the override prescriptive: *Always ask these 3 questions in this order. Don't deviate.* If the agent still goes off-script, lower its **Temperature** in [Voice Settings](/en/Systems/AI-Agents/Wizard/Voice-Settings) to keep it more rigid.
  </Accordion>
</AccordionGroup>

## Next

<CardGroup cols={2}>
  <Card title="WhatsApp Campaigns" icon="message-bot" href="/en/Systems/AI-Agents/Manage-Agent/WhatsApp-Campaigns">
    The chat equivalent for text + hybrid.
  </Card>

  <Card title="Voice Conversations" icon="phone" href="/en/Systems/AI-Agents/Manage-Agent/Voice-Conversations">
    Where campaign recordings land.
  </Card>
</CardGroup>
