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

# Deploy Your Agent

> Attach phone numbers, configure calling windows, set concurrency limits, and run automated outbound campaigns in production

Deploying your voice agent moves it from testing into live production. In this guide, you will attach an active telephone number to your agent's deployment routes, upload and validate contact lists with dynamic variables, configure operational calling windows, set concurrency limits, and launch automated outbound calling campaigns.

## Video Walkthrough

<div style="position: relative; padding-bottom: 62.7906976744186%; height: 0;">
  <iframe src="https://www.loom.com/embed/e6b7bb6c0af1423a92ecb6325c07afc6" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" />
</div>

## Production Deployment Checklist

Running an automated calling campaign in production consists of several core components:

* **Phone Deployment**: Binding provisioned numbers or imported carrier lines (e.g. from Vobis, Plivo, or Twilio) to your agent.
* **Dynamic Variable Mapping**: Ensuring contact list CSV headers match prompt placeholders (like `{customer_name}`, `{due_date}`) so each call is tailored.
* **Calling Windows & Compliance**: Restricting outbound dials to compliant business hours or designated days (e.g. weekends or specific date ranges).
* **Concurrency & Pace Control**: Controlling how many simultaneous calls the dialing engine initiates.
* **Retry & Callback Rules**: Automatically redialing unanswered contacts with exponential delays or scheduled callbacks.
* **Real-Time Webhooks & Export Alerts**: Forwarding post-call summaries and transcripts to your CRM or emailing reports upon campaign completion.

***

## Step-by-Step: Deploying and Running Campaigns

<Steps>
  <Step title="Attach an Outbound Phone Number">
    Navigate to **Agent Config** → select your agent → open the **Deploy** tab:

    * Click **Phone Deployment**.
    * Select your provisioned number or an imported SIP line (e.g. from Vobis).
    * Save your deployment routing.
  </Step>

  <Step title="Prepare Your Contact CSV">
    Download the sample CSV template from the campaign dashboard. Ensure:

    * The first column contains valid recipient phone numbers in standard **E.164** format (e.g. `+14155552671` or `+919876543210`).
    * Additional column headers match your prompt variables exactly (e.g., `customer_name`, `account_balance`, `property_name`).
    * All required variable cells have values to prevent placeholder warnings.
  </Step>

  <Step title="Create the Campaign">
    Go to **Campaigns → Create Campaign**:

    * Give your campaign an internal reference name (e.g. `q4-renewal-followup`).
    * Select the agent configured in Step 1.
    * Upload your contact CSV and review the field mapping summary.
  </Step>

  <Step title="Set Calling Windows & Schedules">
    Define the window during which calls are permitted:

    * Set the **Start Date** and **End Date**.
    * Configure allowable daily hours (e.g. `09:00 AM – 06:00 PM`).
    * Choose specific active days (such as weekdays only, or weekend-targeted outreach). Calls outside this window pause automatically until the next window opens.
  </Step>

  <Step title="Configure Concurrency & Retry Settings">
    Control dialing velocity and resilience:

    * **Concurrency**: Set the number of simultaneous active calls (e.g., 5 channels for moderate throughput).
    * **Auto-Retries**: Enable retries for unanswered, busy, or failed calls (e.g., up to 2 retry attempts).
    * **Retry Delay**: Specify the wait interval (e.g., 30–60 minutes) between attempts.
    * **Auto Callbacks**: Schedule automated redials if a recipient requested a callback.
  </Step>

  <Step title="Set Up Webhooks & Result Notifications">
    Under campaign notifications:

    * Add an email address to receive the full CSV export and performance summary when the campaign finishes.
    * Enter your webhook endpoint URL to receive real-time call lifecycle events (`call_started`, `call_ended`, `call_postprocessing`).
  </Step>

  <Step title="Launch the Campaign">
    Review your configuration summary, then click **Start Campaign**. Vaani immediately begins managing the dialing queue and dispatching calls across your active channels.
  </Step>
</Steps>

***

## Troubleshooting

<AccordionGroup>
  <Accordion title="Warning: 'Missing values for dynamic variables in CSV'">
    If any row in your CSV has an empty cell for a variable referenced in your agent's prompt (e.g. `{property_name}`), the campaign engine displays a warning. Populate all required columns or supply fallback values in your prompt to prevent literal placeholder speech.
  </Accordion>

  <Accordion title="Why is my campaign showing 'Paused'?">
    Campaigns automatically pause when the current time falls outside your configured calling window (e.g., after 6:00 PM or on non-selected weekdays). The campaign will automatically resume dialing once the next active window begins.
  </Accordion>

  <Accordion title="How do I increase my simultaneous call concurrency?">
    Concurrency is limited by your SIP trunk capacity and account tier. If you need more than 5–10 concurrent lines, contact support or increase your carrier SIP trunk channel allocation in Telephony settings.
  </Accordion>

  <Accordion title="Where can I monitor live campaign metrics?">
    Visit the **Campaigns → \[Campaign Details]** page in the dashboard. You can observe live connected calls, queue status, connection rate, disposition breakdowns, and export interim reports at any time.
  </Accordion>
</AccordionGroup>

***

## Next Step

<Card title="Generate an API Key" icon="key" href="/getting-started/generate-api-key">
  Create an API key to authenticate requests to the Vaani API
</Card>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.