DEV Community

Jason Shouldice
Jason Shouldice

Posted on • Originally published at vicistack.com

Which Dial Mode Is Bleeding Your Campaign Dry?

Your dialing mode choice is the single most impactful configuration decision in outbound calling. It determines contacts per hour, idle time between calls, how fast you burn through leads, and whether your operation stays on the right side of FCC and TCPA regulations.

Despite this, most operations stick with whatever their dialer defaulted to. Or they switch to "predictive" because someone said it was faster — without understanding the agent count thresholds, the lead consumption math, or the compliance exposure.

How They Actually Work

Predictive dialing places calls in advance of agents becoming available, using an algorithm that calculates how many lines to dial based on real-time agent availability, average talk time, answer rate, and current abandon rate. In VICIdial, this runs as AST_VDadapt.pl, recalculating every 15 seconds. The trade-off: maximum talk time, but a non-zero probability of answered calls with no agent available. Those abandoned calls are a compliance risk — FCC caps abandon rate at 3% over a rolling 30-day period.

Progressive dialing places exactly one call per available agent. No prediction, no algorithm calculating future availability. If the call isn't answered, it immediately tries the next number. Zero abandoned calls by design. The trade-off is lower throughput — agents wait 10-20 seconds between calls instead of 1-2 seconds.

Preview dialing shows lead data before the call is placed. The agent reviews name, company, notes from previous calls, then initiates the call when ready. The productivity hit is significant (30-120 seconds of review per lead), but for complex sales where pre-call preparation pays for itself in conversion rate, the math works.

The Numbers That Actually Matter

From ViciStack deployments across multiple verticals:

Metric Predictive (25+ agents) Progressive Preview
Talk time/hour 45-55 min 30-40 min 15-25 min
Contacts/hour 8-15 5-10 3-6
Leads consumed/hour 40-65 20-35 8-15
Abandon rate 1-3% 0% 0%
Conversion rate vs. baseline Baseline +5-15% +30-100%

Predictive wins on revenue per agent hour for high-volume B2C. It's not close. But that's not the whole story.

When Predictive Dialing Fails

Below 15 agents, the predictive algorithm doesn't have enough data to predict accurately. The dial ratio gets erratic — over-dialing when two agents happen to finish calls simultaneously, then under-dialing when the algorithm over-corrects. At 5 agents, it's essentially guessing.

You can watch AST_VDadapt.pl hunting for stability in real time:

screen -r VDadapt
Enter fullscreen mode Exit fullscreen mode

If you see the auto_dial_level swinging between 1.0 and 4.0 every few cycles, you don't have enough agents for predictive. Switch to ADAPT_TAPERED and let the algorithm settle.

When leads cost $1.00+ each (B2B data), predictive burns through $350-$500 of leads per agent per day versus preview's $50-$100. For lead-constrained campaigns, the economics flip entirely.

VICIdial's Dial Method Settings

VICIdial doesn't map cleanly to industry terminology. Here's what actually does what:

RATIO is fixed-ratio dialing. Set it to 3.0-5.0 with available_only_ratio_tally=Y and you have a manually-tuned predictive dialer. It holds steady regardless of conditions — an experienced admin monitoring the campaign can adjust periodically and match commercial predictive dialers.

ADAPT_TAPERED is the safest auto-dial mode. It uses VICIdial's adaptive algorithm but tapers off aggressively as the drop rate approaches your ceiling. Typically delivers 30-40 minutes of talk time per agent per hour. Use this for compliance-sensitive campaigns.

ADAPT_HARD_LIMIT is the most aggressive adaptive mode. It adapts toward the maximum dial level and enforces a hard ceiling on drop rate. Closest to true predictive behavior.

INBOUND_MAN is preview mode. Lead data displays, agent initiates the call manually.

Here's a sample progressive campaign config for a 12-agent B2B team:

Dial Method:           ADAPT_AVERAGE
Auto Dial Level:       1.0
Adaptive DL Level:     1.8
Dial Timeout:          24
Hopper Level:          100
Abandon Rate Target:   0.5%
AMD Type:              DISABLED
Scheduled Callbacks:   Y
Enter fullscreen mode Exit fullscreen mode

The Decision Tree

Less than 10 agents? Progressive (ADAPT_TAPERED). Period.

10-15 agents, B2B or compliance-sensitive? Progressive (ADAPT_AVERAGE). B2C high-volume? ADAPT_HARD_LIMIT.

15+ agents with unlimited leads, moderate deal value, and clean TCPA documentation? Predictive (RATIO at 3.0-5.0). Limited leads or high deal value? Keep it progressive. Complex sale requiring research? Preview.

Switching Modes Mid-Shift

VICIdial allows real-time dial method changes — active calls aren't affected, the new method takes effect within 15 seconds, and agents don't need to log out.

A common pattern for larger operations:

  • Morning (30+ agents): RATIO 4.0 for maximum throughput
  • Afternoon (staffing drops): ADAPT_HARD_LIMIT to let the algorithm handle the reduced pool
  • Evening (skeleton crew): ADAPT_TAPERED for conservative dialing

Automate it with cron jobs hitting VICIdial's non-agent API:

# Switch to predictive at 8 AM when full staff arrives
0 8 * * 1-5 curl -s "https://dialer.example.com/vicidial/non_agent_api.php?source=api&user=apiuser&pass=apipass&function=update_campaign&campaign_id=INSURANCE&dial_method=RATIO&auto_dial_level=4.0"

# Switch to progressive at 5 PM when staff thins out
0 17 * * 1-5 curl -s "https://dialer.example.com/vicidial/non_agent_api.php?source=api&user=apiuser&pass=apipass&function=update_campaign&campaign_id=INSURANCE&dial_method=ADAPT_TAPERED&auto_dial_level=1.0"
Enter fullscreen mode Exit fullscreen mode

For blended inbound/outbound campaigns, ADAPT modes work better than fixed RATIO because the constantly changing agent pool (agents pulled into inbound queues) requires adaptive calculations. RATIO doesn't account for this and causes abandon rate spikes when several agents simultaneously take inbound calls.


Originally published at ViciStack

Top comments (0)