DEV Community

Jason Shouldice
Jason Shouldice

Posted on • Originally published at vicistack.com

Why Your VICIdial Answer Rates Collapsed (and How to Fix Your Caller ID)

Last month a center we onboarded went from 45% answer rates to 12% in three days. Their AMD tuning was perfect. Their scripts were solid. Their agents were ready. The problem was simpler and more expensive: every one of their outbound DIDs had been flagged as "Spam Likely" by the major carriers.

At 200 dials per agent per hour, the difference between 45% and 12% answer rates is the difference between 90 live connections and 24. Agents sit idle, cost per acquisition triples, and the campaign bleeds out.

How Your Numbers Get Flagged

Three pathways kill your caller ID reputation:

Carrier analytics engines. AT&T uses Hiya, Verizon uses TNS Call Guardian, T-Mobile runs Scam Shield. They all watch for the same patterns: high call volume from a single number (500+ calls/day when normal consumer usage is 5-20), lots of short-duration calls (hangups, voicemail), low answer rates, and geographic inconsistency (a Miami DID calling thousands of people in Oregon).

Consumer reports. When someone presses "Report Spam" on their phone, it feeds directly into those analytics engines. It takes as few as 3-5 reports in 24 hours to flag a number on some platforms.

STIR/SHAKEN attestation failures. Every call now carries an attestation level: A (carrier verified you and your right to use the number), B (carrier verified you but not the number), or C (gateway call, no verification). If your SIP carrier gives you B or C attestation, you start every call with a trust deficit. Carriers increasingly use attestation as a primary spam-scoring input.

What You Should Monitor

Track your answer rate per DID daily. You can pull this from the VICIdial call logs:

#!/bin/bash
# did_reputation_alert.sh — run hourly via cron
MYSQL="mysql -u monitor -pmonitorpass -D asterisk -N -e"
THRESHOLD=25

FLAGGED=$($MYSQL "
    SELECT dl.outbound_cid,
           ROUND(SUM(CASE WHEN vl.status NOT IN ('NA','B','DC','N')
           THEN 1 ELSE 0 END) / COUNT(*) * 100, 1) as ar
    FROM vicidial_dial_log dl
    JOIN vicidial_log vl ON dl.uniqueid = vl.uniqueid
    WHERE vl.call_date > DATE_SUB(NOW(), INTERVAL 4 HOUR)
    GROUP BY dl.outbound_cid
    HAVING COUNT(*) > 30 AND ar < $THRESHOLD;
")

if [ -n "$FLAGGED" ]; then
    echo "DIDs below ${THRESHOLD}% answer rate:" && echo "$FLAGGED"
fi
Enter fullscreen mode Exit fullscreen mode

Compare each DID's answer rate against your campaign average. If a DID drops below 25% while the campaign averages 40%+, that DID is probably flagged.

Register with the Free Caller Registry at freecallerregistry.com before problems start. It signals legitimacy to analytics providers. Then check each carrier's tools: T-Mobile's Scam Shield, AT&T's Call Protect, and Verizon's Call Filter all let you see how your numbers look from the receiving end.

For automated monitoring, build a script that checks DID answer rates every 4 hours and alerts you when any DID drops below your threshold. Catching reputation drops within hours instead of days is the difference between pulling one DID from rotation and watching your whole pool get contaminated.

DID Rotation: The Primary Defense

Spread your volume across enough DIDs that no single number exceeds the thresholds that trigger flagging. Rule of thumb: 1 DID per 50-100 daily calls. A center making 10,000 dials per day needs 100-200 DIDs in rotation.

VICIdial supports this natively through CID Groups. Create a CID Group in Admin, add your DIDs mapped to their area codes, assign the group to your campaign, and set rotation to ROUND_ROBIN or RANDOM. For local presence (showing a caller ID matching the called party's area code), set rotation to AREACODE. Local presence consistently produces 15-30% higher answer rates.

Every DID you use for outbound must have inbound routing configured. Prospects call back. If the number doesn't work inbound, it gets flagged faster and you lose warm callbacks.

Cool-Down and Recovery

When a DID gets flagged, pull it from rotation immediately and begin a structured cool-down:

  • Soft flag (1-2 carriers): 7-14 days of zero outbound calls. 85-90% recovery rate.
  • Hard flag (all major carriers): 30-60 days resting. 60-70% recovery.
  • Persistent flag (active for 60+ days before you caught it): 90+ days or retire the number. 30-40% recovery.

During cool-down, register the DID with Free Caller Registry if you haven't, request carrier reviews through their business portals, and verify STIR/SHAKEN attestation is at A-level. When re-introducing a recovered DID, start with 20-30 calls per day to known-good numbers for 1-2 weeks before adding it back to cold outbound.

Prevention Beats Recovery

Start new DIDs at 20-30 calls per day and ramp over 2 weeks. Maintain at least a 1:100 DID-to-call ratio. Register CNAM for every outbound DID so recipients see your business name. Separate DID pools by campaign type — don't let cold outbound contaminate your warm callback pool. And make sure your carrier provides Full STIR/SHAKEN attestation (A-level) on every outbound call. Switch carriers if they can't deliver that.

Caller ID reputation management is one of the highest-ROI things you can do for a VICIdial operation. Most centers are losing 15-30% of potential live connections to spam labeling without realizing it. ViciStack includes full DID reputation auditing, automated rotation and cool-down management, and CNAM registration as part of every deployment.

Originally published at https://vicistack.com/blog/vicidial-caller-id-reputation/

Top comments (0)