This guide follows the Campaigns page in the console. To run campaigns from
your own code, use the Campaigns API.
Overview
A campaign calls a list of people with one of your agents. You choose when it may call, upload the list and press Start. It works through the list inside your calling hours, tries again when nobody picks up, and shows you each result as it comes in. The example on this page is a round of payment reminders.Your own list
Upload the export you already have. The console matches its columns to your
agent and shows you the rows it can’t use before anything is created.
Calling hours
Pick the first and last day and up to four calling windows a day. Nothing
is dialled outside them.
Retries and limits
Choose how many calls run at once, how often to retry, the longest a call
may run and how much the campaign may spend.
Results as they happen
Watch the counts move, play any call, and download every result as a
spreadsheet.
Before you start
- Finish the agent first. A campaign keeps the agent exactly as it is when you create the campaign. Changes you make to the agent later don’t reach it.
- Have your list ready as a CSV file with a header row. An export from your CRM or a spreadsheet is fine.
- Check your wallet. You pay only for calls that are answered, by a person or a voicemail. If the wallet runs out, the campaign pauses until you top up.
1. Open Campaigns
In the console, open Campaigns in the sidebar. Your campaigns are listed newest first, with a badge on any that are dialling, paused or still a draft. How it works plays a three-minute guide to this page. Press New campaign.
2. Name it and pick the agent
- Name: something you’ll recognise later, like “EMI reminders · October”.
- Agent: the agent that speaks on every call.
- Calls come from: the number people see when their phone rings. Pick one of your own numbers or pools (you add them under Phone numbers). If you leave it alone, the campaign uses the agent’s own number, then your default pool, then your own number. The Mirai shared line is offered only while your workspace has no number of its own. The line under the picker tells you which one the campaign will use.
- Timezone: the dates and calling hours are read in this timezone.

3. Choose when to call
Set the First day and the Last day. Then set the Calling hours. You start with one window. Press Add a window for another, up to four a day. Nothing is dialled outside these windows. If you start the campaign at night, it waits for the next window. A retry that falls due outside the hours waits too.
4. Set the pace, retries and limits
- Calls at once is how many conversations run at the same time, from 1 to 50. When one ends, the next person on the list is called. Under the field the form works out the pace for you: at 5 at once, about 450 attempts an hour. If you call from your own number, it also tells you when that is more than one number should carry, because a busy number is more likely to be marked as spam.
- Retries and Retry after (minutes) decide what happens when nobody answers, the line is busy or the call fails. The campaign tries again after that gap, inside your calling hours. A call answered by a person or a voicemail is never retried.
- Skip numbers already reached in an earlier campaign leaves out anyone who answered, in person or by voicemail, in any of your earlier campaigns. Numbers that only rang out are still called.
- Max call length (seconds) ends a call that runs too long. Leave it empty to use the agent’s own limit.
- Budget (₹) caps what this campaign can spend. When it is reached, the campaign pauses. Leave it empty for no cap.
- Webhook URL is optional. Add an
https://address and we send each call’s events there. Every call ends with one event that carries the transcript, the result and the contact’s extra info, so your system doesn’t have to fetch anything. See webhooks.

5. Add your contacts
Download the template
Under the upload, the form lists the columns your agent reads, each marked Required or Optional. Click Download template for a CSV with those columns and a second row that explains each one. You can leave that row in when you upload; it is skipped.
Fill in your contacts
One row per person, with the header row on top. Fill every required column. The phone number can be in any column, and a ten-digit Indian mobile number gets+91 added for you. If you use Excel, format the phone column as Text before
you type the numbers, so Excel doesn’t change them.
Upload the file, or the one you already have
Press Choose File and pick your file. You can also paste the rows into the box under it. As soon as a list is in, the form opens a second pane for it. Your settings stay on the left. On the right you see the list, its columns and its first rows, each side scrolling on its own. In a narrow window the form stays one column.
Match your columns
You don’t have to start from the template. Upload your own export and check Columns. Each column of your file shows what it is used as and where it goes:
We match the columns for you (a “Name” column for
customer_name, for example),
and you can change any match. Your changes are remembered for that agent in this
browser, so next month’s export from the same system is matched for you.

external_id: the agent has no use for it, and as a variable it would never
reach your webhooks.

Where extra info goes
Extra info never reaches the agent. It comes back to you in three places:- Your webhooks. Every event about the call carries it in
data.call.metadata, along withdata.call.campaign_idanddata.call.contact_id. It goes to the campaign’s Webhook URL, or to a destination you subscribe on the Webhooks page. - The campaign’s contacts. It shows under each name on the Contacts tab.
- Download CSV. Your own columns, extra info included.

- Up to 16 columns can be extra info. A column set to Both counts too.
- A value can be up to 256 characters. A longer one is cut, and the preview says so.
- The key is your header in lower case, with spaces turned into
_: “Lead Source” arrives aslead_source.
Check the preview
The summary line says how many numbers are ready, how many duplicates were removed and how many rows can’t be used. Under it, your first rows are shown as a table, each column headed by what it became: Agent, Extra info, Agent + extra info or Dialled. Every row that can’t be used is listed with its line number and the reason. Those rows are left out and the rest go ahead. All of this happens before anything is created.
6. Create it, then start it
Press Create campaign. The campaign is saved as a draft and its page opens. Nothing is dialled yet, so you can check it first.
While it runs

- Pause lets calls in progress finish and starts no new ones. Press Resume to carry on.
- The campaign also pauses itself when the wallet can’t cover the next call, or when it reaches its budget. The page says which. Top up, or raise the budget under Settings, then press Resume.
- Stop ends the campaign for good. Calls in progress finish, nobody else is called, and a stopped campaign can’t be resumed.
- Download CSV gives you one row per contact: your own columns (extra info included), the status and tries, and for the last call its length, how it ended, its cost, the result, a summary, the transcript and a recording link.
Insights and settings
The Insights tab is the campaign’s report. It fills in after the first calls. The strip at the top jumps between its pages, from the summary and the funnel to who to call back and when to dial next time. You can print it or save it as a PDF, or press Share for a link anyone can open without signing in. Recordings stay out of a shared report unless you tick Include call recordings.

- Draft or paused: everything except the agent, the timezone and the list.
- Dialling: only calls at once and calling hours. They apply straight away. Pause it to change the rest.
- Finished: nothing. Duplicate it to run it again with other settings.
Run it again
- Duplicate copies the settings and the whole list into a new draft. Every number starts fresh as pending. Change anything before you create the copy.
- New campaign from these: on the Contacts tab, filter the list (for example, everyone who wasn’t reached), then press New campaign from these. The new campaign gets just those people and the same settings.
- Archive takes a campaign off your list. Its calls, results and report are kept, and you can restore it at any time. A campaign can’t be archived while it is dialling.
- The Do-not-call list, on the Campaigns page, holds numbers that no campaign in your workspace will ever dial, whatever a new file says.
Use the API instead
Everything on this page is also in the API. See Campaigns to create a campaign with its contacts, add more contacts, start, pause, resume or stop it, and read the report. To send extra info through the API, put it in each contact’smetadata. See
Your own fields.
Each contact can also get its own voice and languages, through the API or with
call_settings.* columns in the CSV. See
Voice and language per contact.
If something goes wrong
Good practice
- Set a budget on every campaign. It limits the cost of a mistake in the list, like a file uploaded twice.
- Call only people who have agreed to hear from you, and keep your do-not-call list up to date.
- Follow the rules for automated calls in the places you call.