Skip to content

CX Outbound Campaigns

Outbound campaigns dial leads from a list and connect answered calls to agents on a bound queue. Use Preview when agents should review lead details before accepting, Progressive when the dialer connects the customer first and bridges to an agent when one is available, or Predictive when the dialer paces multiple outbound lines ahead of free agents to raise occupancy while holding a target abandon rate.

Campaigns share the bound queue’s agent hunt strategy, login/logout, wrap-up, skills routing, and disposition rules. Inbound queue calls always take priority — the dialer runs only when no customers are waiting in the bound queue and agents are available.

Architecture

flowchart LR
  A[Leads CSV or CRM API] --> B[Campaign]
  B --> C[Dialer]
  C --> D[Lead phone]
  D --> E{Answered?}
  E -->|Preview| F[Agent preview UI]
  F --> G[Agent accepts]
  E -->|Progressive or Predictive| H[Customer connected]
  H --> I[Queue bridges agent]
  G --> J[Bound queue]
  I --> J
Component Role
Campaign Stores dial settings, schedule, caller ID, and lead source configuration in the Portal.
Leads Per-number records with priority, retry/cool-off counters, and CRM metadata.
Dialer QVOICE Platform queues service selects leads, places outbound calls, and respects campaign schedule and timezone windows.
Bound queue Agents who handle connected campaign calls; queue strategy and member list apply.
Agent desktop (UCP) Shows lead name, number, ticket ID, and campaign context on preview or connect. See User Guide.

Campaign types

Type Customer experience Agent experience
Preview Phone rings; on answer the call is held until an agent accepts. Lead card appears first; agent reviews details and clicks to connect.
Progressive Phone rings; on answer the customer is connected immediately. Agent is rung after the customer answers; optional greeting plays if agent SLA is exceeded.
Predictive Same connect path as Progressive after answer. Same agent hunt after answer; the dialer places extra outbound lines timed to free agents so occupancy stays high under an abandon-rate goal.

Progressive-only options

When Type is Progressive or Predictive, additional SLA fields appear:

Option Description
Customer wait for Agent SLA (s) Seconds the customer may wait in silence for an agent to answer before optional greeting audio plays. Default 3.
Greeting post Lead wait SLA Media file played to the customer when agent SLA is exceeded (optional). Without it, the customer waits in silence until Agent Dial Timeout.
Agent Dial Timeout (s) Maximum seconds to ring agents for this lead. If no agent answers, the customer is transferred into the campaign queue with hold music. For Predictive, a typical starting value is 15.

Predictive dialing

Predictive campaigns keep agents busy by dialing ahead of free capacity: the system estimates how many agents will be free when leads answer, admits unbridged outbound lines accordingly, and slows or stops overdial when measured abandon approaches the campaign goal (for example 3%).

Use Predictive when you have enough logged-in agents for stable pacing (often 15+ recommended) and want higher occupancy than one-at-a-time Progressive dialing. Prefer Progressive or Preview for small teams, highly regulated lists that must stay 1:1, or when agents must review every lead before connect.

What Predictive does

Behavior Description
Goal-driven pacing Max abandon rate is a setpoint. Under goal, the dialer may raise its dial level; near goal it tapers; only panic collapses to true 1:1.
Warm start Cold campaigns dial conservatively (near 1:1 in answer units) until enough live answers and handle-time samples exist. An empty answer-rate window uses a 1.0 prior (true 1:1), not a fictional low answer rate.
Free-agent forecast Estimates how many agents will free within the answer horizon (linear, exponential, or empirical talk-time model), then applies hit/miss forecast bias when enabled (on by default).
Line sizing Converts free-agent capacity into a target count of unbridged lines (mean, tail default, or rate-based).
Burst capacity latch Every placed dial opens or joins a burst cohort that freezes expected agent demand until those legs drain or the burst TTL expires — so mid-burst idle refill cannot strand agents or double-authorize.
Idle floor When fill is done, the dialer still climbs toward enough lines to keep idle agents busy (including an AR-aware floor when answer rate is low), without ignoring abandon brakes.
Abandon treatment If a live answer cannot be bridged in time: play safe harbor media then disconnect, or hang up immediately.
Inbound still wins Same as other campaign types — waiting inbound queue customers pause outbound dialing.

An abandon for pacing is a live-answered lead that never reaches an agent (true abandon), or — if you select the compliance definition — also bridges that exceed Customer abandon wait. Both rates can be reported; only the selected definition drives brakes.

Modes (what operators see)

Mode When Behavior
Warm-up Cold samples / below min agents for predictive Conservative admit; trusted answer rate converts to 1:1 in answer units.
Predictive Warm and under the soft abandon band Forecast E_free, size lines, adapt dial level upward when safe.
Taper Soft band, or latched hard band Dial level steps down; hard band keeps predictive answer-unit sizing and continues updating forecast bias (it does not pin the target to idle). Dial level cannot step up while hard-latched.
Panic 1:1 Abandon ≥ goal × panic ratio (sticky) Target pins to idle agents; placement still capped per tick; cohort claim is true 1:1 until recover hysteresis clears.

Hard band is a brake, not panic

Hard-band taper is meant to back off overdial while hit/miss bias corrects the forecast. Only panic forces line 1:1. If abandon sits just under the panic trip while mode stays panic, that is sticky hysteresis working — not a stale reading.

How the algorithm works

At each pacing tick the dialer roughly:

  1. Measures logged-in / idle agents, unbridged outbound lines (bridged talks do not block refill), answer rate, average handle time, and governing abandon rate in a sliding window.
  2. Chooses a mode — warm-up, predictive, taper (soft or hard), or panic 1:1 when abandon is severely over goal (panic is evaluated first).
  3. Forecasts free agents at the expected answer time (E_free), corrected by hit/miss forecast bias when enabled (bias stays live in hard-band taper; frozen in warm-up / panic).
  4. Sizes lines from that capacity and answer rate, applies the idle floor when needed, then caps (max calls per agent, max dials per tick, optional CPS, target step-up slew).
  5. Adapts dial level on a wall-clock interval (not every tick): step up when safely under goal, step down when abandon rises (no headroom-up while hard-latched).
  6. Places or denies the next lead dial inside a burst cohort (AR-scaled claim for predictive/taper; 1:1 claim for panic / strict warm-up); telephony after answer reuses the Progressive connect path (immediate idle agent or queue hunt, greeting SLA, safe harbor).
flowchart TD
  Tick[Pacing tick] --> Measure[Measure agents AR AHT abandon]
  Measure --> Mode{Mode}
  Mode -->|Cold samples| Warm[Warm-up near 1:1 answers]
  Mode -->|Under soft band| Pred[Forecast E_free and size lines]
  Mode -->|Soft or hard band| Taper[Taper dial level keep answer units]
  Mode -->|Far over goal| Panic[Panic 1:1]
  Warm --> Admit[Admit via burst cohort]
  Pred --> Admit
  Taper --> Admit
  Panic --> Admit
  Admit --> Lead[Place outbound lead]
  Lead --> Answer{Live answer?}
  Answer -->|Yes| Bridge[Immediate agent or hunt / safe harbor]
  Answer -->|No| Clear[Release cohort claim]

Configure Predictive in the Portal

  1. Set campaign Type to Predictive.
  2. Complete Progressive SLA fields as needed (greeting, customer wait, agent dial timeout).
  3. Open the Predictive Configuration section (same collapsible style as General Configuration).
  4. Set Core knobs for abandon goal, pacing profile, and treatment.
  5. Optionally click Predictive Advanced for windows, brakes, estimators, and forecast bias (button becomes Hide Predictive Advanced while open). Labels turn bold when a value differs from the product default. Some planned fields are read-only until the dialer wires them.
Core fields
Field Default Why it exists How it is used
Max abandon rate (%) 3 Regulatory / business abandon goal. Saved as a fraction (0.03). Measured abandon is compared to this goal to raise or lower dial level and to open soft, hard, and panic bands.
Customer abandon wait (s) 5 How long a live answer may wait for an agent. Late bridges beyond this count toward compliance abandon when that definition is selected.
Abandon rate definition True abandon Which abandon rate governs pacing. True abandon = answered, never bridged. Compliance abandon = true abandon plus bridges slower than customer abandon wait.
Pacing profile Balanced How hard to chase occupancy vs headroom. Fills brake ratios and dial-level steps: Compliance first (conservative), Balanced, Occupancy first (aggressive). Explicit Advanced keys override the profile. The abandon goal itself is never changed by a profile.
Max calls per agent 2 Overdial ceiling while under goal. Caps concurrent attempts per logged-in agent and feeds the unbridged line ceiling.
No-answer timeout (s) 30 How long a lead may ring. Releases capacity on no-answer; also bases default burst-claim TTL.
Min agents to dial 1 Do not dial into an empty pool. Blocks new predictive dials below this logged-in count.
Abandon treatment Safe harbor Customer experience when bridge fails. Safe harbor plays media then disconnects; Hangup clears immediately.
Safe harbor media — Audio for safe-harbor treatment. Played before kick when treatment is Safe harbor. Length is detected from the media file automatically.
Advanced fields

Open Predictive Advanced for tuning. Prefer Core + a pacing profile unless lab or production metrics show a clear need.

Measurement and warm-up

Field Default Why / how used
Answer rate window dials / (s) 100 / 900 Sliding window for answer-rate (AAR). Whichever bound fills first. AAR scales line targets and per-tick dial caps. Shorter windows react faster; longer windows are smoother.
AHT window calls 50 Recent bridged calls for average handle time used by the free-agent forecast.
Warmup live answers 8 Live answers required before leaving conservative warm-up.
Warmup exit ratio 0.6 Sticky warm-up exit so the campaign does not flap in and out of warm-up and re-lock dial level at 1:1.
Min AHT / answer samples 5 / 10 Minimum samples before AHT or AAR is trusted for aggressive pacing.

Admit rate and dial level

Field Default Why / how used
Max dials per tick 2 Hard cap on new dials per tick at AAR 1.0 (scaled by 1/AAR at lower answer rates).
Max CPS empty Optional calls-per-second limit; empty = no CPS clamp.
Burst claim TTL (s) empty Max age of a frozen burst capacity claim; empty → no-answer timeout + 15s. Predictive/taper claims scale with answer rate; panic / strict warm-up claim 1:1.
Adapt interval (s) 15 Seconds between dial-level step up/down adjustments.
Min dial level 1 Floor on the overdial multiplier and idle-floor behavior (1 = keep agents busy; values below 1 allow under-dial).
Dial level step up / down 0.1 / 0.2 How fast dial level rises under goal or falls when abandon rises (asymmetric by design). Hard-band latch blocks step-up.
Max target step up 2 Limits how fast the unbridged line target may grow in one admit tick (reductions are never slewed).

Abandon brakes and panic

Field Default Why / how used
Abandon soft / hard / recover ratios 0.7 / 0.8 / 0.9 Soft opens taper early; hard latches stronger taper with hysteresis. Hard band does not force 1:1 — see Modes.
Panic abandon / recover ratios 2 / 0.75 Enter 1:1 panic at goal × panic ratio (e.g. 6% on a 3% goal); sticky until recover ratio clears.
Abandon min samples 20 Hard/panic entry ignores tiny denominators that would look like 100% abandon; exit is never blocked by the sample floor.

Free capacity and line sizing

Field Default Why / how used
Free estimator Linear linear, exponential, or empirical model of agents freeing within the answer horizon.
Line sizing Tail mean, tail, or rate conversion from free agents to unbridged line targets.
Line sizing alpha 0.12 Overshoot budget for tail/rate sizing (hybrid occupancy); empty uses the abandon goal.
Max line scale 4 Safety ceiling when low answer rate widens line targets.

Agents and forecast bias

Field Default Why / how used
Min agents for predictive 0 Pin progressive-style warm-up below this logged-in count (0 = off).
Recommended min agents 15 Operator guidance; warns when the pool is small (does not hard-block dialing).
Forecast bias enabled On Calibrates free-agent forecast from recent hit/miss (IMMEDIATE connect success vs park-for-hunt). Child fields (gain, max, window, target miss rate, miss weight) appear only when enabled. Miss weight default is 1; Bias gain default is 0.5. Bias keeps updating during hard-band taper so over-prediction backs off without collapsing to panic.

Read-only today (not wired in the dialer)

Field Notes
Allow idle zero overdial Planned flag; admit path does not read it yet (idle floor already refills when agents are free).
AMD enabled / AMD not-sure action Reserved for answering-machine detection Phase 2.
Max target step down Reductions are not slewed; braking uses dial-level and abandon bands.

Start simple

Set Max abandon rate, choose Pacing profile = Balanced, configure Safe harbor media, leave Forecast bias on, and leave other Advanced knobs at defaults unless occupancy or abandon metrics justify a change. Compliance-sensitive accounts should prefer Compliance first and True abandon or Compliance abandon per policy.

Create a campaign

Navigate to the QVOICE Platform Portal:

  1. Open Call Center on the top bar.
  2. Open Campaigns on the left bar.
  3. Click + Add to open Campaign Builder.

The builder is organized into collapsible sections: General Configuration, Predictive Configuration (when Type is Predictive), Select Queue, Schedule, Caller ID, and Leads.

General configuration

Option Description
Name Campaign display name. Use a name that identifies the list or business purpose.
Note Internal description of the campaign goal or audience.
Type Preview, Progressive, or Predictive. See Campaign types and Predictive dialing.
Retries Maximum dial attempts per lead while in cool-off/retry cycle before the lead is marked Failed.
Cooloff (s) Seconds to wait after a failed dial before the lead becomes dialable again. Default 3600 (one hour) is a common starting point.
2nd Cooloff (s) Optional longer cool-off after the second failed attempt. Overrides per-lead CSV value when set on the campaign.
3rd Cooloff (s) Optional cool-off after the third failed attempt.
Dial Cycles Number of full passes through the active lead list per dial cycle window. 0 means no cycle limit.
Dial Cycles Time Time of day (hh:mm) when dial cycles reset. Used with Dial Cycles.
Mask Lead Caller ID When on, agents do not see the lead’s real caller ID on the agent leg (privacy / blind preview).

Select queue

Option Description
Queue Required. Queue whose agents receive connected campaign calls. The queue must exist and have Outbound Calls enabled if your deployment requires it. All queue settings apply: strategy, wrap-up, skills routing, dispositions, and agent login state.

Queue readiness

Configure agents, strategy, greeting/hold audio, and wrap-up on the bound queue before starting a campaign. See CX Queues.

Dialing capacity and shared agents

For Progressive campaigns, every outbound dial reserves one idle agent of the bound queue before the lead's number is called. That agent stays reserved for this dial until the call is connected or ends, so the number of leads a campaign can dial at the same time is limited by the number of idle agents in its queue.

The reservation belongs to the agent, not to the queue. An agent who is a member of several queues is still a single dialing slot: while a campaign on one queue is using it, campaigns on every other queue skip that agent. This also applies when the agents are only placeholders for calls handed to an AI voice agent rather than to a person.

Bound queues Agents Campaigns can dial at the same time
Queue A, Queue B and Queue C all contain the same 14 agents 14 14 in total, shared — the first campaign to start can take all 14 and the others wait for agents to free up
Queue A has agents 1–13, Queue B 14–26, Queue C 27–32 32 13 + 13 + 6 = 32, independently

Running several campaigns in parallel

To run campaigns side by side at a predictable rate, give each bound queue its own agents. Adding the same agents to more queues does not add capacity.

Schedule

Campaign Schedule time groups restrict when the dialer may place calls (account timezone). Add one or more rows with Add.

Field Description
Weekday Days the window applies (mon … sun). Multi-select.
Start Time Window start (hh:mm, 24-hour).
End Time Window end (hh:mm, 24-hour).
Month Day Start / Finish Optional day-of-month range (1–31).
Month Optional month filter (1–12). Multi-select.

A campaign can be Running, Stopped, or Scheduled (running but outside the current schedule window). Use the Play/Stop control on the campaigns list to start or stop dialing.

Caller ID

Option Description
Enabled Turn on campaign-specific outbound caller ID. When off, the dialer uses the queue phone number, then account default caller ID.
Type Account — pick a number from account main numbers. Custom — enter name and E.164 number.
Add Multiple caller ID rows can be configured; the dialer rotates or selects per deployment rules.

Leads

Import leads from a CRM API, a CSV upload, or Add Lead. While a campaign is Running, you cannot upload, sync, add, or delete leads.

Import from CRM API

Field Description
Method GET, POST, or PUT. The Portal calls this URL when you click Sync.
URL HTTPS endpoint that returns a JSON object (not a bare array).
Parse Response Body JSON mapping. Values are field paths in the CRM response, not the lead data itself.

Click Sync on a saved campaign that is not running (disabled while the campaign is running, while the mapping is invalid, or while mapping edits are unsaved). Save the campaign after you change the map. The request sends no Authorization header and no request body. If the CRM needs an API key (8x8, Salesforce, and most hosted CRMs), point URL at a webhook you control (for example n8n). That webhook authenticates to the CRM and returns the JSON shape below.

What leads_array is

leads_array is the path to the array of lead objects in the HTTP response. It is not a column on the lead.

The other keys (first_name, number, number_2, …) are paths inside each object in that array. Dot notation and array indexes are supported (data.leads, phones[0].phone, phones[1].phone).

The editor shows an error until leads_array, first_name, and number are non-empty.

Mapping to fill in

Copy this into Parse Response Body when the webhook returns a contacts array with fname, lname, phone, and optional extra phones (same example as the info tooltip on the campaign form):

{
  "leads_array": "contacts",
  "first_name": "fname",
  "last_name": "lname",
  "number": "phone",
  "number_2": "phone_2",
  "number_3": "phone_3",
  "number_4": "",
  "priority": "crm.priority",
  "ticket_id": "",
  "dial_retries": "",
  "first_cooloff": "",
  "cooloff": "",
  "notes": ""
}
Mapping key Required Meaning
leads_array Yes Path to the lead list in the response
first_name Yes Path to first name on each lead (must be a JSON string)
number Yes Path to the phone number on each lead (must be a JSON string; E.164 recommended)
number_2 No Path to the first extra phone. Dialed only after number is not answered. Leave "" when the CRM has one phone
number_3 No Path to the second extra phone. Dialed after number_2
number_4 No Path to the third extra phone. Dialed after number_3. An empty path is not dialed
last_name No Path to last name
priority No Path to priority. CRM value may be a JSON number (1) or a string ("1")
ticket_id No CRM or ticket reference shown to the agent
dial_retries No Path to per-lead retry override (JSON number or string)
first_cooloff No Path to first cool-off in seconds (JSON number or string)
cooloff No Path to second cool-off in seconds (JSON number or string)
notes No Free-text note
skill No Skill name, comma-separated skills, or a JSON array of strings
extension No Agent or destination extension

Leave unused optional keys as "".

API response the URL must return

HTTP 200. Top level must be a JSON object. first_name and number must be strings (a numeric phone fails the sync). priority, dial_retries, first_cooloff, and cooloff may be JSON numbers or strings.

Response that matches the mapping above:

{
  "contacts": [
    {
      "id": "1",
      "fname": "Paul",
      "lname": "Doe",
      "phone": "+147987987",
      "phone_2": "+1479000001",
      "phone_3": "+1479000002",
      "crm": { "priority": 0 }
    },
    {
      "id": "2",
      "fname": "John",
      "lname": "Dax",
      "phone": "+147987597",
      "crm": { "priority": 10 }
    }
  ]
}

The first contact is stored as number +147987987 and alt_numbers ["+1479000001", "+1479000002"]. The empty number_4 path is not dialed. John is stored with only number +147987597, because phone_2 and phone_3 are absent. A missing index such as phones[2].phone is skipped the same way. A present extra phone must be a JSON string. A numeric phone fails the sync. An old map that has no number_2 key still imports a single number.

When the webhook uses the same key names as the Portal (common for n8n), this mapping and response also work. Integer fields may be JSON numbers:

{
  "leads_array": "leads_array",
  "first_name": "first_name",
  "number": "number",
  "last_name": "last_name",
  "priority": "priority",
  "ticket_id": "ticket_id",
  "dial_retries": "dial_retries",
  "first_cooloff": "first_cooloff",
  "cooloff": "cooloff",
  "notes": "notes"
}
{
  "leads_array": [
    {
      "first_name": "Quinten",
      "last_name": "Rowland",
      "number": "+27623182874",
      "priority": 1,
      "ticket_id": "TICKET-1001",
      "dial_retries": 3,
      "first_cooloff": 60,
      "cooloff": 300,
      "notes": "Imported from CRM"
    }
  ]
}

If the CRM returns a top-level array, wrap it ({ "contacts": [ ... ] }) and set "leads_array": "contacts". Nested lists use a dotted path, for example "leads_array": "data.leads".

8x8

Do not put api.8x8.com in URL. Sync cannot send the 8x8 bearer token. Use a webhook that calls 8x8 and returns JSON.

Recommended: reshape 8x8 contacts in the webhook to the contacts / fname / phone example, then use the mapping in Mapping to fill in.

If the webhook forwards 8x8 Directory contacts unchanged (list under items, name fields, phones array):

{
  "items": [
    {
      "firstName": "John",
      "lastName": "Doe",
      "phones": [
        { "phone": "+18005551234", "primary": true }
      ]
    }
  ]
}
{
  "leads_array": "items",
  "first_name": "firstName",
  "last_name": "lastName",
  "number": "phones[0].phone",
  "number_2": "phones[1].phone",
  "number_3": "phones[2].phone",
  "number_4": "",
  "priority": "",
  "ticket_id": "",
  "dial_retries": "",
  "first_cooloff": "",
  "cooloff": "",
  "notes": ""
}

phones[1].phone is stored as the first alternate. If that contact has no second phone, the index is skipped and the lead keeps only number.

If the webhook forwards 8x8 Connect contacts (list under items, phone at addresses.msisdn), set "leads_array": "items" and "number": "addresses.msisdn". Each item still needs a string first-name field. Add one in the webhook if 8x8 does not provide it.

Check the webhook first

Open the URL in a browser or with curl. Copy the array path into leads_array and the per-lead keys into first_name and number.

Import from CSV

Drag and drop or select a .csv file, then click Upload on an existing campaign.

CSV columns:

Column Required Description
number Yes Lead phone number
number_2 No First alternate phone. Dialed only after number is not answered
number_3 No Second alternate phone. Dialed after number_2
number_4 No Third alternate phone. Dialed after number_3
priority Yes Dial priority (lower or higher per your list sort — higher priority leads dial first)
first_name Yes Shown on agent preview
last_name No Shown on agent preview
retries No Per-lead retry override
ticket_id No CRM or ticket reference passed to the agent
cool_off No Per-lead first cool-off override (seconds)
cool_off_2nd No Per-lead second cool-off override
cool_off_3rd No Per-lead third cool-off override
note No Free-text note on the lead card
type No Lead type tag (optional classification)

Download sample CSV — qvoice-campaign-leads-sample.csv

Use Export Leads on the campaign editor to download the current lead list.

Add Lead

On a saved campaign that is not running, Add Lead sits with the CSV actions. Each line has first name, last name, number, and priority. Add number reveals up to three extra phones on that line. Add line appends another lead. A completely empty line is skipped. A line that is partly filled still needs a first name, last name, number, and priority before it is saved.

Add is disabled while the campaign is running, the same as Upload and Sync. The button is hidden until the campaign has been saved.

Alternate numbers and agents

The dialer, not the agent, decides which of a lead's numbers to dial. When number is not answered, it moves on to number_2, then number_3, then number_4 before the lead goes into cool-off.

From UCP, an agent:

  • Sees only the number on the current call. The lead's other numbers are not listed, and the agent cannot pick which one the dialer tries next. With Mask Lead Caller ID on, the agent does not see the number at all.
  • Can schedule a callback to the number on the current call. Pick a disposition with Follow Up - Type and Follow Up - Date. At that time, a follow-up card appears in UCP with a Call button for that number. The callback goes to the agent who set it, not back through the campaign dialer. A follow-up can also be scheduled for any number, with a reason instead of a disposition, from the dial row or the search bar, and every open one is listed in the Scheduled tab of Last Activity (see the User Guide, Schedule a Follow-up).
  • Can dial any number by hand from the dialpad. That call is a normal outbound call. It is not logged against the lead and does not change the lead's status or retries.
  • Cannot add or change a lead's numbers.

Admins set a lead's numbers in the Portal, while the campaign is not running, through Upload, Sync or Add Lead. There is no field to edit a single lead's numbers. To replace a lead's alternate numbers, use Add Lead with the same number and the new alternates. The existing lead is updated rather than duplicated, and it is reset to Active, so its retries start over. If the alternates are left empty, the stored ones are kept.

Dial By Timezone

Restrict dialing to a single daily window evaluated in each lead’s timezone (from phone number or account default).

Option Description
Enabled When on, dial only between From and To times in the lead’s local timezone. Mutually exclusive with Dial by Schedule by Timezone.

Dial by Schedule by Timezone

Fine-grained retry schedule per lead timezone — define allowed days and one or more time windows per day.

Option Description
Enabled When on, the dialer dials a lead only when local time falls inside a configured window. Mutually exclusive with Dial By Timezone.
Window Duration (hours) Default length of each dial window (hours). Default 1.
Day N Day offset from lead creation (0 = same day). Empty day = skip.
Times One or more start times (HH:MM, 24-hour) per day. Add time / Add day (up to 7 days).

Timezone source

Lead timezone is derived from the phone number when possible; otherwise the account default timezone applies.

Lead status

Call Center → Status → Leads shows real-time dialer state per lead.

Status Description
Active Lead is ready to be dialed (new).
In Progress Lead is currently being dialed or awaiting retry (dialing, retry).
Cool Off Lead was dialed but not connected; waiting for cool-off timer (cooloff).
Voicemail Agent or dialer marked voicemail; treated like cool-off until timeout.
Successful Lead answered and connected to an agent (success). Shows Agent (name + extension), answer time, and talk time for Progressive and Predictive.
Failed Retry limit exhausted; lead will not be dialed again unless reset.

Agents can set Voicemail from the desktop when they reach an answering machine.

Start and stop

Action Behavior
Start (Play) Campaign status becomes Running (or Scheduled if outside schedule window). Dialer begins selecting eligible leads. A start after Stop cold-resets Predictive pacing state (new warm-up / dial level).
Stop In-progress dials are stopped and moved to retry. Leads in cool-off remain in cool-off until their timer expires, even after restart. For Predictive, the last pacing KPIs remain available on live dashboards until the next start (the dialer instance is not wiped on stop alone).

Inbound priority

The campaign dialer dials only when no customers are waiting in the bound inbound queue and agents are available. High inbound volume pauses outbound dialing automatically.

Campaign activity

Call Center → Campaigns → Activity provides a cradle-to-grave report for dialed leads: dial result, agent name/extension, ring time, talk time, and (for Progressive / Predictive) customer wait SLA and agent SLA columns.

Campaign calls on the Live Calls Panel

Status → Live Calls Panel lists campaign calls together with every other active call. A campaign call shows Direction Outbound and, under Queue, the queue the campaign is bound to.

  • Caller shows the lead's number for the whole call: while it rings, once the lead is connected, and after it is transferred to the campaign's post-action flow (for example a CSAT menu).
  • Callee shows where the call is at that moment. Once the lead is in the post-action flow, that is the post-action extension.

Live queue / agent dashboards can show Predictive pacing KPIs while a campaign is running (and retain the last snapshot after Stop until the next Start): pacing mode, abandon vs goal, dial level, forecast bias / hit-miss, burst capacity, and measured dial CPS. Use those tiles together with Leads Status when tuning profiles or Advanced brakes.

Operational checklist

  1. Create and configure the bound queue (agents, strategy, audio, wrap-up).
  2. Create the campaign — set type, retries, cool-off, queue, schedule, caller ID.
  3. For Predictive: set Core abandon goal, pacing profile, and safe-harbor media; confirm enough agents are logged in (recommended 15+).
  4. Upload or sync leads; verify Leads Status shows Active rows.
  5. Start the campaign during the schedule window.
  6. Monitor Activity, Leads Status (Successful rows should show the answering agent), and live Predictive KPIs — watch abandon vs goal, mode (warm-up / predictive / taper / panic), and adjust profile or Advanced brakes if needed.