Skip to main content
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. The Campaigns page: four campaigns in a list, one dialling and one paused, with the How it works, Do-not-call list and New campaign buttons at the top right

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.
There is nothing to choose under Rate. The campaign is charged at your workspace’s rate, the same as your other calls. The top of the New campaign form: Name, Agent, Calls come from set to the Mirai shared line, Timezone set to Asia/Kolkata, and the Rate line

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. When to call: first and last day, and two calling windows, 10:00 AM to 1:00 PM and 4:00 PM to 7:00 PM

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.
Pacing and retries: 5 calls at once with the pace line, 2 retries 60 minutes apart, the Skip numbers box ticked, a 300-second max call length, a ₹5,000 budget and a webhook URL

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. The Contacts section: the file upload, and the EMI reminders agent's columns, phone, customer_name and emi_due required and due_date optional, with the Download template button

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. The New campaign form with a list in: the settings on the left, and on the right the pasted list, the summary line, the Columns list and the Where extra info goes card

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. Columns: Mobile is the phone number, Name fills customer_name, EMI Due fills emi_due, Loan ID is Both (the agent's loan_id and metadata.loan_id), and Branch is extra info that goes to metadata.branch If the agent’s prompt never mentions a column, the form tells you, and Make it extra info moves it there in one click. This is common with a CRM external_id: the agent has no use for it, and as a variable it would never reach your webhooks. Columns for an agent that only says name: external_id goes to the agent as a variable, and a line under it says the agent doesn't mention it, with a Make it extra info button

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 with data.call.campaign_id and data.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.
The Where extra info goes card on the form names your extra-info columns and says whether this campaign has a webhook URL yet. It also shows what your system will receive, with your first row in it: Where extra info goes: Branch isn't given to the agent and Loan ID is kept for both, with a webhook body whose data.call.metadata holds loan_id LN-20417 and branch Pune A few rules:
  • 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 as lead_source.
To send the same thing through the API, see Your own fields.

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. The preview: all 6 rows ready, with Phone, customer_name and emi_due for the agent, loan_id for the agent and as extra info, and branch as extra info, and 2 rows that can't be dialled with their reasons

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. The new campaign as a draft: 6 contacts, all waiting, with the Duplicate, Archive and Start buttons When you’re ready, press Start. The campaign dials only inside your calling hours. If your wallet covers only part of the list, the page tells you how many contacts it can pay for. The rest wait as pending, and they are called once you top up.
Start with ten or twenty people. Listen to the first calls, then raise the pace.

While it runs

A running campaign: 6 contacts, 1 connected, 1 not reached, 4 waiting and ₹11.08 spent, with each contact's status, tries, last call and result The numbers at the top count who was connected, who wasn’t reached and who is still waiting, and what the campaign has spent so far. The bar under them splits the list by status. The Contacts tab has one row per person: status, tries, the last call and its length, and the result your agent collected. Your extra info shows under the name. Press the play button on a row to hear the recording and read the transcript. A contact waiting for a retry shows when it will be tried again. You can search the list, filter it by status, or use Filters to find people by when they were last called, call length, result, tries, or any column from your upload. The ⋯ menu on a row lets you call that person again, add them to your do-not-call list, copy the number, or take someone who hasn’t been called yet off the list.
  • 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. The Insights tab of a finished campaign: Refresh, Print or PDF, Download CSV and Share above the strip of report pages, then the summary of EMI reminders · October with 41 conversations, 20 promised to pay (its most common result), ₹320.18 spent and 1h 00m of talk time The Settings tab shows everything the campaign was set up with. The Settings tab: agent, rate, calling hours, dates, timezone, calls at once, retries, numbers reached before, max call length, budget, spent, webhook and created, with the Edit settings button Press Edit settings to change them. What you can change depends on where the campaign is:
  • 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’s metadata. 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.