KnowledgebaseCall Centers & Predictive Dialing (ViciBox® / Vicidial®) › List loading, deduplication, DNC scrubbing, suppression chains, and recycling on Vicidial

List loading, deduplication, DNC scrubbing, suppression chains, and recycling on Vicidial

List hygiene is the second-most-impactful tuning lever after trunk capacity on Vicidial®. A clean list improves answer rate, reduces abandon rate, keeps you under TCPA caps, and stretches your carrier minutes. This article covers the load → dedup → scrub → suppress → recycle pipeline in the order you'll actually use it.

List file format

Vicidial accepts CSV with a fixed column model. The minimum viable schema for an outbound campaign:

phone_number,first_name,last_name,address1,city,state,postal_code,email,vendor_lead_code

Phone numbers should be in plain digits, no formatting: 5555551234 not (555) 555-1234 or +15555551234. The phone_code field (country code) is set per-list, not per-lead.

vendor_lead_code is your free-form identifier back to your source of leads — useful for tracking which purchase or which form generated which lead, and for attributing complaints back to a source.

Loading a list

Admin → Lists → Load New List File:

  1. Pick the list ID you're loading into. Vicidial uses 4-digit list IDs; a list lives within a campaign.
  2. Pick the file. The field-mapping screen shows your CSV headers next to Vicidial column names — verify each row. Misalignment here means phone numbers in the address column and you'll waste a week's trunk allocation.
  3. Pick deduplication mode (see next section).
  4. Run the load. Reports → Lead List → confirm the count matches your expectations.

Deduplication modes

ModeBehaviorWhen
None Insert all rows. Duplicates load as separate leads. Don't.
Dupe Check Campaign Lists Reject inserts where the phone number exists in any list in the same campaign. Always on for production campaigns.
Dupe Check Across Campaigns Reject inserts where the phone number exists in any list across the entire Vicidial instance. If you run distinct verticals and don't want a lead dialed by two campaigns simultaneously.
Dupe Check on Other Carrier Reject if the lead was called by a different carrier recently (advanced). Multi-carrier setups where you're rotating numbers across carriers and don't want the same prospect getting two calls from two different numbers.

DNC scrubbing

Two layers, both must happen before the campaign goes live:

Internal DNC

Vicidial maintains an internal DNC table (vicidial_dnc and campaign_dnc) populated by:

  • Agents selecting the "DNC" disposition during a call.
  • Inbound IVR options ("Press 9 to be removed from our list").
  • Manual additions via Admin → DNC List.

For the internal DNC to scrub list loads automatically, the campaign's Use Internal DNC must be ON (default). Verify in Admin → Campaigns → Modify.

Federal DNC

Vicidial does NOT auto-subscribe to or auto-scrub against the federal DNC list — that's a paid SAN registration outside Vicidial. Workflow:

  1. Register at telemarketing.donotcall.gov as a seller. Get a Subscription Account Number (SAN).
  2. Download the area-code-specific DNC files weekly (or monthly minimum). The federal list is delta-updated; you can pull the full list on first download then incrementals after.
  3. Load the DNC list into Vicidial as a separate "suppression list" via Admin → DNC List → Add Numbers to System DNC List → bulk upload.
  4. Configure your campaigns to use the System DNC list as a suppression source.

For ongoing scrubbing, write a cronjob that pulls the federal DNC delta weekly and bulk-loads it. The vicidial schema is vicidial_dnc (system-wide DNC table); direct SQL inserts are supported.

State DNC lists

Indiana, Louisiana, Mississippi, Pennsylvania, Tennessee, Texas, and Wyoming maintain state DNC lists separate from federal. Each has its own registration process and download schedule. If you dial into any of those states, scrub against their list in addition to federal — and consider segmenting your loads by state so a state-DNC update doesn't require re-scrubbing your entire list.

Suppression list chains

Beyond DNC, you'll want to suppress:

  • Recent connects — don't redial a prospect you spoke with yesterday. Vicidial's Auto Alt Dial behavior handles this per-disposition; tune in Campaign config.
  • Litigation list — names/numbers that have sued telemarketers historically. Available commercially; load as a suppression list and never recycle off it.
  • Client opt-outs from other channels — if your prospect unsubscribed from your email list, you probably shouldn't be cold-calling them either. Bulk load into DNC monthly.
  • Cell-phone suppression if your TCPA consent isn't broad enough to cover wireless. Wireless line type can be flagged via Vicidial's phone_code manipulation or via external line-type append services (Telnyx, Twilio Lookup).

Recycling rules

"Recycle" = re-dialing leads in a list that didn't connect on the first pass. Vicidial's per-disposition recycle config lives in Admin → Campaigns → Modify Campaign → Statuses tab.

Reasonable defaults:

StatusRecycle afterMax attempts
NA (No Answer)4 hours6
B (Busy)30 minutes4
AM (Answering Machine)1 day3
DC (Disconnect)Never1
DNCNever1
A / SALE / CB (Callback)Per-campaign rulesPer-campaign

Don't recycle DC (disconnected number) — that's a real disconnect, not transient. Don't recycle DNC, ever.

Cap total attempts low: most operations max at 6-8 attempts across all statuses per lead. Beyond that you're harassing the prospect, generating complaints, and wasting trunk minutes.

List archiving

Old lists pile up in the database — every closed campaign's leads sit in vicidial_list. After 6-12 months, the table grows large enough to slow down queries (the dialer hits it constantly).

Archive workflow:

  1. Export the closed list to CSV via Reports → Lead Search → Export.
  2. Drop the list from the campaign (Admin → Lists → Delete).
  3. Periodic OPTIMIZE TABLE vicidial_list to reclaim the freed rows.

Keep the exported CSV in your archive storage — if a complaint references a lead from a closed campaign, you need the historical record.

Also Read

« « Back

Powered by WHMCompleteSolution