vicigeeksimple guides
Browse
All guides

VICIdial & agents · Pacing and dial level

VICIdial dialing modes and pacing: manual, ratio and adaptive

How VICIdial's MANUAL, RATIO, and adaptive dial methods work, what the auto dial level number actually controls, and how to raise pacing in small measured steps without turning your campaign into a wave of dropped calls.

Reader setup

Before you start

Run each step in order and move only when the outcome is confirmed.

  1. You have logged in as an agent and completed at least one manual call, as covered in the previous article, and you have the read-only database account from Create a read-only database account for safe VICIdial queries for the SQL checks below.
  2. You can open Campaigns → Campaign Detail for the campaign you built earlier in this path.
  3. Your campaign already has leads loaded into its hopper, as set up in the lead-loading article.
What you will prove
You can explain what a VICIdial dial level does, name the difference between MANUAL, RATIO, and adaptive dialing, find every pacing control in Admin, and raise pacing in small measured steps while watching drop rate and agent wait instead of guessing.
Safety boundary
Stay at a dial level of 1.0 until you have measured a drop-rate baseline on your own campaign; raising pacing without that evidence is the fastest way to generate dropped calls and, in many jurisdictions, regulatory exposure.

Reader path

How to use this article

  • Use it when: You need a fixed sequence to make a deployment or configuration change now.
  • Expected result: Follow each step and verify the outcome before changing the next layer.
  • Start here: Start at the first section and complete every checkpoint before moving to the next.

Beginner curriculum

Stage 5 of 7: Learn VICIdial administration

Lesson 7 of 7 · Step 28 of 34

01 / 08

Fast answer

Fast answer: VICIdial paces outbound calling through a campaign's Dial Method (stored as dial_method) plus a pacing number called the dial level (stored as auto_dial_level). The named methods are MANUAL, RATIO, ADAPT_HARD_LIMIT, ADAPT_TAPERED, ADAPT_AVERAGE, and INBOUND_MAN. MANUAL locks auto_dial_level at 0 — there is no pacing number to raise, since an agent places every call by hand. RATIO is the method you set a dial level for yourself, starting from a baseline of 1.0, meaning roughly one call placed per available agent; anything higher deliberately dials ahead of your agents, and the calls that connect with nobody free to answer become dropped calls. The three ADAPT_* methods instead compute their own level automatically — you cannot change Auto Dial Level while any of them is selected — and use a separate Drop Percentage Limit control instead. Stay on RATIO at 1.0 until you have measured evidence that you can raise it safely.

Campaign and agent are defined in the beginner terminology guide; dial level is explained above.

You already made one manual call in the previous article, on a MANUAL campaign. This article stays on the same campaign and moves one step further: understanding RATIO and the ADAPT_* methods, where their controls live in Admin, and how to raise RATIO's dial level without creating a wave of dropped calls.

Trace path · read left to right
011 available agent, dial level 1.0: about one call placed, matching agent capacity021 available agent, dial level 1.5: about one and a half calls placed, ahead of capacity03The extra connected call finds no free agent and becomes a DROP or XDROP, counted as abandoned

Visual walkthrough

Follow three real demo screens

Captured on an isolated VICIdial demo: Administration screens on September 24, 2026, and the idle Agent screen on August 11, 2026. Each caption states its own capture time, and every sanitized image helps you recognize a related screen; none proves that this article's call, command, or result occurred.
Step 1 · Find the campaign

Start from Campaign Listings

Sanitized VICIdial Campaign Listings page showing only the fixture campaign row
Captured September 24, 2026 at 21:39:47 UTC on the authorized isolated demo. Only the fixture campaign row is shown; other campaigns are removed. Its columns do not prove dialing activity, performance, or a completed call.
Step 2 · Read campaign controls

Open the campaign detail page

Sanitized VICIdial campaign detail page showing dialing, hopper, script, and call-launch settings
Captured August 11, 2026 at 16:20:58 UTC on the authorized isolated demo. Identifiers were redacted. Visible settings belong to an isolated configuration page and do not prove that calls were launched or completed.
Step 3 · Check dialing statuses

Review statuses allowed for dialing

Sanitized VICIdial Custom Campaign Statuses listing for the fixture campaign, with no other campaigns shown
Captured September 24, 2026 at 21:47:33 UTC on the authorized isolated demo. This is the custom campaign-statuses listing for one fixture campaign, not the full dial-status selection area; it does not show call outcomes or report results.

02 / 08

MANUAL, RATIO, and ADAPT_*: the named methods in the Dial Method list

MANUAL dialing is what you already used: an agent clicks DIAL NEXT NUMBER, and the dialer places exactly one call for that one request. VICIdial locks auto_dial_level at 0 for a MANUAL campaign — pacing simply does not apply — so there is no abandonment risk from pacing itself, though agent time is spent waiting between calls.

RATIO dialing places calls at a configured number per available agent, tallied through the campaign's dial level. The underlying database contract is straightforward: dial_method is set to RATIO, auto_dial_level holds the target, and Available Only Tally (available_only_ratio_tally), if set to Y, leaves INCALL and QUEUE status agents out of that calculation entirely outside MANUAL mode — its own default is N — worth understanding before you touch the dial level at all.

The three ADAPT_* methods, ADAPT_HARD_LIMIT, ADAPT_TAPERED, and ADAPT_AVERAGE, let a background worker continually recompute pacing from recent answered-call, drop, and agent-availability observations instead of a fixed ratio you set by hand. You cannot change Auto Dial Level yourself while any of them is selected; each instead exposes Drop Percentage Limit (adaptive_dropped_percentage) as its own tunable ceiling. Do not assume you know exactly how the three variants differ from each other: open the Dial Method dropdown in Admin and read VICIdial's own description for the one you are considering, since behavior can vary by version.

03 / 08

Step 1 — Find the pacing controls in Admin

Open Campaigns, choose the campaign you built earlier in this path, and open its Campaign Detail screen. The pacing controls live on this one screen: a Dial Method selector (the underlying column is dial_method) and a dial level field usually labeled Auto Dial Level or Dial Level (the underlying column is auto_dial_level) — active only for RATIO, since MANUAL locks it at 0 and the ADAPT_* methods compute it themselves. The exact on-screen wording can differ slightly between VICIdial versions; the database field names are the stable ground truth.

On the same screen you will also find Available Only Tally (available_only_ratio_tally), which leaves INCALL and QUEUE status agents out of the ratio calculation outside MANUAL mode, and the drop-call controls Drop Call Seconds and Drop Action (drop_call_seconds and drop_action), which decide how long a connected call can wait for an agent before VICIdial gives up on it and what happens next.

Before you change anything, read the current values back out of the database with a read-only query. This confirms what Admin is showing you actually matches what the dialer is using, and it gives you a timestamped baseline to compare against later.

  • Confirm which campaign you are editing before opening Campaign Detail
  • Record the current Dial Method and dial level as your starting point
  • Record the current Available Only Ratio Tally setting
Read the campaign's current pacing settings
SELECT campaign_id, dial_method, auto_dial_level, available_only_ratio_tally, drop_call_seconds, drop_action FROM vicidial_campaigns WHERE campaign_id = '<CAMPAIGN_ID>';
Evidence · ViciBox 12 demo capture · demo values substituted

Captured demo response · 2026-09-23 21:35 UTC. The displayed command is the command that ran; a safe subset label means it was filtered, redacted, or fixture-scoped. Replays only after you select Replay transcript.

Command output line: SELECT campaign_id, dial_method, auto_dial_level, available_only_ratio_tally, drop_call_seconds, drop_action FROM vicidial_campaigns WHERE campaign_id = 'KPISYN1';
+-------------+-------------+-----------------+----------------------------+-------------------+-------------+
| campaign_id | dial_method | auto_dial_level | available_only_ratio_tally | drop_call_seconds | drop_action |
+-------------+-------------+-----------------+----------------------------+-------------------+-------------+
| KPISYN1 | MANUAL | 0 | N | 5 | AUDIO |
+-------------+-------------+-----------------+----------------------------+-------------------+-------------+
Before you run it
Run this against the read-only database account before you change anything in Admin, so you have an exact starting point.
Success looks like
The row returned matches what Campaign Detail shows on screen: dial_method, the dial level, and available_only_ratio_tally all line up.
Stop if
The query returns zero rows because the campaign_id is wrong, or the values do not match the Admin screen; recheck the campaign ID and refresh Admin before trusting either source.

04 / 08

What the dial level number actually does

This section is about RATIO specifically — MANUAL locks the dial level at 0, and the ADAPT_* methods compute their own level automatically. On RATIO, the dial level is a calls-per-available-agent target, not a hard cap and not a percentage. At 1.0, VICIdial's ratio logic aims to keep about one outbound call working for every agent who is currently available to take one. At 1.5, it aims to keep about one and a half calls working per available agent, which means some of those calls will connect while every agent is still busy with the previous one.

That gap is the whole mechanism behind dropped calls. Anything above 1.0 is a deliberate bet that a fraction of connected calls will find no free agent, because the dialer is intentionally placing more calls than you have agents to answer them, in exchange for keeping agents busier. A connected call that cannot be handed to an agent within the campaign's Drop Call Seconds becomes a DROP status for an outbound call or an XDROP status for an inbound call; VICIdial's own status documentation defines both explicitly as a call dropped while waiting for an agent.

This is why a beginner should not raise the dial level past 1.0 on instinct. Every increment above 1.0 is a direct trade of some abandoned calls for higher agent utilization, and you cannot see that trade-off until you have measured it on your own traffic, your own agents, and your own hold-time tolerance.

05 / 08

Step 2 — Raise pacing in small, evidenced steps

Never move the dial level from 1.0 to a guess. Raise it in small increments, run each increment long enough to see real behavior, measure the drop rate and agent wait after each step, and agree on a stop threshold before you start, not after you see a bad number.

A reasonable beginner procedure looks like the text sample below: confirm the baseline, move by no more than 0.1, hold that level for a full working shift, remeasure, and only then decide whether to continue. Write your stop threshold down before the first increment, and treat crossing it as a hard stop, not a discussion.

  • Agree on a numeric stop threshold before the first increment
  • Raise the dial level by no more than 0.1 per step
  • Give each new level a full working shift to run before judging it
Safe step-up procedure with an explicit stop threshold
1. Confirm the campaign is at Dial Method RATIO and dial level 1.0, then record today's drop rate and average agent wait as your baseline.2. Raise the dial level by no more than 0.1, for example from 1.0 to 1.1, in Campaigns → Campaign Detail, then save.3. Let the new level run for one full working shift with agents actually logged in and working, not a few minutes of testing.4. Recompute the drop rate and agent wait using the same query you used for the baseline.5. If the drop rate has not measurably worsened and agents are not idle waiting on the dialer, repeat from step 2 with the next 0.1 increment.6. Stop immediately and set the dial level back to 1.0 the moment the drop rate crosses your agreed stop threshold, for example 3 percent, or any agent reports repeated dead air.
Not executed · worksheet or reference text

This sample is a template or reading aid, not a terminal command. There is no output to show.

Before you run it
Use this only after you have a recorded baseline drop rate and agent wait, and after you and whoever owns compliance have agreed on a numeric stop threshold.
Success looks like
Each 0.1 increment is followed by a full shift of real data and a fresh drop-rate check before the next increment is even considered.
Stop if
You raise the dial level more than once before measuring the previous step, or you do not have a stop threshold written down before you start; both mean you are guessing, not pacing safely.

06 / 08

Step 3 — Measure drop rate and agent wait, not gut feel

Two numbers tell you whether a pacing change is safe: the drop rate, meaning dropped calls as a share of answered calls, and agent wait, meaning how long agents sit idle waiting for the dialer, visible on VICIdial's real-time and agent-time reports. Answered calls are the right denominator: they are what VICIdial itself divides by and the basis most abandonment rules use, while a share of every dial attempt looks smaller because no-answer and busy attempts inflate the count. XDROP is the inbound equivalent, counted against in-groups rather than this outbound campaign. A dial level change that lowers agent wait while pushing the drop rate up has not made your campaign better; it has moved the cost onto whoever answered the dropped call.

Read VICIdial's own running numbers instead of trusting an agent's impression of a bad afternoon. The campaign statistics table keeps today's drops, today's answered calls and the drop share of answered calls that VICIdial computes for each campaign. Run the query below before and after every dial-level change, through the read-only database account, and compare the percentages, not the raw counts.

  • Drop rate did not increase beyond your agreed stop threshold
  • Agent wait time did not turn into long idle stretches
  • No agent reported repeated dead air after connecting
Read VICIdial's own drop share of answered calls
SELECT campaign_id, drops_today, answers_today, drops_answers_today_pctFROM vicidial_campaign_statsWHERE campaign_id = '<CAMPAIGN_ID>';
Evidence · ViciBox 12 demo capture · demo values substituted

Captured demo response · 2026-09-23 21:35 UTC. The displayed command is the command that ran; a safe subset label means it was filtered, redacted, or fixture-scoped. Replays only after you select Replay transcript.

Command output line: SELECT campaign_id, drops_today, answers_today, drops_answers_today_pct FROM vicidial_campaign_stats WHERE campaign_id = 'KPISYN1';
+-------------+-------------+---------------+-------------------------+
| campaign_id | drops_today | answers_today | drops_answers_today_pct |
+-------------+-------------+---------------+-------------------------+
| KPISYN1 | 0.000 | 0 | 0 |
+-------------+-------------+---------------+-------------------------+
Before you run it
Run this through the read-only database account before and after each dial-level change, so both readings come from the same source.
Success looks like
One row returns for the campaign. drops_answers_today_pct is today's dropped calls as a share of answered calls, the number to hold against your stop threshold; on an idle or MANUAL campaign every value reads zero.
Stop if
No row usually means the campaign ID is wrong or the campaign has not been active today; confirm the ID with the Step 1 query before trusting either number.

07 / 08

Troubleshooting, rollback, and knowing when to stop

Troubleshooting a pacing problem starts with the same drop-rate query, run immediately, not at the end of the day. An early failure signal is a drop rate that jumps noticeably right after you raise the dial level, or agents reporting repeated dead air when they pick up a connected line with nobody on it.

Rollback is simple and safe: return to Campaigns → Campaign Detail for the same campaign, set the dial level back to 1.0, and save. There is no database undo required and no reason to touch the database directly to reverse a pacing change; the same Admin screen that raised it lowers it.

Stop raising the dial level the moment you cross the stop threshold you set in Step 2, even if only one increment crossed it. Confirm the rollback took effect with a read-only check before you consider the incident closed, the same way you confirmed the baseline in Step 1.

Confirm the rollback took effect
SELECT campaign_id, dial_method, auto_dial_level, campaign_changedate FROM vicidial_campaigns WHERE campaign_id = '<CAMPAIGN_ID>';
Evidence · ViciBox 12 demo capture · demo values substituted

Captured demo response · 2026-09-23 21:35 UTC. The displayed command is the command that ran; a safe subset label means it was filtered, redacted, or fixture-scoped. Replays only after you select Replay transcript.

Command output line: SELECT campaign_id, dial_method, auto_dial_level, campaign_changedate FROM vicidial_campaigns WHERE campaign_id = 'KPISYN1';
+-------------+-------------+-----------------+---------------------+
| campaign_id | dial_method | auto_dial_level | campaign_changedate |
+-------------+-------------+-----------------+---------------------+
| KPISYN1 | MANUAL | 0 | NULL |
+-------------+-------------+-----------------+---------------------+
Before you run it
Run this immediately after setting the dial level back to 1.0 in Admin, while the incident is still fresh.
Success looks like
auto_dial_level reads 1.0 and campaign_changedate shows a timestamp at or after the moment you saved the rollback in Admin.
Stop if
auto_dial_level still shows the raised value; the Admin save did not take effect, so reopen Campaign Detail, confirm the correct campaign, and save again.

08 / 08

Why abandonment is regulated, and why 1.0 is the right default

Call abandonment is not only a customer-experience number. Many jurisdictions regulate how many outbound calls a dialer is allowed to abandon, and some campaign settings in VICIdial exist specifically because a regulator requires a particular abandonment calculation. This article is not legal advice, and it will not tell you what limit applies to your business or country; find that out from a qualified source before you dial ahead of your agents in production.

That is the real reason a beginner should stay at a dial level of 1.0 until they have deliberately decided, with evidence and with the applicable rules in hand, to do otherwise. Raising pacing without a measured baseline is the fastest way to both create dropped calls and create regulatory exposure at the same time, and both problems are far easier to prevent than to explain afterward.

Getting started with VICIdial

Part 6 of 6

  • Previous: Place your first call as a VICIdial agent
  • Next: This is the last part.
  • The whole series: Log in to a ViciBox lab, understand the screens, connect a carrier, build a campaign, load leads, place a first call, then dial safely at scale.

Evidence ledger

Verification basis

  • auto_dial_level and dial_method are the real vicidial_campaigns columns behind Admin's Dial Method and dial level fields, confirmed by the Step 1 query below returning them.
  • available_only_ratio_tally is a documented vicidial_campaigns column; setting it to Y tallies the ratio only against agents actually available, not merely logged in.
  • DROP and XDROP are official VICIdial statuses meaning a call dropped while waiting for an agent, outbound and inbound respectively, tracked in different tables (vicidial_log and vicidial_closer_log).
  • drop_call_seconds and drop_action are real vicidial_campaigns columns controlling how a stranded connected call is handled.

Primary references

Sources

  1. VICIdial statuses reference (DROP, XDROP, and related codes)VICIdial · accessed August 5, 2026

Follow without guesswork

Get the next article

RSS is live now. Email delivery below is an explicit local preview and sends nothing.Open the RSS feed
Email preview only. The address stays in this browser and is never transmitted.