Why Your VICIdial Connect Rate Is Low, and How to Find Which Part Is Broken
Connect rate is the end of a chain with five links: completion, answer, what answered, detection and hand-off. How to find the weak one from the data VICIdial already holds, what to fix first, and how the AMD options compare on the links where detection matters.
Marketing Team
VM Hunter

A low connect rate in VICIdial is usually treated as a list problem. Sometimes it is. But "connect rate" is the end of a chain with five links, and a campaign can lose most of its conversations at any one of them: the call does not complete, nobody answers, something other than a person answers, the detector throws away the person, or no agent is free when they do.
Each link fails for a different reason and has a different fix. This guide shows how to find out which one is costing you, using the data VICIdial already holds, and compares how the AMD options for VICIdial handle the two links where detection matters.
Report names and statuses vary between VICIdial versions and your own custom dispositions. Adjust the queries to match your system.
Three rates people mix up
Before measuring anything, separate these:
- Answer rate: answered calls divided by dials. This is about carriers, caller ID and the list.
- Contact rate: conversations with a live person divided by dials. This is what the business cares about.
- Agent connect rate: calls delivered to an agent divided by answered calls. This is about detection and pacing.
A campaign can have a healthy answer rate and a poor contact rate. That gap is where most hidden losses sit, and it is the part you can fix without buying new leads.
The five links
| Link | Question | Typical causes when it fails |
|---|---|---|
| 1. Completion | Did the call reach a phone? | Carrier failures, bad numbers, congestion |
| 2. Answer | Did anything pick up? | Spam labels, time of day, worn-out caller ID |
| 3. What answered | Was it a person? | Voicemail, call screening, disconnected-number messages, no audio |
| 4. Detection | Did the detector get it right? | People classified as machines; machines passed to agents |
| 5. Hand-off | Was an agent free? | Dial level too high, drops, slow transfer |
Step 1: get the breakdown
Start with dispositions for one campaign over one full day:
SELECT status, COUNT(*) AS calls,
ROUND(100 * COUNT(*) / SUM(COUNT(*)) OVER (), 1) AS pct
FROM vicidial_log
WHERE campaign_id = 'YOURCAMP'
AND call_date >= CURDATE() - INTERVAL 1 DAY
AND call_date < CURDATE()
GROUP BY status
ORDER BY calls DESC;
On older MySQL versions without window functions, drop the percentage column and work it out by hand.
Then group the statuses. On a stock system:
- Not completed or not answered:
NA(no answer),BandAB(busy),ADCandDC(disconnected). - Answered, classified as machine:
AA(answering machine, auto) andAFAX. - Answered, reached an agent: your agent dispositions, including
A(answering machine, set by the agent) andN(no answer, set by the agent). - Answered, no agent available:
DROPandPDROP.
Now you have four numbers that tell you which link to look at.
Step 2: read the pattern
Most calls are NA. The loss is at link 2. Nobody is answering. Look at caller ID reputation, local presence, call times and list age before anything else. Detection cannot help with a call that was never answered.
AA is very high, and agents still get voicemail. Link 3 is the issue: a large share of what answers is not a person. That is normal on aged consumer lists. The work is making sure machines are identified quickly and people are not lost with them.
AA is very high, and agents say people are hanging up or complaining about silence. Suspect link 4. Your detector may be classifying live people as machines.
Agents disposition many calls as A, N or dead air. Link 4 in the other direction: machines and silent calls are getting through.
DROP is above 3%. Link 5. The dial level is too high for the number of agents, or the hand-off is slow.
Step 3: check link 3, what is really answering
Listen to the first three seconds of 50 calls labelled AA and 50 that reached agents. Mark each one:
- A person
- A voicemail greeting
- A carrier message ("the number you have dialled...")
- A call-screening prompt ("record your name and reason for calling...")
- Nothing at all
Three findings come up again and again.
Call screening is larger than people expect. Since iOS 26, iPhones can answer unknown callers with a prompt asking for a name and reason. On one customer's traffic, 15% of answered calls were screening prompts, three times the number of live answers. Each of those is a real person reading a live transcript of what the caller says. A dialer that treats them as voicemail hangs up on a reachable lead.
Calls with no audio hide in the machine count. On trunks we have examined, 5 to 15% of answered calls had no audio, because of false answer supervision or one-way audio. They are logged as answering machines.
Disconnected numbers answer. Many carriers answer the call and play a message instead of returning a SIP error. Without detection of that message or its tones, the number is recycled and dialled again, which wastes dials and harms caller ID reputation.
Step 4: check link 4, is the detector right?
From the same 100 recordings, count two errors separately:
- False machine: a person the detector called a machine. This is a lost conversation, and it never appears in an agent's complaints because the agent never got the call.
- False human: a machine or silent call passed to an agent. This costs ten to twenty seconds of agent time.
Then a quick check on agent-side data. If agents are marking many calls as answering machine, the detector is letting them through:
SELECT COUNT(*) AS reached_agent,
SUM(status = 'A') AS agent_marked_machine,
ROUND(100 * SUM(status = 'A') / COUNT(*), 1) AS pct
FROM vicidial_log
WHERE campaign_id = 'YOURCAMP'
AND call_date >= CURDATE() - INTERVAL 7 DAY
AND user NOT IN ('VDAD', 'VDCL', '');
VICIdial's built-in detection uses Asterisk's AMD(), which decides from the timing of sound and silence. Operators who measure it typically find 15 to 20% of live answers classified as machines on consumer lists. If you have not tuned it, read VICIdial AMD settings explained first; a day of tuning can recover some of that.
Step 5: check link 5, the hand-off
Even a perfect verdict is wasted if the person waits.
- Time to verdict. Every second of analysis is silence for the person who answered. Around two seconds is tolerable. At four or five, they have said "Hello?" twice and hung up.
- Drop rate. Calls answered by a person with no agent free. Keep it under 3% of answered calls; in the US that is also a regulatory limit for telemarketing.
- Dial level and detection are linked. If the detector passes many machines, agents are busy with greetings, fewer are free, and drops rise. If it wrongly rejects people, you raise the dial level to compensate and burn through leads faster. Better detection lets you run a lower dial level for the same number of conversations.
What to fix first
| What you found | Do this |
|---|---|
Mostly NA | Caller ID reputation, local presence, call-time windows, list source |
| Many disconnected numbers being redialled | Detect the message or SIT tones and retire those leads |
| A large share of no-audio calls | Trunk and NAT checks; send examples to the carrier |
| Screening prompts counted as voicemail | Detect the prompt, play a short intro, connect an agent |
| Many false machines | Tune AMD, or test a detector that reads the words |
| Many false humans | Tune AMD the other way, or test an alternative |
| Drops above 3% | Lower the dial level; switch to an adaptive method |
How the AMD options for VICIdial handle links 3 and 4
This is drawn from each vendor's public documentation and posts as of October 2026. Check their sites for current details. We do not publish accuracy figures for other products, because we have not measured them on a shared set of calls.
Built-in AMD() | Khomp | AMDY | VM Hunter | |
|---|---|---|---|---|
| Method | Timing of sound and silence | Audio analysis in a SIP gateway | Acoustic classification (per its site) | Transcript of the words plus beep, tone and silence analysis |
| Call screening | A machine; not distinguished | Check with Khomp | Tagged with a machine status such as MACHINE:GVOICEAMD (per its forum posts) | Labelled CALLGUARD_PHRASE; can be routed to an intro and then an agent |
| Disconnected numbers | Not distinguished from voicemail | The gateway sees signalling as well as audio | Its site says tones are classified acoustically | SIT tones labelled DISCONNECT; carrier messages recognised by wording |
| No-audio calls | INITIALSILENCE, same as a quiet person | Check with Khomp | Its site says dead air and FAS are classified | NO_AUDIO and NO_SPEECH separated in the call log |
| Time to verdict | Up to the total analysis time; often 2 to 5 seconds | Before the call reaches VICIdial | Its site says detection starts in 1/8 of a second | About 2 seconds; up to 3 when the callee is still talking |
| Checking a verdict | The cause string in the Asterisk log | Check with Khomp | Reports and a per-detection log (per its site) | Transcript, reason and audio for every call |
Three points on that table.
Call screening is the row to look at hardest, because it is the difference between a lost lead and a conversation. A machine status is correct in the narrow sense, since a machine did answer, but what matters is whether your dialplan can respond to it.
A detector can begin analysing in milliseconds, and that is not the same as deciding. In our own test of an acoustic model, deciding at one second lost 21% of live people, because a person and a greeting have not yet diverged. Measure time from answer to agent on your own calls.
For the short "Hello" answers that cause most false verdicts, we compared an acoustic model of our own with VM Hunter on 4,000 agent-labelled calls. The write-up has the numbers and the limits. It is our acoustic model, not any vendor's, so treat it as evidence about the method and test the products yourself.
A one-week plan
- Day 1: run the disposition breakdown and find the weak link.
- Day 2: listen to 100 recordings and count what really answered, and both error types.
- Day 3: fix what is on your side: NAT, routing extension, AMD thresholds, dial level.
- Days 4 and 5: split one list across two campaigns, your current detection against one alternative, same agents and hours.
- Day 6: listen to 200 recordings from each side and compare people dropped, machines passed, and talk time per agent hour.
- Day 7: decide, with your own numbers.
VM Hunter installs on VICIdial as one script and one dialplan extension, and logs the transcript, reason and audio for every call, which turns most of the listening into reading. The free plan covers 5,000 calls a month. Setup is in the VICIdial guide, and all the alternatives are compared on the comparison page.