Campaigns

A campaign is a list of contacts, a flow, a from-number, and rules about how fast and when. You start it and Talkif works through the list: placing calls up to your concurrency, only inside the hours you allow, retrying the ones that didn’t connect, skipping anyone on the Do Not Call list, and stopping when the list is done or you tell it to. The result is per-contact outcomes and an analytics view of the whole run.

What a campaign is made of

SettingWhat it decidesDefault
FlowThe published flow every call runs (latest version at the time each call is placed)
From numberCaller ID and routing provider — must be able to place calls
ContactsWho gets called. Add individually, by filter (tags, company, search), or all
Concurrent callsHow many calls run at once, 1–50. Also bounded by your account’s concurrent-call limit5
Call windowsWhen calls may be placed: start–end times, optionally per weekday. None = any timenone
Respect contact timezoneEvaluate windows in each contact’s local time, not yourson
Start at / End atStart automatically at a time; auto-pause at a timemanual start; no end

Contact timezones and call windows

Windows are wall-clock times. With Respect contact timezone on (the default), a 09:00–17:00 window means 9 to 5 where the contact is — a list spanning New York and Berlin is called at sensible local hours automatically. A contact’s timezone comes from their record, or is derived from their phone number when not set.

Separately from your windows, Talkif enforces legal calling hours by jurisdiction (for US numbers, 8 am – 9 pm local, per TCPA): a contact outside those hours isn’t refused, they’re held until the hours open. Your windows can be tighter than the law; never looser.

Retries

A contact whose call ends no_answer, busy, failed or canceled is retried automatically, up to 3 attempts per contact, with a delay between attempts so the same person isn’t redialled back-to-back. A contact whose call was answered is done — a completed conversation is never redialled, whatever was said in it. A call that reaches voicemail counts as an attempt; see Transfer and end calls for leaving a message versus hanging up.

Skipping

A contact is skipped — never called — when their number is on the Do Not Call list, when they opted out, or when you skip them manually (POST …/contacts/{contactId}/skip). Skipped contacts don’t hold a campaign open.

Lifecycle

draft
editable
Being configured. Add contacts, change settings.
pending
transient
You pressed start; contacts are being queued.
running
active
Placing calls within concurrency and windows.
draining
transient
Pause or cancel requested; no new calls start, active calls finish.
paused
stopped
Fully stopped. Add contacts, change settings, resume.
completed
terminal
Every contact reached a final state.
canceled
terminal
Stopped for good — unless restarted.

Pause always drains: calls in progress finish, nothing new starts. Cancel drains too if calls are active. Restart from paused, completed or canceled resets every contact that didn’t complete back to pending and runs again — useful for a second pass at the no-answers.

Auto-pause

A running campaign pauses itself, with a notification, when it can’t safely continue:

ReasonWhat happened
Insufficient balanceYour balance fell below the minimum to admit calls
System limitThe account’s concurrency or rate limit was hit for a sustained period
Provider errorThe from-number’s provider is failing calls
End timeendAt was reached

Fix the cause and resume; contacts pick up where they were.

Per-contact status

Each contact’s status is derived from their latest call, so it’s always consistent with call history:

pending
not yet called
Waiting for a slot and a window.
queued
in progress
In the call queue or being placed.
calling
in progress
On a call now.
completed
final
Answered and finished.
no_answer
retry or final
Didn’t answer or was busy; retried until attempts run out.
failed
retry or final
The call errored; retried until attempts run out.
skipped
final
Never called — DNC, opt-out or manual skip.

When a campaign ends with contacts never dialled (cancelled early, end time reached), they’re counted as not called in the overview.

Setting one up

1

Call Center → Campaigns → New Campaign

Name it; pick the flow and the from-number.

2

Add contacts

Individually, or by filter — a tag, a company, a search — to add hundreds at once. Contacts on the DNC list are added but will be skipped.

3

Set pacing and windows

Concurrency to match what your flow and your team can absorb (a flow that creates tickets at 50 concurrent calls creates tickets fast). Windows in the contacts’ local time.

4

Start, or schedule the start

Start now, or set Start at. Watch the first few calls’ transcripts before letting it run — a prompt problem shows up in call three, not call three hundred.

Reading the analytics

GET /campaigns/{campaignId}/analytics (and the campaign’s Analytics tab) gives the run a shape:

  • Outcomes — completed / no answer / failed / skipped, as counts and percentages.
  • Attempt distribution — how many contacts needed 1, 2 or 3 attempts. A heavy tail means your windows are wrong for the list.
  • Voicemail — voicemail / human / undetermined for calls with a detection verdict. A high voicemail rate on a B2C list usually means daytime windows.
  • Failure causes — grouped by structured cause, most common first, so one bad from-number or one provider outage is obvious.
  • Duration histogram — an average hides the bimodal “hung up in 5 seconds” vs “had the conversation” split; the buckets don’t.
  • Cost breakdown and performance (latency, turns, function calls) across the run.

Next