Call Center Operations

VICIdial ROI Case Study: How One Center Doubled Connects in 14 Days

ViciStack Team · · 13 min read
vicidial roi case study connect rate amd optimization call center optimization

Numbers don’t lie. This case study walks through exactly how a 45-agent insurance call center went from a 3.2% connect rate to 7.1% in 14 days using ViciStack’s VICIdial optimization — and what that meant for their bottom line.

We’re sharing the day-by-day metrics, the specific changes we made, and the reasoning behind each optimization. If you’re running a VICIdial-based call center and your connect rates are stuck below 5%, everything in this article is directly applicable to your operation.

Background: The Starting Point

The center: A Medicare supplement insurance operation based in the Southeast, running 45 agents on VICIdial across two campaigns (inbound and outbound). They’d been on VICIdial for three years with a self-hosted setup managed by an in-house IT generalist.

The problem: Connect rates had been declining for months. When they reached out to ViciStack, they were at 3.2% — meaning for every 100 calls the dialer placed, only 3.2 resulted in a live agent-to-human conversation. The rest were answering machines, dead air, busy signals, disconnected numbers, or drops.

What 3.2% means in real terms:

MetricValue
Daily outbound attempts~42,000
Daily live connects~1,344
Connects per agent per day~30
Average talk time per connect4.2 minutes
Sales conversion rate (of connects)8.5%
Daily sales~114
Revenue per sale$320 (first-year commission)
Daily revenue~$36,480

The numbers looked acceptable in isolation. The problem was that they were leaving massive amounts of money on the table. Their agents were spending more time waiting than talking, their AMD was killing live calls, and their DID reputation was in the gutter.

The Problem Analysis

We started with a comprehensive audit of their VICIdial configuration, carrier setup, and call data. Here’s what we found.

Problem 1: AMD False Positives (Estimated Impact: 35% of Lost Connects)

Their AMD settings were using VICIdial’s default CPD parameters:

CPD Settings (as found):
  initial_silence: 2500
  greeting: 1500
  after_greeting_silence: 800
  total_analysis_time: 5000
  minimum_word_length: 100
  between_words_silence: 50
  maximum_number_of_words: 3
  silence_threshold: 256

The default initial_silence of 2500ms was too aggressive for their demographic (Medicare-eligible adults, age 65+). Older populations often take longer to answer and have longer greeting pauses. The system was classifying 8-12% of live humans as answering machines.

We confirmed this by analyzing call duration patterns:

-- Calls dispositioned as Answering Machine with suspiciously short durations
-- These are likely live humans killed by AMD
SELECT
    DATE(call_date) AS day,
    COUNT(*) AS amd_dispos,
    SUM(CASE WHEN length_in_sec BETWEEN 1 AND 4 THEN 1 ELSE 0 END) AS under_4sec,
    SUM(CASE WHEN length_in_sec BETWEEN 4 AND 8 THEN 1 ELSE 0 END) AS sec_4_to_8,
    ROUND(SUM(CASE WHEN length_in_sec BETWEEN 1 AND 4 THEN 1 ELSE 0 END) / NULLIF(COUNT(*), 0) * 100, 1) AS pct_under_4sec
FROM vicidial_log
WHERE status IN ('AA','AM')
  AND call_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY DATE(call_date)
ORDER BY day;

Results showed 9.3% of all calls were being AMD-killed within 4 seconds — a clear sign of false positives. For their volume of 42,000 daily attempts, that’s approximately 3,900 calls per day where a live human was potentially being dropped.

Problem 2: Flagged and Burned DIDs (Estimated Impact: 40% of Lost Connects)

Their outbound caller ID setup was using a rotation of 20 local DIDs that had been in service for over a year without rotation. We checked the reputation:

-- Answer rate by caller ID number
SELECT
    vdl.outbound_cid AS caller_id,
    COUNT(*) AS attempts,
    SUM(CASE WHEN vl.status NOT IN ('A','AA','AM','AL','N','NI','NP','B','DC','NA','ADC') THEN 1 ELSE 0 END) AS answers,
    ROUND(SUM(CASE WHEN vl.status NOT IN ('A','AA','AM','AL','N','NI','NP','B','DC','NA','ADC') THEN 1 ELSE 0 END) / NULLIF(COUNT(*), 0) * 100, 2) AS answer_rate
FROM vicidial_dial_log vdl
JOIN vicidial_log vl ON vdl.uniqueid = vl.uniqueid
WHERE vl.call_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY vdl.outbound_cid
ORDER BY answer_rate ASC;

The results were damning. Their worst DIDs had answer rates below 2%. Their best were at 5.8%. For reference, a clean DID in their market should achieve 8-12% answer rates. Every single one of their 20 DIDs had been flagged as spam by one or more carrier databases (Hiya, Nomorobo, First Orion, TNS Call Guardian).

Problem 3: Suboptimal Predictive Pacing (Estimated Impact: 25% of Lost Connects)

Their campaign was configured with:

Dial Method: RATIO
Auto Dial Level: 3.0 (fixed)

They were using RATIO mode instead of ADAPT, meaning the system dialed exactly 3 lines per available agent regardless of conditions. During the first hour of the shift when all 45 agents logged in simultaneously, this created a massive spike in outbound attempts — far more than agents could handle. The result was a 7.8% drop rate during the first hour (well above the 3% compliance target) and wasted calls that burned through their best leads.

Later in the day, when agents were in various states (talking, paused, wrapping up), the 3:1 ratio was too conservative, leaving agents waiting 15-25 seconds between calls.

The Solution: ViciStack Optimization

We implemented changes in three phases over 14 days, carefully measuring the impact of each change before moving to the next.

Days 1-3: AMD Tuning

We adjusted CPD parameters specifically for their Medicare-age demographic:

CPD Settings (optimized):
  initial_silence: 3200    (was 2500 -- more time for elderly pickup)
  greeting: 2000           (was 1500 -- longer greeting tolerance)
  after_greeting_silence: 1100  (was 800 -- pause tolerance for older speakers)
  total_analysis_time: 5500     (was 5000 -- slightly more analysis time)
  minimum_word_length: 120      (was 100 -- filter very short sounds)
  between_words_silence: 75     (was 50 -- natural speech pauses)
  maximum_number_of_words: 4    (was 3 -- some greetings are longer)
  silence_threshold: 220        (was 256 -- slightly more sensitive)

We also implemented a post-AMD verification step using VICIdial’s message detection feature. Instead of immediately dropping AMD-detected calls, the system waited an additional 1.5 seconds listening for live speech patterns before disconnecting. This caught approximately 60% of false positives with minimal impact on agent efficiency.

Day 1 Results:

MetricBeforeDay 1
Connect rate3.2%3.8%
AMD false positive rate (estimated)9.3%5.1%
Agent connects/day3035

Day 3 Results (after fine-tuning):

MetricBeforeDay 3
Connect rate3.2%4.1%
AMD false positive rate (estimated)9.3%3.2%
AMD accuracy~85%93.1%
Agent connects/day3038

Days 4-7: DID Reputation Recovery

This was the most impactful change. We implemented a three-pronged DID strategy:

1. Replaced all 20 burned DIDs with fresh numbers from a clean DID provider. We selected numbers that:

  • Had no prior outbound call history
  • Were from local area codes matching their target geography
  • Were spread across multiple underlying carriers to avoid single-carrier flagging

2. Implemented intelligent DID rotation using VICIdial’s CID Group Rotation feature:

Campaign > Caller ID:
  Use Custom CID: Y
  CID Group: MEDICARE_ROTATION

CID Group Configuration:
  CID Count: 60 (3x their previous pool)
  Rotation Method: ROUND_ROBIN
  Max Calls Per CID Per Hour: 30
  Max Calls Per CID Per Day: 150

The key setting: capping each DID at 30 calls/hour and 150 calls/day. Carrier spam algorithms flag numbers that make more than ~200 calls/day from a single number. By spreading volume across 60 DIDs, no single number exceeded the threshold.

3. Set up DID health monitoring using a daily automated check:

#!/bin/bash
# Daily DID health check - runs at 6 AM before dialing starts
# Checks answer rate per DID from previous day

mysql -u reports -p'password' asterisk -e "
SELECT
    vdl.outbound_cid,
    COUNT(*) AS attempts,
    SUM(CASE WHEN vl.status NOT IN ('A','AA','AM','AL','N','NI','NP','B','DC','NA','ADC') THEN 1 ELSE 0 END) AS answers,
    ROUND(SUM(CASE WHEN vl.status NOT IN ('A','AA','AM','AL','N','NI','NP','B','DC','NA','ADC') THEN 1 ELSE 0 END) / NULLIF(COUNT(*), 0) * 100, 2) AS answer_rate
FROM vicidial_dial_log vdl
JOIN vicidial_log vl ON vdl.uniqueid = vl.uniqueid
WHERE vl.call_date >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
  AND vl.call_date < CURDATE()
GROUP BY vdl.outbound_cid
HAVING answer_rate < 4.0
ORDER BY answer_rate ASC;
" | while read line; do
    echo "$(date): LOW ANSWER RATE DID: $line" >> /var/log/did-health.log
done

Any DID dropping below 4% answer rate gets flagged for investigation and potential replacement.

Day 7 Results:

MetricBeforeDay 3Day 7
Connect rate3.2%4.1%5.9%
DID average answer rate4.1%4.1%9.2%
Agent connects/day303854
Daily sales114137195

The DID change alone pushed connect rates from 4.1% to 5.9% — a 44% improvement. This is the single most common optimization we see across call centers. Most operations are dialing with burned numbers and don’t realize it.

Days 8-14: Predictive Algorithm Optimization

With AMD and DIDs optimized, we turned to the dialing algorithm itself.

Changed from RATIO to ADAPT_TAPERED:

Dial Method: ADAPT_TAPERED
Auto Dial Level: 1.0 (starting point -- system auto-adjusts)
Adaptive Maximum Level: 8.0
Adaptive Dropped Percentage: 3.00
Adaptive Target Drop Rate: 2.00
Adaptive Intensity: 30
Adaptive DL Diff Target: 1

Key changes and reasoning:

  • ADAPT_TAPERED gradually ramps up dial ratio over the first 30 minutes of a shift, preventing the drop rate spike they were experiencing with fixed RATIO mode at shift start.
  • Adaptive Maximum Level of 8.0 (vs their fixed 3.0) allows the system to dial more aggressively when agents are available and data supports it. With improved AMD and clean DIDs, higher ratios produce more connects without proportionally more drops.
  • Target Drop Rate of 2.00% keeps them comfortably under the 3% FCC threshold while maximizing throughput.
  • Intensity of 30 controls how quickly the system adjusts. We started conservative and would increase if needed.

We also optimized the hopper settings:

Campaign > Hopper:
  Hopper Level: 500 (was 200)
  Lead Order: UP PHONE with 2nd NEW
  Lead Recycling: Enabled
    - NA: recycle after 2 hours
    - B: recycle after 1 hour
    - A: recycle after 4 hours (AMD)
    - DROP: recycle after 30 minutes

Increasing the hopper level from 200 to 500 ensured the dialer always had enough leads queued to support the higher dial ratios without stalling. The lead recycling rules ensured no-answer and busy leads got retried at appropriate intervals rather than being wasted.

Day 10 Results:

MetricBeforeDay 7Day 10
Connect rate3.2%5.9%6.5%
Drop rate4.1%2.8%1.9%
Agent wait time (avg)18 sec14 sec9 sec
Agent connects/day305459

Day 14 Final Results:

MetricBeforeDay 14Change
Connect rate3.2%7.1%+122%
AMD accuracy~85%94.3%+9.3 points
Drop rate4.1%1.7%-59%
Agent wait time (avg)18 sec7 sec-61%
Agent connects/day3065+117%
Daily sales114235+106%
Agent utilization61%78%+17 points

ROI Calculation

Let’s do the math at $150/agent/month.

Costs

ItemMonthly
ViciStack: 45 agents x $150$6,750
Additional DIDs (40 new numbers)$80
Total new monthly cost$6,830

They were previously spending approximately $3,500/month on server hosting and $2,000/month on their IT person’s time allocated to VICIdial management, plus $500/month on DIDs. So their previous VICIdial-related spend was about $6,000/month.

Net incremental cost: $830/month.

Revenue Impact

MetricBeforeAfterDelta
Daily sales114235+121
Monthly sales (22 work days)2,5085,170+2,662
Revenue per sale$320$320
Monthly revenue$802,560$1,654,400+$851,840

ROI: $851,840 additional monthly revenue for $830 additional monthly cost.

Even if you’re conservative and assume that only half the improvement came from ViciStack (the other half from market conditions, list quality, etc.), the ROI is still over 500:1.

Revenue Per Agent Per Day

This is the metric most call center operators track closest:

MetricBeforeAfter
Connects per agent/day3065
Sales per agent/day2.55.2
Revenue per agent/day$800$1,664
Revenue per agent/month$17,600$36,608

At $150/agent/month, ViciStack’s cost represents 0.4% of the revenue each agent generates. There’s no investment in a call center that comes close to this return.

Day-by-Day Improvement Timeline

For operators who want to see the progression:

DayConnect RateAMD AccuracyDrop RateConnects/AgentWhat Changed
0 (baseline)3.2%~85%4.1%30
13.8%89.2%3.9%35AMD initial tuning
23.9%91.4%3.8%36AMD refinement
34.1%93.1%3.7%38AMD fine-tuning complete
44.4%93.0%3.5%40First 20 new DIDs deployed
55.1%93.2%3.2%46Full 60-DID rotation active
65.6%93.4%2.9%51DID settling + rotation calibration
75.9%93.5%2.8%54DID optimization complete
86.0%93.6%2.4%55Switched to ADAPT_TAPERED
96.2%93.8%2.1%56Hopper + recycling tuned
106.5%94.0%1.9%59Adaptive intensity adjusted
116.7%94.1%1.8%61Lead order optimization
126.8%94.1%1.8%62Filter rules refined
137.0%94.2%1.7%64Final pacing adjustments
147.1%94.3%1.7%65Stabilized

Note the pattern: AMD changes showed immediate but moderate improvement (Days 1-3). DID changes showed the largest single jump (Days 4-7). Predictive algorithm optimization provided the final push and improved compliance metrics (Days 8-14).

Lessons Learned

Lesson 1: DID Reputation is the #1 Silent Killer

Most centers don’t monitor DID health. They buy numbers, use them until clients complain about low volume, and never connect the dots. In our experience across 100+ centers, DID reputation issues account for 30-50% of lost connects. It’s almost always the biggest single optimization.

Lesson 2: Default AMD Settings Are Wrong for Everyone

VICIdial’s default CPD parameters are a compromise designed to work “okay” across all demographics. They’re not optimized for anyone. Every population, every region, every time of day has different answer patterns. AMD tuning should be campaign-specific and reviewed monthly.

For a comprehensive guide, see our AMD Optimization article.

Lesson 3: Fixed Ratio Dialing is Leaving Money on the Table

RATIO mode with a fixed dial level is the most common VICIdial misconfiguration we see. ADAPT_TAPERED exists specifically because fixed ratios create problems: too aggressive at shift start (drops), too conservative mid-shift (agent wait time). If you’re running RATIO mode, switch to ADAPT. It’s free, it’s built in, and it works better in virtually every scenario.

Lesson 4: Optimization is Iterative, Not One-Shot

We didn’t change everything on Day 1. We made one category of change, measured the impact, then moved to the next. This approach has two benefits: you can attribute improvement to specific changes (so you know what’s working), and you avoid the risk of multiple changes interacting in unexpected ways.

Lesson 5: The Math Always Works at Scale

A 1% connect rate improvement on 42,000 daily attempts is 420 additional connects. At their 8.5% sales conversion rate, that’s 35.7 extra sales per day, or $11,424 in daily revenue. At $150/agent/month, ViciStack costs $225/day for 45 agents. The math works at almost any scale above 20 agents.

Applicability to Your Center

This case study was an insurance operation, but the optimization principles apply across industries:

VerticalTypical Pre-Optimization Connect RatePost-ViciStack Connect Rate
Insurance (Medicare, ACA)2.5-4.0%6.0-8.5%
Solar/Home Improvement3.0-4.5%6.5-9.0%
Debt Settlement/Financial2.0-3.5%5.5-7.5%
Real Estate3.5-5.0%7.0-10.0%
B2B Appointment Setting4.0-6.0%8.0-12.0%
Political/Polling2.5-4.0%5.5-8.0%

The specifics change — different CPD parameters, different DID rotation strategies, different pacing algorithms — but the three pillars (AMD, DIDs, predictive algorithm) drive improvement in every case.

How ViciStack Helps

Every optimization described in this case study is part of ViciStack’s standard managed service. There’s no premium tier, no add-on packages, no “advanced optimization” upsell. At $150/agent/month, you get:

  • AMD tuning optimized for your specific campaigns, demographics, and carrier mix — reviewed and adjusted monthly
  • DID management including health monitoring, automatic rotation, reputation tracking, and proactive replacement of flagged numbers
  • Predictive algorithm optimization using ADAPT_TAPERED with settings calibrated to your agent count, talk time patterns, and compliance requirements
  • 24/7 server management including monitoring, updates, security patches, and capacity planning
  • Custom reporting with the metrics that matter for your operation, delivered daily
  • Expert support from people who’ve optimized VICIdial for 100+ call centers — not tier-1 script readers

The center in this case study is still a ViciStack customer. Six months after the initial optimization, their connect rate has stabilized at 7.3% (slightly above the Day 14 result) as we continue to fine-tune AMD parameters, rotate DIDs proactively, and adjust pacing for seasonal volume changes.

Want to see what your numbers could look like? We offer a free, no-obligation analysis of your current VICIdial performance. We’ll pull the same metrics we described in this case study — AMD accuracy, DID answer rates, dial efficiency, drop rates — and show you exactly where your connects are being lost.

No sales pitch. Just data.

Get Your Free Analysis at vicistack.com/proof/ — we respond within 5 minutes during business hours.

Get Your Free 247-Point VICIdial Audit
Real-time support within 5 minutes. 24/7. Call or text 343-204-2353
← Previous VICIdial Remote Agent Setup: NAT Traversal, WebRTC, and SIP Configuration Next → VICIdial SIP Trunk Failover and Redundancy: Complete Setup Guide

Related Articles

VICIdial Optimization

How to Reduce VICIdial AMD False Positives from 20% to Under 5%

· 12 min read
VICIdial Optimization

VICIdial Auto-Dial Level Tuning by Campaign Type

· 11 min read
VICIdial Optimization

VICIdial Caller ID Reputation Monitoring and Recovery Guide

· 15 min read

Related VICIdial Settings

outbound_cid View setting →

Related Status Codes

A — Answering Machine AA — Auto Answering Machine ADC — Auto Disconnected AL — Auto Alt Dial AM — Answering Machine — Message Left

Related Glossary Terms

Agent Utilization Answering Machine Detection (AMD) Automatic Number Identification (ANI) Answer Rate Asterisk Auto Dial Level Campaign Carrier

Comprehensive Guides

Call Center Operations Playbook Read guide →

Want These Results for Your Center?

Get a free performance audit from our VICIdial optimization experts. We'll identify the highest-impact changes for your specific setup.

System Down? Get Help in 5 Minutes
Real-time support within 5 minutes. 24/7. Call or text 343-204-2353