DNC list management
How VICIdial's DNC works, where to load federal lists, internal opt-out workflow.
VICIdial has three layers of DNC. Use all three.
1. Federal DNC (vicidial_dnc with campaign_id = 'all')
Loaded once, applies across every campaign. This is where the FTC DNC.gov download goes.
Admin → Lists → DNC List → Bulk Update DNC List.
Format: one phone number per line, no formatting.
15555551234
15555551235
Refresh monthly. Subscribe to the FTC update feed.
2. State DNC (per-state lists)
Some states maintain their own. Florida, Indiana, Pennsylvania, Tennessee, Wyoming. Where required, load these into separate vicidial_dnc rows scoped to a campaign_id matching the state code.
In your campaign config, set Use Internal DNC=Y to honor everything in vicidial_dnc for matching campaign IDs.
3. Internal opt-out
Real-time, per-call. When an agent presses the DNC hot key (or selects DNC disposition), VICIdial inserts that lead's phone into vicidial_dnc with the campaign_id of the campaign they were on, AND the special 'all' campaign_id (for company-wide opt-out).
The dialer will skip that number on subsequent calls — across all campaigns.
Common gotchas
"We're getting DNC complaints despite the federal list being loaded"
Two likely causes:
- The DNC.gov data is stale. Refresh monthly.
- You loaded the list with
campaign_id = 'MYCAMPAIGN'instead of'all'. The "all" entry is what makes it global.
"An agent marked someone DNC but they got called again"
VICIdial's DNC check happens at lead-load time, not dial-time. If a lead was already in the hopper when the DNC was set, it'll dial. Either drain the hopper or set the campaign to DNC=AREACODE for stricter pre-dial filtering.
Bulk import a CSV from a 3rd-party DNC vendor
Use the bulk loader (Admin → Lists → DNC List → Bulk Update). Same one-phone-per-line format. Faster than the per-row form by a lot.
"Stop calling" requests via web form
Build a simple endpoint (PHP/Node/whatever) that inserts into vicidial_dnc with phone_number=$x, campaign_id='all'. Connect your unsubscribe links to it. Test before linking from any messaging.
Auditability
Keep a record of:
- When + how each number entered DNC
- Which agent marked it (if internal)
- The opt-out wording presented to the customer (if web)
VICIdial logs the agent and disposition; the wording is your responsibility.
RND vs DNC
Not the same thing. DNC = "they don't want calls." RND = "this number was reassigned away from whoever consented." Both apply. Both must be checked.