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:
- 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.
- Chooses a mode — warm-up, predictive, taper (soft or hard), or panic 1:1 when abandon is severely over goal (panic is evaluated first).
- 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). - 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).
- 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).
- 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¶
- Set campaign Type to Predictive.
- Complete Progressive SLA fields as needed (greeting, customer wait, agent dial timeout).
- Open the Predictive Configuration section (same collapsible style as General Configuration).
- Set Core knobs for abandon goal, pacing profile, and treatment.
- 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:
- Open Call Center on the top bar.
- Open Campaigns on the left bar.
- 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.
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 or CSV upload. While a campaign is Running, you cannot upload, sync, or delete leads.
Import from CRM API¶
| Field | Description |
|---|---|
| Method | GET, POST, or PUT to your CRM endpoint. |
| URL | CRM API URL that returns a JSON lead list. |
| Parse Response Body | JSON mapping from CRM fields to lead fields. |
Mandatory mapping keys:
| Key | Maps to |
|---|---|
leads_array |
JSON path to the array of lead objects |
first_name |
Lead first name |
number |
Lead phone number (E.164 recommended) |
Optional mapping keys: last_name, priority, ticket_id, dial_retries, first_cooloff, cooloff, notes, skill, extension.
Click Sync on a saved campaign to pull leads from the CRM (disabled while running or when mapping is invalid).
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 |
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.
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 → Campaigns → Leads Status 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.
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¶
- Create and configure the bound queue (agents, strategy, audio, wrap-up).
- Create the campaign — set type, retries, cool-off, queue, schedule, caller ID.
- For Predictive: set Core abandon goal, pacing profile, and safe-harbor media; confirm enough agents are logged in (recommended 15+).
- Upload or sync leads; verify Leads Status shows Active rows.
- Start the campaign during the schedule window.
- 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.
Related documentation¶
- CX Queues — queue configuration used by campaigns
- Skills Routing — route campaign queue calls by agent skills
- Campaigns API — REST API for leads, status, and activity

