VICIdial Speed To Lead: Configure, Measure, and Decide

VICIdial Speed To Lead: Configure, Measure, and Decide

ON THIS PAGE

Written by: Matt Beucler, CEO, Plura AI

Key Takeaways

  • Inject web leads through the Non-Agent API add_lead function with rank=99, callback=Y, and add_to_hopper=Y so they land in a high-priority list.
  • Measure true speed to lead with five timestamps: lead_created_at, vicidial_received_at, dial_started_at, call_answered_at, and agent_connected_at. Treat the gap between lead_created_at and call_answered_at as your SLA metric.
  • VICIdial’s hopper architecture adds latency because AST_VDhopper.pl runs on a cron cycle, so even top-ranked leads wait for the next refresh before dialing starts.
  • Agent availability often becomes the real bottleneck. When no agents are READY, dialing pauses regardless of hopper configuration, so staffing limits speed-to-lead performance.
  • Plura AI’s AI Predictive Dialer removes the hopper wait and can deliver sub-5-second first contact for web leads.

Why VICIdial Struggles With Speed To Lead

VICIdial is an open-source predictive dialer built on Asterisk that many contact centers already run. The core constraint is architectural. VICIdial’s hopper is a staging table (vicidial_hopper) that a background cron process (AST_VDhopper.pl) fills on a fixed cadence. Even a rank=99 lead waits for the next hopper cycle before the dialer can touch it.

That cycle gap is where speed-to-lead time accumulates. Speed to lead is the elapsed time between a prospect’s expression of interest and the first meaningful contact. Harvard Business Review research found that companies responding within five minutes are 100 times more likely to connect with a prospect than those waiting 30 minutes, and leads contacted within one minute are 391% more likely to convert than those contacted after 24 hours. The hopper cycle makes those windows harder to hit in practice.

Key terms used throughout this article: API (Application Programming Interface), AMD (Answering Machine Detection), SLA (Service Level Agreement), DNC (Do Not Call), AHT (Average Handle Time).1

How To Configure VICIdial For Faster Web-Lead Response

This configuration sequence focuses on what to change, the exact setting, and the trade-off for each step.

  1. Call The Non-Agent API add_lead Function. Use add_lead to insert the lead into vicidial_list and return the assigned lead ID. The endpoint is non_agent_api.php, typically at a URL such as http://server/vicidial/non_agent_api.php. Pass at minimum source, user, pass, and phone_number; phone_code and list_id default to 1 and 999. The API user needs modify_leads=1 and user level 8 or higher or every call returns USER DOES NOT HAVE PERMISSION TO ADD LEADS. A successful call returns a response such as SUCCESS: add_lead LEAD HAS BEEN ADDED - 7275551111|6666|999|193715|-4.
  2. Set rank=99. This setting pushes the new lead ahead of older records once it reaches the hopper. Rank affects ordering inside the hopper queue. It does not change how often the hopper refreshes.
  3. Set callback=Y And callback_datetime To Now Or One Minute Out. This combination flags the lead as an immediate callback so the system serves it to an available agent. A callback_datetime in the past can cause the lead to be skipped or mis-scheduled instead of handled right away.
  4. Pass add_to_hopper=Y. The add_lead call does not trigger dialing without this flag. Use it to drop the lead directly into the hopper instead of waiting for the campaign’s normal lead-pulling schedule.
  5. Create A Dedicated Real-Time List For Web Leads. A separate list keeps web leads away from bulk lists so list status, filters, and dial status do not suppress them. Use list_exists_check=Y to catch list_id typos before they create orphan records that never dial.
  6. Raise The Campaign Hopper Level. ViciStack recommends sizing the hopper level as agents × auto_dial_level × 5, so 20 agents at dial level 3.0 need a hopper level of 300. Setting the hopper level arbitrarily high, such as 10,000, has a cost. The VDHopper script runs longer, and lead_order becomes less meaningful because the hopper pre-loads leads that will not be dialed for hours.
  7. Decide How To Handle AMD. Disabling AMD removes detection latency and can speed first contact. The trade-off is that voicemail connects reach agents and consume talk time. Legacy silence-based AMD produces false positive rates between 15 and 20 percent, so up to one in five live humans can be classified as voicemail and never reach an agent. Compare that false-positive cost against the latency AMD adds before you choose a setting.

See the AI Predictive Dialer remove the hopper wait in a live walkthrough and compare it to your current VICIdial configuration.

Plura Predictive Dialer dashboard displaying AI-powered outbound call pacing, transfer analysis, and dialing performance insights.
Plura Predictive Dialer automates outbound calling with AI-powered pacing, transfer optimization, and real-time performance analytics.

How To Measure VICIdial Speed To Lead: The Five Timestamps

ViciStack publishes a VICIdial speed-to-lead measurement framework covering Time to First Attempt, contact rate by response-time bucket, and callback completion rate, with a target median under 60 seconds and a 95th percentile under 5 minutes.4 The table below lists the five timestamps to log for every web lead and where each one comes from. The gaps between them separate hopper latency from the agent-availability penalty.

Timestamp What It Captures Where It Comes From
lead_created_at Moment the prospect submitted the form Your web form or lead vendor
vicidial_received_at Moment add_lead returned SUCCESS Non-Agent API response log
dial_started_at Moment the dialer originated the call vicidial_log / Asterisk uniqueid
call_answered_at Moment the call connected Carrier answer signal
agent_connected_at Moment the agent was bridged Agent screen / vicidial_log

The gap between lead_created_at and call_answered_at is the SLA number that matters. The gap between vicidial_received_at and dial_started_at shows hopper latency. The gap between call_answered_at and agent_connected_at shows the agent-availability penalty.

Set a target for the lead_created_at to call_answered_at gap, such as under 60 seconds for 95 percent of web leads, and report against it weekly. If the VICIdial speed-to-lead gap exceeds best-practice targets, such as sub-60-second response times for web leads and sub-2-minute callbacks, investigate quickly because speed to lead heavily influences contact rate for warm leads. 78% of buyers purchase from the company that responds first3, so this SLA belongs on the revenue dashboard alongside operational metrics.

Compare plans and rates side by side to see how Plura AI stacks up against your current VICIdial operating cost, or see the dialer in a live walkthrough if you want to test the speed difference first.

The Architectural Ceiling: Why The VICIdial Hopper Slows You Down

The hopper cycle described earlier has a hard ceiling on large lists. On lists with roughly 5 million or more leads, the AST_VDhopper.pl script can take longer than 60 seconds to complete, which can cause overlapping executions or a hopper that falls behind dial velocity. ViciStack advises remediation if execution consistently exceeds 45 seconds.

For true instant dialing, external_dial via the Agent API changes the picture. It places a manual dial call on a logged-in agent’s screen and pauses the agent after their current call. The constraint is agent presence. external_dial requires the agent to be logged in and in a PAUSED or READY state, and calling it for an agent who is not logged in returns ERROR: agent_user is not logged in. It runs as a real-time action on a live agent session, so it cannot be queued or scheduled.

The Agent-Availability Problem: The Real Constraint

A lead can be injected in milliseconds and still sit for minutes because no agent is READY. Configuration guides often focus on settings and skip this staffing constraint.

In predictive mode, VICIdial scales dial velocity based on agent availability. If no agents are in READY status, the dialer stops pulling from the hopper. This behavior makes an agent staffing issue look like a hopper problem.

When the READY pool is empty, the hopper drains, dialing stalls, and speed to lead collapses regardless of rank=99. The fix is staffing, not configuration. Size the READY agent pool to the campaign’s dial ratio and monitor READY count alongside hopper depth. VICIdial’s predictive dialer algorithm, AST_VDadapt.pl, recalculates the dial level for each campaign every 15 seconds based on drop rates, agent availability, call connection rates, and average talk time. If the agent pool shrinks, the algorithm pulls back dial velocity automatically, and your speed-to-lead SLA suffers.

Common VICIdial Speed-To-Lead Failure Modes

The following failure modes account for most speed-to-lead problems operators report in VICIdial forums and support queues.

  • Leads Landing In The Wrong List. A list_id typo or missing list_exists_check=Y creates orphan records that never dial. The API accepts the call and returns a lead ID, so the error stays hidden until someone notices the lead never moved.
  • Rank Not Applied Correctly. rank=99 is passed but the lead still waits because rank only matters once the lead is in the hopper. Without add_to_hopper=Y, rank has no effect.
  • callback_datetime Set In The Past. The lead is skipped or mis-scheduled instead of served immediately. Set callback_datetime to the current time or one minute out.
  • AMD Killing The First Seconds. Legacy silence-based AMD produces false positive rates between 15 and 20 percent; at a 50-agent center running 3,000 live answers per day, that translates to 450 to 600 decision-makers per day hearing dead air instead of a human voice. Disabling AMD speeds first contact but lets voicemails through to agents.
  • Hopper Level Too Low For The Campaign’s Dial Ratio. ViciStack identifies an empty hopper as the single most common crisis in VICIdial operations, with the “no dialable leads” cause alone accounting for roughly 40 percent of empty-hopper support tickets. The hopper drains faster than VDHopper refills it, so agents sit idle.
  • Calls Not Going Out Fast Enough. This pattern usually reflects a combination of hopper level, dial ratio, and agent READY count. Check all three before changing any single setting.
  • Leads Sitting In The Hopper. The hopper contains the lead, but no READY agents are available to receive a connected call. The symptom looks like a hopper issue, but the cause is staffing.

The Speed-To-Lead Flow: From Web Form To Ringing Phone

The table below breaks the web-lead-to-ringing-phone path into seven stages and shows where each one adds time. Stages 1 through 3 usually run in milliseconds to seconds, while stages 4 and 5 often take tens of seconds to minutes, which is where most SLAs are lost.

Step What Happens Where Latency Enters
1. Website / Lead Vendor Prospect submits form Webhook delivery delay (milliseconds to seconds)
2. Webhook Fires To Your Server Your backend receives the form payload Network round-trip, server processing
3. add_lead API Call Lead inserted into vicidial_list API round-trip (typically under 1 second)
4. Hopper Cycle AST_VDhopper.pl picks up the lead Cron cadence (15 to 60+ seconds)
5. READY Agent Available Dialer matches lead to agent Agent-availability gap (seconds to minutes)
6. Dial Origination Asterisk places the outbound call Trunk setup, carrier routing
7. Customer’s Phone Rings Prospect receives the call Carrier delivery, AMD if enabled

When Tuning VICIdial Stops Paying Off: The Decision Point

There is a point where the cost of tuning VICIdial exceeds the cost of replacing it. The signals are measurable. Watch for admin time spent babysitting the hopper, AMD false positives eating live connections, and agent idle time caused by READY pool gaps. The clearest signal is a five-timestamp SLA that will not close below 90 seconds regardless of configuration changes.

Plura AI’s AI Predictive Dialer removes the agent-availability constraint that usually binds before the hopper does.1 It achieves under-5-second first contact and runs on Plura’s own FCC-licensed carrier with SHAKEN/STIR caller ID verification. Stateful cross-channel memory carries context across voice, SMS, RCS, and webchat, so every follow-up touchpoint inherits the context of the first call. Plura enables lead response times under 60 seconds with real-time AI lead scoring and multichannel engagement.

Plura Predictive Dialer dashboard showing AI-powered outbound dialing, intelligent call routing, and performance analytics.
Plura Predictive Dialer uses AI-powered outbound dialing, intelligent routing, and real-time analytics to maximize call performance.

For operators running VICIdial at scale, the math is direct. The five-minute window cited earlier is the benchmark that the hopper cycle and agent-availability gap keep pushing past. When VICIdial’s hopper cycle and agent-availability gap push that window past 5 minutes consistently, the configuration ceiling has been reached.

Compare your current speed-to-lead numbers against a dialer that skips the hopper cycle and see the AI Predictive Dialer in action.

Plura Webchat interface showing AI-powered customer messaging, automated responses, and real-time conversational engagement.
Plura Webchat delivers AI-powered customer conversations with real-time engagement, automated responses, and seamless appointment scheduling.

Frequently Asked Questions

Is VICIdial Open Source?

Yes. VICIdial is an open-source predictive dialer built on Asterisk and released under the GNU Affero General Public License version 2 (AGPLv2), with versions up to and including 2.0.4.1 released under the GNU General Public License version 2 (GPLv2). The source code is publicly available, and the platform is maintained by the VICIdial Group. Open source removes licensing fees for the software itself, but operators remain responsible for server infrastructure, configuration, and ongoing maintenance.

What Is VICIdial Used For?

VICIdial supports high-volume outbound and inbound call center operations. Common use cases include outbound sales campaigns, lead follow-up, appointment setting, collections, and inbound call routing. It supports predictive (adaptive) dialing, ratio dialing, preview dialing, and manual dialing, with power dialing defined as ratio held at a 1.0 dial level, and integrates with Asterisk for telephony.

How Do I Measure VICIdial Speed To Lead?

Log the five timestamps covered in the measurement section above. The gap between lead_created_at and call_answered_at is your true speed-to-lead number, and the other two gaps isolate hopper latency and the agent-availability penalty. Set a weekly SLA target for the first gap.

Why Do VICIdial Leads Sit In The Hopper?

Two reasons, and they are often confused for each other. The first is the hopper cron cycle described earlier, where a lead injected with add_to_hopper=Y and rank=99 still waits for the next refresh. The second is agent availability. Even after the lead enters the hopper, VICIdial stops pulling from it when all agents are on calls, paused, or in wrap-up. Check both the hopper depth and the READY agent count before adjusting configuration.

What Is The Difference Between add_lead And external_dial?

add_lead is a Non-Agent API function that inserts a new record into vicidial_list and can drop it into the hopper. It runs as a background data operation with no dependency on a live agent session. external_dial is an Agent API function that places a manual dial call on a specific logged-in agent’s screen in real time. It requires the agent to be logged in and in a PAUSED or READY state, and if the agent is not available, the API returns an error. Use add_lead for web-lead injection at scale. Use external_dial when you need to bypass the hopper entirely and place a call on a specific agent’s screen immediately.

What Does rank=99 Do In VICIdial?

Setting rank=99 is a standard way to prioritize a lead injected via add_lead so the hopper picks it up sooner. When a campaign uses the DOWN RANK lead ordering setting, leads with higher rank values are dialed before lower-ranked leads. Setting rank=99 on a new web lead pushes it ahead of older records in the queue. Rank only applies once the lead is already in the hopper and does not change the hopper cycle or cron cadence.

Does Disabling AMD Improve Speed To Lead?

Disabling AMD (Answering Machine Detection) removes the detection latency that AMD adds to every answered call, which can reduce the time between call connection and agent bridge. The trade-off is that voicemail pickups reach agents directly and consume talk time. Legacy silence-based AMD in VICIdial produces false positive rates in the 15 to 20 percent range, so a meaningful share of live humans can be classified as voicemail and never reach an agent. Whether to disable AMD depends on list composition and business priorities.

Conclusion: Configure, Measure, Then Decide

The configuration path for VICIdial speed to lead is well defined. Call add_lead with rank=99, callback=Y, and add_to_hopper=Y. Isolate web leads in a dedicated list, and size the hopper to agents × dial level × 5. Then monitor AMD false positives against the latency it removes.

Measurement closes the loop. Track the five timestamps and hold the team to a weekly SLA. The ceiling is also clear. The hopper is not instant. Agent availability binds before injection speed. On large lists, the VDHopper script itself can become a bottleneck. These constraints are architectural rather than configuration issues. When the five-timestamp SLA will not close below your target regardless of tuning, the next step is a platform that removes those constraints by design.

Plura’s AI Predictive Dialer achieves under-5-second first contact, runs on an FCC-licensed carrier with SHAKEN/STIR caller ID verification, and supports compliance workflows such as TCPA and DNC checks before every dial.1,2 Organizations deploying AI for speed to lead see response times drop from hours to seconds and connection rates increase by 3 to 5 times3,4.

See what your speed-to-lead numbers look like without the hopper in the way in a live session. Then run your numbers through Plura’s ROI calculator to check your cost savings in real time.


1 Plura AI maintains SOC 2, HIPAA, ISO, and GDPR posture as part of its platform infrastructure. References to compliance frameworks in this article describe Plura’s platform capabilities and do not constitute a guarantee that any customer using Plura will themselves be compliant with applicable laws or standards. Customers remain solely responsible for their own regulatory obligations, certifications, consent management, recordkeeping, and the claims they make to their own end users. Consult qualified legal counsel for guidance specific to your use case.

2 This article describes regulatory frameworks at a general level and does not constitute legal advice. Laws and regulations vary by jurisdiction, change over time, and apply differently depending on facts and circumstances. Readers should consult qualified legal counsel before making compliance decisions.

3 Performance figures, customer outcomes, and industry statistics referenced in this article are drawn from cited third-party sources or Plura customer case studies. Individual results vary based on implementation, use case, industry, audience, and execution. Past or aggregate performance is not a guarantee of future results.

4 References to third-party products, services, companies, or research are made for informational and comparative purposes only. Plura AI is not affiliated with, endorsed by, or sponsored by any third party named in this article unless explicitly stated. Trademarks and product names referenced remain the property of their respective owners.

This article is provided for informational purposes only and reflects Plura AI’s understanding at the time of publication. Product capabilities, integrations, and specifications are subject to change. For the most current information, visit plura.ai.

This article was produced with the assistance of AI tools and reviewed by Plura AI prior to publication.

Read Next

See how Plura AI transforms AI voice agents