npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@vicistack/vicidial-predictive-dialer-settings

v1.0.0

Published

15 VICIdial Settings Wasting Your Agents' Time Right Now — ViciStack call center engineering guide

Readme

15 VICIdial Settings Wasting Your Agents' Time Right Now

VICIdial's campaign detail screen has over 170 configurable fields. Most admins change three of them, leave the rest at defaults, and then wonder why their agents are sitting idle 40% of the shift. The predictive dialer algorithm is only as good as the settings feeding it. Default VICIdial is tuned conservatively — designed not to break, not to perform. The difference between a campaign burning through $0.03/minute trunk costs with agents staring at screens and one sustaining 48 minutes of talk time per hour comes down to roughly 15 settings that interact with each other in non-obvious ways. This guide covers every one of them: the specific values to set, why those values work, and how to iterate without nuking your abandon rate or catching an FCC fine. ## The Problem With Default VICIdial Settings VICIdial ships with settings designed for the broadest possible use case: a small team running a single campaign with modest call volume. That is a reasonable engineering decision and a terrible operational one. Here is what the defaults actually look like in practice: - auto_dial_level defaults to 1.0 — one line per agent, which is barely faster than manual dialing. - adaptive_dl_level (maximum adapt dial level) defaults to 3.0, but the dial method defaults to RATIO, meaning the adaptive algorithm never kicks in at all. - hopper_level defaults to a low value and auto_hopper_level is set to Y, but with a multiplier of 1 the hopper runs lean — fine for 5 agents, starved for 50. - dial_timeout defaults to 26 seconds, which means agents wait through full ring cycles on numbers that are never going to answer. - available_only_ratio_tally defaults to N, so the dialer counts paused agents as available when calculating how many lines to dial. - AMD (Answering Machine Detection) is off entirely by default. Every answering machine rings through to an agent, who wastes 15-20 seconds listening to a greeting and dispositioning it. The cumulative effect is brutal. In a 50-agent campaign running defaults, you can expect 28-32 minutes of agent talk time per hour. That means roughly 40% of your labor cost is paying people to wait. On a $15/hour fully loaded agent cost, that is $300/hour in wasted capacity across the floor — $2,400 per 8-hour shift, $12,000 per week. The fix is not a single magic setting. It is a coordinated set of 15 changes that align the dialer algorithm, call handling pipeline, and agent routing into a system that actually predicts. Here is what you need to understand first: VICIdial's predictive algorithm runs as a Perl script called AST_VDadapt.pl. Every 15 seconds, it recalculates the dial level for each campaign based on current drop rates, agent availability, call connection rates, and average talk time. The settings on this list are the inputs to that calculation. Change one and the algorithm shifts. Change all 15 correctly and you get a dialer that genuinely anticipates agent availability instead of reacting to it. The 15 settings break into four groups: 1. Core dial level controls (Settings #1-3) — how aggressively the dialer places calls 2. Hopper and queue configuration (Settings #4-7) — ensuring the dialer has leads ready and calls route efficiently 3. AMD and call handling (Settings #8-11) — filtering out non-human answers before they reach agents 4. Agent performance and scheduling (Settings #12-15) — optimizing the human side of the equation Let's walk through each one. ## Setting #1: adaptive_dl_level — The Most Misunderstood Setting Admin path: Admin → Campaigns → [Campaign] → Detail → Adaptive Maximum Dial Level Database field: vicidial_campaigns.adaptive_maximum_level The adaptive_dl_level field sets the ceiling — the maximum number of lines the adaptive algorithm is allowed to dial per active agent. It does not set the actual dial level. That distinction trips up more VICIdial admins than any other setting. When you set adaptive_dl_level to 3.0 (the default), you are telling the algorithm: "You can dial up to 3 lines per agent, but figure out the right number based on current conditions." The algorithm will ramp the actual dial level up and down within that ceiling every 15 seconds based on abandon rates, connection rates, and agent availability. The problem with 3.0: For campaigns with fewer than 15 agents, a ceiling of 3.0 is too low. The algorithm needs headroom to compensate for statistical volatility. With 10 agents, a single long call can create a temporary surplus of available agents, and the algorithm needs room to dial ahead. With a 3.0 ceiling, it cannot. The problem with setting it too high: A ceiling of 10.0 on a 50-agent campaign with a 40% contact rate will produce abandon rates north of 8% within the first hour. The algorithm will use the headroom, and with high contact rates it will overshoot. Recommended values by team size: | Agents | adaptive_dl_level | Why | |--------|-------------------|-----| | 5-10 | 4.0-5.0 | Small teams need higher ceilings to compensate for variance | | 11-25 | 3.0-4.0 | Medium teams start stabilizing; algorithm needs moderate headroom | | 26-50 | 2.5-3.5 | Large teams produce predictable patterns; less headroom needed | | 51-100 | 2.0-3.0 | Very large teams need tighter control to prevent abandon spikes | | 100+ | 1.5-2.5 | At scale, small dial level changes produce large call volume swings | The key insight: adaptive_dl_level is a safety valve, not a performance dial. Set it high enough that the algorithm can do its job during volatile periods, but low enough that a contact rate spike does not blow through your abandon rate target. For a deep dive on this specific setting, including the math behind the adaptive algorithm's ceiling behavior, see our complete guide at adaptive_dl_level configuration. > Your Settings Are Costing You Money. ViciStack auto-tunes every setting on this list — including adaptive_dl_level — in real time based on your campaign's actual performance data. Get Your Free Audit → ## Setting #2: abandon_rate_target — Legal Compliance and Performance Admin path: Admin → Campaigns → [Campaign] → Detail → Drop Percentage Limit Database field: vicidial_campaigns.adaptive_dropped_percentage In VICIdial, "dropped" and "abandoned" mean the same thing: a call connected to a live person but no agent was available within two seconds. The adaptive_dropped_percentage setting tells the adaptive algorithm what abandon rate ceiling to enforce. The legal floor: Under current FTC Telemarketing Sales Rule (TSR) requirements, predictive dialers must maintain an abandon rate below 3% measured across the campaign day. The FCC's TCPA rules have historically enforced the same 3% threshold, though a 2025 NPRM proposed revisiting this limit for modern dialer technology. Until that rulemaking concludes, 3% is the number you must hit. Why you should not set it to 3%: If you set adaptive_dropped_percentage to 3, the algorithm will treat 3% as its target and oscillate around it. Some 15-second intervals will be above 3%. VICIdial measures drop rates across five time windows — since midnight, past hour, past 30 minutes, past 5 minutes, and past 1 minute — and the algorithm considers all of them. But an aggressive target means the short windows will regularly spike above the limit. Recommended values: | Compliance requirement | adaptive_dropped_percentage | Buffer | |------------------------|-----------------------------|--------| | FTC/TCPA 3% rule | 1.5-2.0 | 50-33% safety margin | | State-level 1% rules (some states) | 0.5-0.8 | 50-20% safety margin | | Zero-tolerance (B2B, financial) | 0.5 | Minimal drops | | Maximum aggression (no regulatory concern) | 2.5 | Still below 3% | Setting this to 1.5 is the sweet spot for most US-based outbound campaigns. It gives the algorithm room to optimize throughput while maintaining enough buffer that even your worst 5-minute window stays under 3%. VICIdial calculates drop rates using this basic formula: drop_percentage = (total_drops / total_calls) * 100 The adaptive script checks this at five intervals and uses the most conservative (highest) value to determine whether to increase or decrease the dial level. With ADAPT_TAPERED as your dial method (more on that in Setting #3), the algorithm gets stricter as the shift progresses, which means your effective abandon rate typically decreases throughout the day. You can monitor your live drop rate directly from the database: sql SELECT campaign_id, drops_today, calls_today, ROUND((drops_today / calls_today) * 100, 2) AS drop_pct FROM vicidial_campaign_stats WHERE campaign_id = 'YOUR_CAMPAIGN'; For the complete compliance and configuration breakdown, see our abandon rate target guide. ## Setting #3: auto_dial_level — Starting Point Optimization Admin path: Admin → Campaigns → [Campaign] → Detail → Auto Dial Level Database field: vicidial_campaigns.auto_dial_level This is where most admins start — and where most stop, which is the problem. The auto_dial_level sets the starting dial level when the campaign launches. Once the adaptive algorithm takes over (assuming you are using an adaptive dial method), this value becomes the baseline that the algorithm adjusts from. Critical distinction: If your dial method is RATIO, the auto_dial_level is the only dial level — it stays fixed and the adaptive algorithm never runs. If your dial method is ADAPT_HARD_LIMIT, ADAPT_TAPERED, or ADAPT_AVERAGE, the auto_dial_level is just the starting point. Which dial method to use: | Method | Behavior | Best for | |--------|----------|----------| | RATIO | Fixed dial level, no adaptation | Testing, very small teams (<5 agents) | | ADAPT_HARD_LIMIT | Dials up to drop limit, hard stops when limit hit | Strict compliance environments | | ADAPT_TAPERED | Allows overshoot early in shift, tightens over time | Most production campaigns | | ADAPT_AVERAGE | Maintains average drop rate, loose enforcement | High-volume campaigns with large teams | Use ADAPT_TAPERED for 90% of campaigns. It is the most forgiving method for real-world conditions. Early in the shift, when you have a full day to recover, it allows the dialer to be more aggressive. As the shift progresses and you have less time to bring averages down, it tightens. This mirrors how actual call center operations work — you want to build momentum early and protect your numbers late. Recommended starting auto_dial_level values: | Scenario | auto_dial_level | Notes | |----------|-----------------|-------| | New campaign, unknown contact rate | 1.0 | Start conservative, let adaptive ramp up | | Established campaign, 30-40% contact rate | 1.5-2.0 | Algorithm will adjust within first 5 minutes | | Clean list, high contact rate (50%+) | 1.0-1.5 | High contact rate needs a lower starting point | | Aged list, low contact rate (<20%) | 2.5-3.0 | More dials needed to find live contacts | | Callback/hot lead campaign | 1.0 | High answer rate requires minimal over-dialing | The mistake most admins make is setting auto_dial_level to 3.0 on a campaign with RATIO dial method. That means three simultaneous outbound lines per agent, with zero adaptation. On a list with a 40% contact rate, that produces roughly 1.2 live connections per agent at any moment — which means 20% of connected calls have no agent available. Your abandon rate will be catastrophic. Switch to ADAPT_TAPERED, set your starting auto_dial_level to 1.5, your adaptive_dl_level to 3.5, and your adaptive_dropped_percentage to 1.5. The algorithm will find the right dial level within the first 10-15 minutes and maintain it. For the full configuration walkthrough including interaction with other settings, see our auto_dial_level guide. > Stop Guessing Your Dial Level. ViciStack monitors your campaign in real time and adjusts dial levels faster than any human can. Get Your Free Audit → ## Settings #4-7: Hopper and Queue Configuration The hopper is VICIdial's lead staging queue — a buffer of phone numbers pre-loaded from your lists, ready for the dialer to fire off. If the hopper runs dry, your dialer stalls regardless of how perfectly you tuned your dial level. These four settings control how that pipeline operates. ### Setting #4: hopper_level Admin path: Admin → Campaigns → [Campaign] → Detail → Hopper Level Database field: vicidial_campaigns.hopper_level The hopper_level defines how many leads are staged and ready to dial at any given time. VICIdial's hopper loading script (AST_VDhopper.pl) runs regularly and tops off the hopper to this level. The formula VICIdial


Read the full article

About

Built by ViciStack — enterprise VoIP and call center infrastructure.

License

MIT