> Source: https://docs.virtuo.in/vio/telephony/outbound-campaigns
> Run an outbound calling campaign in Vio: upload a contacts CSV, let the dialer pace and retry automatically, and read the AI campaign analytics.
# Outbound campaigns
**The Outbound Dialer turns a contact list into a batch of AI calls. Upload a CSV, press start, and Vio paces the calls, retries no-answers, and runs your agent on each one — then hands you AI analytics on how the campaign went.** For a single follow-up your agent booked itself, see [**Callbacks**](/vio/telephony/callbacks) instead.
**Call only people who agreed to be called.** Outbound calling is subject to consent and do-not-call rules. Upload contacts who have opted in, honour every do-not-call and opt-out request, and call within permitted hours. You are responsible for the list you dial.
## Upload your contacts
A campaign runs off a **contacts CSV**. At minimum it needs two columns:
| Column | Required | Purpose |
|---|---|---|
| `name` | Yes | The contact's name — used to personalise the call. |
| `phone` | Yes | The number Vio dials, in full international format. |
| *(any extra column)* | No | Becomes a per-call **`{{variable}}`** your agent can use. |
Any extra column you add — say `city`, `order_id`, or `plan` — becomes a **`{{variable}}`** available to the agent on that contact's call. Reference them in your script exactly like `{{name}}` so the agent greets and personalises per contact. Tie this to your [**Persona & prompt**](/vio/agents/persona), where `{{name}}` and friends are used.
## Launch a campaign
### Create the campaign
In the **Outbound Dialer**, create a campaign and choose the agent that will make the calls, and the number it dials from (the number needs **outbound enabled** — see [**Phone numbers**](/vio/telephony/numbers)).
### Upload the contacts CSV
Provide your CSV with `name` and `phone`, plus any extra columns you want as `{{variables}}`.
### Start the campaign
Press **Start**. Vio **paces** the calls automatically — it doesn't dial the whole list at once — and **retries no-answers** on its own up to a limit. **Pause** any time to stop new calls; in-progress calls finish.
### Track progress
Watch the live counters — **total**, **dialed**, and **successful** — as the campaign runs. Every call also lands in [**Call logs**](/vio/call-logs) with its transcript, recording, and cost.
## Read AI campaign analytics
When a campaign has calls behind it, Vio produces **AI campaign analytics**: a **funnel** of what happened across the list, plus a shortlist of **which contacts are ripe for a manual call** — the ones a human should follow up with personally. You can **re-analyze on demand** as more calls complete, so the picture stays current. For per-call detail (sentiment, goal-met, extracted data) open the call in [**Call logs**](/vio/call-logs).
## Frequently asked
**Q. Does Vio call everyone on the list at once?**
No. The dialer **paces** calls deliberately rather than blasting the list, which is gentler on your carrier and your callees. It also **retries no-answers** automatically, so you don't have to re-upload missed numbers.
**Q. How do I personalise each call?**
Add columns to your CSV beyond `name` and `phone`. Each becomes a **`{{variable}}`** the agent can drop into its script — reference them the same way as `{{name}}`. See [**Persona & prompt**](/vio/agents/persona).
**Q. Can I stop a campaign midway?**
Yes. **Pause** stops new calls from being placed; calls already in progress finish normally. Resume when you're ready.
**Q. Which number does a campaign dial from?**
The number you chose for the campaign — and it must have **outbound enabled**. Turn that on per number in [**Phone numbers**](/vio/telephony/numbers), or set up a carrier in [**SIP trunks (BYOC)**](/vio/telephony/sip-trunks).
## Next step
After a campaign, review outcomes in [**Call logs**](/vio/call-logs) and the trends in [**Analytics**](/vio/call-logs/analytics).