Docs/Playbooks

Outbound calling campaign

On this page

A list nobody has time to work through, called properly, on a schedule, with every outcome recorded. Appointment reminders, renewals, arrears, re-engagement, surveys — the mechanics are identical; only the script changes.

Before you start
  • A list of contacts you have a lawful basis to call.
  • An agent with a phone number — ideally local to the people you are calling.
  • Enough minutes on your plan for the list. Check Billing first.
  • Thirty minutes, plus a pilot run before the real thing.
What you will end up with

A campaign that dials through your list at a pace you control, greets each person by name, handles the three or four answers they might give, retries the ones who did not pick up, writes the result to your CRM, and stops when it is done.

The shape of it

Your spreadsheet
Names, numbers, context
Contact list
Uploaded and validated
upload
Campaign runs
Paced, retried, scheduled
dials
Agent talks
Personalised per contact
Outcome recorded
Call History + your CRM

Not a formality. Outbound calling is regulated in most markets, and the rules apply to automated calls at least as strictly as to human ones.

  • Basis to call. Existing customers about their own booking or account is straightforward. Cold prospects who never gave you their number is a different question with a different answer in each country.
  • Permitted hours. In the recipient’s local time, not yours. Schedule accordingly — a campaign runs when you tell it to.
  • Opt-outs. Honour them immediately and permanently. Strip anyone who has asked you to stop before you upload.
  • Disclosure and recording. Say who is calling. Where recording notice is required, put it in the opening line.

Consent & calling rules covers this properly. Five minutes now is cheaper than a complaint later.


1. Prepare the list

Bad lists cause more campaign failures than bad scripts. Get this right and most of the work is done.

contacts.csv
first_name,last_name,phone_number,email,appointment_time,notes
Amina,Otieno,+254712345678,amina@example.com,2026-03-12T10:00:00,Cleaning
Peter,Mwangi,+254722334455,peter@example.com,2026-03-12T11:30:00,Check-up
Grace,Wanjiru,+254733445566,,2026-03-13T09:00:00,Follow-up from Feb

The checklist

  • Every number in international format. +254712345678, not 0712345678. Format the column as text in your spreadsheet before exporting — Excel and Sheets will otherwise strip the plus and mangle long numbers.
  • Open the CSV in a text editor before uploading. Ten seconds, and it catches every formatting disaster.
  • De-duplicate. Two rows is two calls to the same person.
  • Remove opt-outs and anyone who complained. This is your responsibility.
  • Add the context columns. appointment_time, notes, company — every one makes the call less generic.
  • Split by language or region if you serve several. One list per agent.

Upload at CampaignsNew Campaign, or reuse a list you have uploaded before. Lists are reusable across campaigns.


2. Build the outbound agent

Do not reuse your inbound receptionist. An agent that answers calls and an agent that makes them need different openings, different pacing and different endings.

Instructions — appointment reminder
You are calling {{first_name}} on behalf of Brightsmile Dental.
They have an appointment on {{appointment_time}}.
Today is {{date}}.

## Opening
"Hi {{first_name}}, this is Amara calling from Brightsmile Dental - just a
quick call about your appointment. Is now an okay moment?"

If it is a bad time, apologise, say you'll follow up by text, end the call.

## What this call is for
Confirm they are still coming. That is the only goal.

## How to handle each answer
- Still coming -> confirm the day and time back to them, thank them, end.
- Cannot make it -> ask what suits instead, take the preference, tell them
  the clinic will confirm by text. Do not promise a specific slot.
- Wants to cancel -> accept it politely, do not try to talk them round,
  confirm the cancellation, end.
- Not the right person -> apologise, do not discuss the appointment, end.

## Rules you never break
- Never discuss anything clinical or medical.
- Never discuss the appointment with anyone other than {{first_name}}.
- If they ask to stop being called, confirm you will and end the call.
- Keep the whole call under 90 seconds unless they want to talk.

## Ending
Thank them by name and say goodbye. Do not add anything extra.

What makes an outbound script work

RuleWhy
Name yourself and your business in the first sentenceThey did not expect this call. Unexplained calls get hung up on.
Ask if now is a good timeCosts three seconds. Transforms how the rest of the call goes.
State one clear purposeMulti-purpose outbound calls confuse people and take twice as long.
Script every likely answerYes, no, reschedule, wrong person. Four branches covers almost everything.
Accept “no” immediatelyPushing after a refusal is what generates complaints — and in places, breaches.
Cap the length“Keep the call under 90 seconds unless they want to talk.”
Turn on voicemail detection

On the agent’s Tools step. Without it you pay for the agent to deliver its entire script to answerphones, and your Call History fills with meaningless “completed” calls.


3. Write outcomes back

The campaign is worth much more if the result lands where your team already works. Attach your CRM integration to the agent and tell it what to record:

Add to instructions
After every call, use create_note on the contact record with:
- whether they confirmed, cancelled, or want to reschedule
- their preferred alternative time, if they gave one
- anything they said that the clinic should know

The pattern is the same for HubSpot, Salesforce, Zoho and Dynamics — the HubSpot playbook works it through in full. If your records live in a spreadsheet, Google Sheets can append a row instead.


4. Pilot on ten contacts

Never debut a script on two thousand real customers. Make a ten-row list — your own number, colleagues, a couple of friendly customers — and run the campaign on that first.

  1. Run it

    Set concurrency to 1 or 2 and start immediately.

  2. Answer one of the calls yourself

    Be awkward on purpose. Say “who is this?”, go quiet, ask something off-script, interrupt it. You are looking for the thing that will happen a hundred times at scale.

  3. Read all ten transcripts

    In Call History. Ten transcripts is fifteen minutes and it will find at least one real problem.

  4. Check the CRM

    Did the notes land, on the right records, saying something useful?

  5. Fix one thing and run the pilot again

    Two or three rounds of this and the script is ready.


5. Launch properly

SettingStart withThen
ScheduleScheduled, not immediatePick a time inside lawful calling hours for your list — mid-morning or early evening tends to work best.
Max concurrent2–3Raise it once you have read transcripts. Never exceed what your transfer team can absorb.
Retry failedOnGenuine failures are worth one more attempt.
Retry busyOnA busy signal means they exist and are reachable.
Max attempts3Three is persistent. Six is harassment.
Retry delay30 minutesLonger spreads attempts across the day, which reaches more people than hammering one hour.
Concurrency should match your humans

If the agent transfers interested people to a salesperson, twenty simultaneous calls and one available rep means most transfers fail. Set concurrency to roughly the number of people who can pick up.


6. Watch the first hour

Stay at your desk. These four numbers tell you within minutes whether to pause:

SignalHealthyIf not
Connect rateVaries by list, but stableVery low means bad numbers or a caller ID nobody trusts.
Average durationRoughly what your pilot producedMuch shorter means people are hanging up — check the opening line.
Failed countFlat, lowClimbing steadily means a formatting problem. Pause immediately.
Transfers answeredNearly allMissed transfers mean lower concurrency or different hours.

You can pause a running campaign at any time. Calls already connected finish normally, and you can resume from where it stopped.


Improving the numbers

ProblemMost likely causeWhat to change
Nobody answersUnfamiliar caller ID, or wrong time of dayUse a local number. Try early evening. Both matter more than the script.
They answer and hang up in five secondsThe openingName yourself and your business immediately, then ask if now is okay.
Calls run long with no resultNo clear single purposeOne goal per campaign, and a length cap in the instructions.
People sound annoyedToo many attempts, or calling at bad timesDrop to two attempts and narrow the schedule.
Lots of “wrong person”Stale listClean the data. Have the agent end those calls immediately without discussing anything.
Results are not in the CRMIntegration connected but not attached, or no instruction to logCheck both. Attaching and instructing are separate steps.

Questions

How long will a thousand calls take?

Roughly: (calls ÷ concurrency) × average duration, plus retries. A thousand two-minute calls at five concurrent is around seven hours of dialling. Plan the schedule around lawful hours, not around finishing fast.

Can I run several campaigns at once?

Yes. They share your minutes and your account’s capacity, so watch the total rather than each one individually.

Can the agent leave a voicemail?

With voicemail detection on it stops rather than talking to the machine. If you want a message left, that is a deliberate choice — and in some jurisdictions pre-recorded messages carry their own rules. Check before you rely on it.

What happens to contacts who never answer?

After the maximum attempts they are marked as unreachable and the campaign moves on. Pull that list and decide whether they are worth a human attempt or should be retired.

Still stuck? support@vociply.com