Guide
An outbound campaign, from list to report
From a CSV to a report, with calling windows and compliance rules.
25 minutes 6 steps
A campaign that dials inside permitted hours, with a written reason for every contact it did not call.
- A published assistant and a number or trunk for outbound calls.
- A CSV with a phone column. The header can be phone, phone_number, number, mobile, telephone or to.
- Credit in the wallet: a call only starts if a minute of it can plausibly be covered.
Create the campaign and say who answers
The first two wizard steps are short: name, description, campaign variables, then the assistant or squad that takes the call.
Engage → Campaigns → Create → Details · Who answers
How it dials: number, caller id, concurrency
Choose between a number and a trunk. You can set a pool of caller ids that rotate. Concurrent calls start at one — raise it slowly, because a dialler that is too fast looks like a dialler that is too fast to the carrier and to the person being called.
Dial through: A number / A SIP trunk · Caller ID pool · Max concurrent calls 1 · Ring for 30 s
When it dials: days, hours, timezone
The defaults are weekdays between 09:00 and 20:00 in the timezone you pick. There is a panel showing the national rules for the countries on your list, and a switch that lets you ignore them. That switch exists because some teams hold written consent; do not touch it if you do not.
Days · “Not before” 09:00 · “Not after” 20:00 · default timezone UTC
Control: suppression, consent, budget, attempts
This is where suppression lists go, along with the maximum attempts per contact — three by default — and the budget cap. Require consent and observe holidays are off by default, so turn them on yourself if you work in the EU. There is also a dry-run switch that walks the entire dispatcher and calls nobody.
Max attempts 3 · Exponential backoff · base delay 15 min · dry run
Import the contacts and read the preview
Import takes a CSV and shows a preview with the column mapping and per-row errors before it writes anything. Columns it does not recognise become per-contact variables, available in the prompt as {{variable}}. If no column maps to a phone number, the import stops.
Campaign page → “Import contacts” → CSV + default country + skip suppressed
Start it, then read the report
Start, pause, resume and cancel live on the campaign page. Pause and cancel ask whether to end calls in progress too, with a live count, and let you write the closing line spoken before hangup. Progress shows as five figures; per-contact detail is in the contacts tab, which refreshes every fifteen seconds.
Start · Pause · Resume · Cancel · “Export results”
How to tell it worked
- The completed counter climbs and the failed counter stays small.
- Contacts that were not called carry one of the 19 named skip reasons, not just a “skipped” state.
- The results export downloads and holds one row per contact.
What does not work yet
Every guide has this section. If it were missing, it would mean we had not looked hard enough.
- National calling rules are shown as information and can be overridden with a switch. The liability stays yours.
- The dispatcher runs every minute and is built so two overlapping runs cannot dial the same contact twice. That was proven with concurrency tests, not with a real campaign at volume.