Home / Blog / Guides
Guides

How to run an outbound calling campaign without getting blocked

Set up an outbound AI calling campaign: list prep, calling windows, retries, follow-up rounds, and the consent and outcome rules that keep the line alive.

F Foan Team / Published Jun 10, 2026 / Updated Sep 19, 2026 / 9 min read
A single person working at a desk against a white brick wall in daylight

An outbound campaign is a contact list, an agent, a number to dial from, and a set of rules about when and how often to try. Setting one up in Foan takes four tabs. Keeping it alive takes something else: honest consent, a real opt-out, calling hours the recipient would consider reasonable, and the discipline to stop dialling people who said no.

Both halves are covered here. Skip the second half and the first one stops working within a week, because carriers and handsets stop delivering the calls.

Five boxes showing a campaign moving from list to calling window, dialling, per call outcome and follow up round
A follow up round is a child campaign, not a second upload of the same list.

Step 1: Prepare the list before you open the dashboard

Most campaign problems are list problems, and no dialler setting fixes them.

Know why each number is on the list. A customer who bought from you last month, a lead who filled in your form, a patient who asked for a reminder: each of those is a relationship with a reason to call. A purchased list is not. Beyond the legal exposure, which varies by country and is worth checking for every country you dial into, cold lists generate the complaint and rejection rate that gets a number flagged.

Deduplicate, hard. The same person on a list twice means the same person called twice in one round, and that is the fastest route to a complaint. Deduplicate on the number, not on the name.

Carry your own suppression list. Anyone who has previously asked not to be called must be removed before upload. Foan permanently excludes people who say no during a Foan call, but it cannot know about the person who told your sales team to stop calling last March. That list is yours to maintain.

Fix the formatting. Full international format, country code included. Numbers are validated in the browser before upload, so a badly formatted file is caught rather than half dialled, but fixing it in your spreadsheet is faster than fixing it in an error message.

The rest of this is screen by screen, so create a free account and open a draft campaign alongside. Start with ten rows rather than ten thousand. Phone agents covers the agent that will make the calls, and pricing is worth checking before you size the list, because outbound spend is the easiest kind to misjudge.

Step 2: Fill in the Campaign Details tab

Go to Campaigns, then New Campaign. The wizard has four tabs: Campaign Details, Call Settings, Data Extraction and Follow-ups.

The first tab asks for:

  • Campaign Name and Campaign Description, both internal.
  • Dialing Number, the number the calls go out from.
  • Target Country, described on screen as the country code to dial into.
  • Campaign Duration, a start and end date.
  • Timezone.
  • A calling window, From and To, set as an hour with AM or PM.

The timezone and the calling window are the two fields people set carelessly and regret. The window is enforced in the timezone you choose, so the honest question is not what hours suit your team but what hours suit the person receiving the call. Business hours where they are. Not 8am, not 9pm, and not during a local public holiday that your calendar does not show.

If your list spans several timezones, split it into one campaign per timezone. It is more setup and it is the difference between a call that feels routine and a call that wakes someone up.

Step 3: Set retries and limits on the Call Settings tab

Four controls sit here, and each one is a lever on how aggressive the campaign feels from the other end.

Retry is how many times an unanswered number is tried again. Keep it low. Three attempts across a campaign reads as persistence; eight reads as harassment, and the person who blocks you after the eighth was never going to buy.

Cool Down is the wait between attempts on the same number. Long enough that the second call lands in a different part of someone's day. A cool down measured in minutes turns a campaign into a nuisance.

Max Call Duration caps a single call. This is a cost control and a safety net: it ends the conversation that has stopped going anywhere, and it stops a call that connects to a machine from running indefinitely.

Inactive Duration ends a call that has gone quiet. Silence on a line is usually a caller who has put the phone down without hanging up, and there is no reason to pay for it.

Step 4: Upload the contact list

The contact upload is on the same tab. It accepts .csv and .xlsx.

Download the template rather than building the file yourself. It arrives as campaign_contacts_template.csv with exactly the columns the campaign expects:

phoneNumber,participantName,<your custom variable names>
+1234567890,sample_name,...

phoneNumber and participantName are fixed. Every column after them corresponds to a custom variable defined on the agent, which is how a single campaign says something different to each person: an order number, an invoice amount, an appointment time. Whatever your agent's script refers to by variable, put it in its own column.

Phone numbers are checked in the browser before the file goes anywhere. When they all pass, the upload runs and confirms that every number was valid.

Step 5: Decide what to extract from each call

The Data Extraction tab defines the structured fields you want pulled out of each conversation, so a completed campaign gives you a table rather than a pile of transcripts.

Be specific and be sparing. Extracting "customer sentiment" gives you a column nobody acts on. Extracting the date a caller proposed for a site visit, or the reason they gave for not paying yet, gives you a next action. Ask for what you would otherwise pay a person to read the transcripts to find.

Step 6: Set the follow-up rules

The Follow-ups tab is where a campaign either respects people or grinds them down.

The toggle reads "Call people again after this campaign". Switch it on and when the campaign finishes, Foan creates the next round on its own, with the same agent, the same number and the same calling hours. Each round is created as its own campaign, linked to the parent, so you can see exactly what happened in round two without it being mixed into round one.

Under it is a list of who gets called again:

OutcomeWhat it meansOn by default
Did not answerThe phone rang and nobody picked upYes
Never reachedWe never got to call themYes
Went to voicemailThe call reached an answering machineYes
Hung upThey picked up and ended the call straight awayNo
Asked us to call backThey asked for another timeNo
UnclearThey spoke, but did not say yes or noNo
InterestedThey said yesNo

The defaults are the three that carry no signal at all: nobody picked up, nobody was reached, a machine answered. Those are the people you have not actually spoken to yet.

Two options deserve thought before you tick them. Asked us to call back sounds obviously right, but a callback usually carries a specific time the caller named, and a blanket follow-up round ignores it. Interested means they already said yes, so calling them again in a batch is almost always worse than a person picking up the phone.

Then How many times, capped at five rounds after the first run, and Wait before each round in days.

Three outcomes are never called again, no matter what is ticked: not interested, do not call, and wrong person. The screen says so plainly, and it is enforced in the platform rather than left to your configuration. Someone who declines, asks to be left alone, or turns out not to be the person you wanted is out of that campaign permanently.

How do you read the results honestly?

Every call lands in one of six buckets: answered, no answer, busy, rejected, voicemail, failed.

That separation matters more than it sounds. Until September 2026, a busy line and an unanswered ring were both labelled "failed", which made a perfectly healthy campaign look broken and hid the one signal that actually indicates trouble. When the outcome names were fixed, past calls were relabelled too, so historical campaigns read honestly as well. Today "failed" means a call that genuinely failed, and it is the number worth watching.

On top of the outcome, answered calls carry a per-call result: interested, callback, not interested, do not call, wrong person, voicemail, hung up, no answer or unclear. The five that decide whether someone is ever called again each have to be backed by a verbatim quote from the transcript, so an exclusion can be checked rather than taken on trust. A callback result can carry the time the caller asked for, up to thirty days out.

One thing not to be surprised by: calls placed before per-call results shipped show no result at all. That is by design, not missing data.

Two columns pairing each behaviour that raises a spam score with the campaign setting that lowers it
Every item on the left has a named setting on the right. None of them is a phone call to your carrier.

Why do outbound calls get blocked, and what stops it?

Carriers and handset apps decide whether your number rings normally, rings with a warning label, or does not ring at all. That decision is driven by behaviour, not by what you are selling.

Complaints and rejections are the signal. A number whose calls are rejected or reported quickly, repeatedly, from a pattern of short calls, gets flagged. Every list-quality decision in step 1 is really a deliverability decision.

Volume from a cold number looks like spam. A number that has never placed a call and suddenly places thousands in an afternoon fits the exact profile that filtering looks for. Start small, build up over days.

Repeat dialling is what triggers complaints. This is why the retry and cool down settings in step 3 matter as much as the script.

Give a real opt-out and honour it immediately. The agent should accept "stop calling me" in plain speech, in any phrasing, and that call must be recorded as do not call. The permanent exclusions exist so that this holds across every future round automatically.

Say who is calling, in the first sentence. Name the business. An opener that hides who is on the line converts worse and gets reported more.

In India there is an extra layer of carrier filtering that catches legitimate business calls as well as spam. Why your AI calls get marked Spam Likely in India covers what causes it and what can be done about it.

Where to go next

Payment reminders are the outbound use case with the tightest rules and the most to lose from getting the tone wrong. Payment reminder calls that stay polite covers the guardrails specific to collections.

If you have not built the agent the campaign will use, start with how to build an AI phone agent. For what phone agents handle in general, see phone agents.

Try it on your own number

Build an agent, point a number at it and listen to the first call.

Frequently asked questions

What file format does the contact list need to be in?
CSV or XLSX. Download the template from the campaign and it arrives with the columns already correct: phoneNumber, participantName, then one column for each custom variable your agent uses. Numbers are validated in the browser before anything uploads.
What happens to a contact who does not answer?
The call is recorded as no answer, not as a failure. Within the campaign it is retried according to your retry and cool down settings, and if you have follow-ups switched on, people who did not answer are in the default group that gets called again in the next round.
Can people who said no be called again in a follow-up round?
No, and this cannot be overridden. Anyone recorded as not interested, do not call, or wrong person is permanently excluded from every future round of that campaign, whatever boxes are ticked on the follow-up screen.
How many follow-up rounds can one campaign have?
Five after the first run. Each round is created as its own child campaign using the same agent, number and calling hours, with a wait you set in days between rounds.
Why did my old campaigns show so many failed calls?
Until September 2026 a busy line and an unanswered ring were both labelled failed. That is fixed. Outcomes now separate answered, no answer, busy, rejected, voicemail and failed, and historical calls were relabelled.
What are the safest hours to call?
Normal local business hours in the timezone of the person being called, never early morning, late evening or local public holidays. Set the window on the campaign rather than trusting the list to be in one timezone.
Get started

Voice agents that pick up.
On the first ring.

Create an agent, attach a number or forward your existing line, and hear it answer. Usage-based pricing, no setup fee.