Where to find it
Voice Campaigns is in the main sidebar, just under Contacts — under it because a calling campaign is made of a contact list. Every campaign in the workspace is on that one page, whichever agent places the calls.Which agent does the calling
You choose, when you build the campaign. It matters more than it sounds: a call goes out from that agent’s number, opens with that agent’s first words, and is priced by that agent’s voice. If you only have one agent that can call, there is nothing to choose and you are not asked. If you have several, the builder asks first — before the audience, because the answer changes what the rest of the campaign is — and the list shows which agent each campaign belongs to. An agent can only be picked if it can actually place calls: it needs a number pointed at it on Phone Numbers, and it has to be set to answer on the phone rather than only on the web. The builder says which of the two is missing rather than making you guess.Calling campaigns used to live on each agent’s own page. They moved to the
main sidebar so one workspace has one list — with three calling agents you
had three lists that could not see each other, and finding a campaign meant
remembering which agent you made it on. Old links still work.
Who gets called
Two answers, and they are alternatives rather than a pair. People already in Contacts. The same four lists a broadcast offers, each showing its count before you commit, and the same tags and groups to narrow within one. Upload a list. A CSV, mapped and rung. This is the one most people want: the spreadsheet already exists, and nobody wants to import it, tag it, and then come back here.Uploading a list
Drop a CSV with a header row. We guess which column is the phone number, the name and the email — “Phone”, “Mobile”, “WhatsApp Number” and “Contact” all land on the same guess — and you can change any of them. Any other column can be pointed at something your agent says: see saying something different to each person. The panel shows the numbers as we will actually dial them, not as the file wrote them, because that is where spreadsheet damage shows up. Pick the country for numbers with no country code. A number starting+ or
00 keeps its own.
Rows we cannot read are listed with their line numbers and the reason. Leaving
them out is a tick you have to make: a list of a thousand that quietly calls
nine hundred is worse than one that stops and tells you.
Repeats within the file are dropped and counted. The same customer twice in an
export is ordinary; ringing them twice is not.
What an upload does to your contacts
The people on the file become contacts. They are in Contacts afterwards, and the campaign is aimed at exactly them — a label we put on those rows is what keeps this campaign to this list. There is a tick saying these people agreed to be called. It is a claim you are making, recorded with the date, and it decides which later campaigns reach them:
Anybody who has asked you to stop is left out of the list even when they are in
the file. That is decided in the database rather than by the screen, so it
holds however the campaign was built.
The label stays on those contacts afterwards, so you can aim a second campaign
at the same people without uploading the file again.
What it says
There is no message to write. A calling campaign opens with the agent’s own first words — the greeting on its Voice settings, the same one somebody hears when they ring in — and talks from there.Hello, this is Meera from Sunrise Dental.That is deliberate, and it is the one place a calling campaign is simpler than a broadcast. A box here would have been a second version of what your agent already says, and then nobody could answer the only question that matters: which one does a customer actually hear? The builder shows the opening before you launch, beside everything else, and links to where it is changed.
Worth reading it before a campaign goes out. A greeting written for people who
rang you — “Thank you for calling Sunrise Dental” — is the wrong sentence
coming from somebody who rang them.
Saying something different to each person
Put{{first_name}} — or any name you like in double braces — into your
agent’s greeting or its instructions, and every call fills it in from the row
that person came in on.
Hello , calling from Sunrise Dental about your appointment on .When you upload a list, the campaign shows you what your agent asked for and you point each one at a column. Nothing to declare anywhere: we read the braces out of your agent’s own words, so the list is always what it actually says.
What fills what
Your file wins where the two disagree — a column of preferred names beats the
name we have stored — but a blank cell does not. An empty column leaves the
contact’s own details alone rather than wiping them for that one call.
{{first_name}} follows whichever name won, so a list that carries names for
people you have never spoken to still greets them properly. Map a first_name
column of your own if you want to control exactly what they are called — “Dr
Menon” rather than the first word of a full name.
Keep values short. These are words your agent says out loud, so anything
past about 150 characters is trimmed. A date, an order number, a name or a
short phrase is what belongs here; a notes column mapped by accident is not.
What happens when it is not filled
Nothing is said. “Your order is ready” with no order mapped becomes “Your order is ready” — a sentence, spoken normally, with the stray space and the double space cleaned up.Careful with instructions
A variable in your agent’s greeting only affects calls it makes. A variable in its instructions is part of every conversation that agent ever has — someone ringing your number, a website chat, a WhatsApp message. None of those came from a list, so there is nothing to fill from and it resolves to nothing for them. The upload screen says so when it spots one, and it is worth reading: an instruction written for one campaign quietly applies to everybody.Looking someone up before you call them
Your list is fixed when you build the campaign. The facts about the people on it are not — an order that was “packed” on Monday is out for delivery by Tuesday, and an agent that opens with Monday’s answer is worse than one that never mentioned the order at all. The customer knows which is true. Pull Details/Data from API, step 4 of a new campaign, closes that gap. Moments before each person is called, we ask your own system about them and use what comes back in what the agent says.What you need first
An action on the Actions page: your endpoint, its method, and any keys it needs, saved once. The campaign picks one from a list — it never asks you to paste a URL or a key a second time, and changing the action later changes it everywhere it is used. The action needs somewhere to put the number. If it declares exactly one field we choose it for you; if it declares several, say which one is the phone number.Try it before you launch
Type one real number and press Try it. You will see exactly what the agent would know about that person, written the way you would use it:What we can use from the answer
Plain values at the top level of your JSON."status": "out for delivery" and
"eta_minutes": 20 both work; a number, a word, or true/false.
Anything nested is skipped rather than read out. An agent saying “your order
[object Object] is ready” is worse than one that never mentions the order, so we
leave it out and tell you which fields were ignored when you press Try it.
Whatever your system says wins over the same column in your uploaded file — that
is the entire point — except when it comes back empty, which does not erase what
you uploaded.
If the lookup fails for someone
Your choice, and the default is the careful one. Don’t call them, try again in a few minutes. Nobody is rung until their details come back, so a sentence built around{{order_id}} is never spoken
with a hole in it. They stay in the queue and are tried again shortly. If the
lookup fails for everyone, the campaign pauses and tells you why rather than
working through your list saying nothing useful.
Call them anyway, without that data. The call goes out using what you
uploaded, and anything the lookup would have added is simply missing from what
the agent says. Choose this when the extra detail is nice to have and reaching
people on time matters more.
When it calls, and when it stops
A campaign carries its own clock. Everything below is read in it, and it starts as your workspace’s — change it if you are setting this up from somewhere else, and what you type is what the campaign does.
Calls outside the hours wait rather than being dropped. A campaign started
at midnight begins in the morning, and its row says so rather than looking
stalled.
Indian rules restrict commercial calling to daytime, and 9am to 9pm is the
window every campaign keeps unless you narrow it. Narrowing is normal — a
clinic ringing about appointments and a shop ringing about an offer do not
want the same hours.
- A campaign spanning countries is never all callable at once, so it works through the list in waves as each country’s morning comes round. The row says it is waiting rather than looking stalled.
- For a country that spans several time zones — the United States, Canada, Australia, Russia, Brazil — a phone number does not say which one. We stay inside your hours at both ends of the country rather than guessing, which makes the callable stretch shorter but never rings anybody at six in the morning. If your hours are very narrow, a list like that may not be callable at all; the campaign says so instead of trying for ever.
Calling from more than one number
A big campaign from a single number is the fastest way to get that number marked as a nuisance line — and once it is, everything it does afterwards suffers, including customers ringing you back. If you hold spare numbers, give them to the agent under Outbound on Phone Numbers and the campaign spreads its calls across them. Nothing changes in the builder and there is nothing to switch on. An agent that has no number of its own can run a campaign too, from a number you give it under Outbound — the builder offers it like any other agent. The numbers can be on different phone companies — a ThinnestAI number and one you imported from Twilio, for instance — and each call goes out through its own number’s company. If the campaign leaves a voicemail and only some of its numbers can (ThinnestAI, Plivo and Telnyx numbers can), it still runs: calls on the others talk to the answering machine instead, and the builder tells you how many numbers that is when you create the campaign. If none of them can, it asks you to remove the message. Three things are worth knowing, because they are what makes it safe:- Whoever we ring keeps the same number. A second attempt comes from the number that rang them the first time.
- Somebody ringing back reaches whoever answers that number, which is the agent under Inbound — not necessarily the one that rang them, and nobody at all if Inbound is empty. Decide that on the Phone Numbers page before a large campaign.
- Each number has a daily limit of 200 calls. A campaign that uses up every number pauses with a line saying so and carries on the next morning.
Which days, and how fast
Two things worth setting on any list longer than a few hundred. Days it may call. By default a campaign calls every day it is running, Sunday included. Pick the days in the builder and it waits for the next allowed one. The day is read where each person is, the same as the hours. At most, per hour. By default a campaign uses every line your plan gives it, which is the fastest it can go. That is the wrong setting when somebody has to answer the calls that connect — a team of two cannot hold thirty conversations, and the rest of your customers hear a hold tone. A cap only ever slows a campaign down; your plan’s lines are still the ceiling.The cap is a rolling hour, not a clock hour. “Thirty an hour” means thirty in
any sixty minutes — not thirty at 10:59 and thirty more at 11:01.
Trying again the next day, at a time you choose
Pick The next day as the wait and a time appears beside it. Leave it empty and the retry goes out 24 hours after the call it missed — so an evening call is tried the next evening, and later again each round. Set it to 9:00 and everyone who did not answer is queued for nine the next morning instead. A busy line is not affected: that is someone holding their phone right now, so it keeps its own short wait in minutes. Your calling hours still apply. The time says when somebody becomes due, not that the call ignores your window.When your balance runs low
Two things stop, and not at the same point. Trying somebody again stops first. Once your balance is down to about ten calls, anyone who did not answer is left where they are and the campaign keeps ringing numbers it has never tried — the last of a balance is better spent on somebody who might pick up. The campaign says so on its page. Calling stops when there is not enough for one call. Nothing is lost: everybody still waiting keeps their place and their turn. Top up and both resume by themselves within a minute or two. Nobody is dialled twice for it, and no attempt is used up while calls are held.If it reaches voicemail
Most people do not pick up. There are two ways to handle a machine:- Leave a message. Write one in the builder and, when an answering machine takes the call, your agent leaves it — in its own voice — and then hangs up.
- Just hang up. With no message and the agent’s Hang up on voicemail switch on, the call ends as soon as what comes back is recognised as a voicemail greeting, and is charged like any call for the few seconds before that.
Writing a message is enough — you do not have to turn anything else on. It is
not available on every phone provider, and if yours is one of those you are
told when you write the message rather than after the campaign has run.
How we tell a machine from a person
Your agent speaks as soon as the call is answered, and the phone company listens to the first few seconds at the same time and guesses whether a machine answered. That guess is often wrong, and more so on Indian mobile numbers: on one campaign it called 18 real conversations “machine” out of 32 — people saying “Hello” or “हां” and then talking to the agent for minutes. So the guess on its own never ends a call. It only makes us listen more carefully to the first thing said on the line, and the words decide:- A voicemail greeting — “please leave a message after the beep”, “बीप के बाद अपना संदेश छोड़ें”, “the number you have dialled is switched off” — is a machine. With a voicemail message written for the campaign, your agent leaves it, then the call ends. With none, the call just ends.
- Anything else — “Hello”, “हां”, “बोलिए”, a question — is treated as a person, and the conversation carries on as normal, whatever the guess was.
Testing two openings
Most of why somebody stays on a call or hangs up happens in the first few seconds, so the opening is the thing worth testing. Fill in Test a second opening and the campaign is created as two: “(A)” and “(B)”, each calling half the list, each with its own progress and its own numbers. Nobody is called twice — the halves never overlap — and you compare them by opening the two rows.How it went
A calling campaign shows more than how many calls went out:
Beside them, Minutes and cost adds up every dial the campaign made —
retries and calls an answering machine took included, because each was charged
(a machine the call hung up on is charged only the phone network’s fee):
the time on calls, how much of it was conversation, what was charged to your
wallet, and what that comes to per answered call and per minute. A call that never left for the phone network is not counted. Each call’s own
charge is in Usage → Calls, and the two add up.
Underneath, How the rest ended breaks down everything that did not connect —
no answer, line busy, declined, not reachable, ended before the agent spoke —
and each person in the list shows how their own call ended rather than just
“Called”, plus how many times they were dialled when it was more than once.
Click anybody in the list to open their call — the summary, the transcript and
the recording, in the same panel as Usage → Calls. The list shows each person’s
most recent call; every earlier attempt is in Usage → Calls too. It shows 25
people a page — use the page numbers underneath, or search by name or number.
That breakdown is what tells you which problem you have. A lot of “Not reachable”
is a stale list. A lot of “Declined” is the wrong audience or the wrong opening.
A lot of “No answer” is usually the wrong time of day.
Declined and unreachable numbers are never called again. Busy, no-answer and
answering machines the call hung up on are what retries are for — and anybody
who rings your number back in the meantime is not called again either.
Ringing again
A person who does not pick up is not called again unless you say so. Whether a second attempt is reasonable depends on why you rang, so it is a choice on the campaign rather than a default. Choose how many times to try again and how long to wait between tries. Two retries half an hour apart means three calls at most, and the wait starts when a call goes unanswered rather than when the campaign started — so somebody rung late in a long run still gets the gap you asked for. A busy line gets its own, shorter wait. The two are not the same thing and it is worth setting them apart:- Engaged means they are holding their phone right now. That is the most reachable anybody ever is, so the default is five minutes.
- No answer means they are away from it. Ringing back five minutes later is pestering, so the default there is half an hour.
You see the same words on the call in your inbox — “Declined” rather than
“Missed call” — so the reason a number was or was not tried again is on the
record rather than something to work out.