; ============================================================================= ; VICIdial Predictive Dialer — Maximum Throughput Configuration ; ============================================================================= ; Generated by ViciStack — https://vicistack.com — Free VICIdial optimization ; ; WHAT THIS FILE DOES: ; Campaign-level settings for the predictive dialer engine. Controls dial ; level, hopper size, auto-dial behavior, adaptive algorithm, trunk usage, ; and agent routing. These are the settings that determine how many calls ; per hour your agents handle. ; ; HOW TO USE: ; These are VICIdial admin GUI settings, not an Asterisk config file. ; Apply them in Admin > Campaigns > [your campaign] > Detail View. ; This file documents every setting, what it does, and why. ; ; FULL GUIDE: ; https://vicistack.com/blog/vicidial-predictive-dialer-settings/ ; https://vicistack.com/blog/vicidial-auto-dial-level-tuning/ ; https://vicistack.com/blog/vicidial-dial-hopper-guide/ ; https://vicistack.com/blog/best-predictive-dialer/ ; ; NEED HELP? hello@vicistack.com — free campaign audit ; ============================================================================= ; ============================================================================= ; SECTION 1: DIAL METHOD & AUTO-DIAL LEVEL ; ============================================================================= ; The dial method determines how VICIdial decides when to place calls. ; This is the single most impactful setting in the entire system. ; --- Dial Method --- ; Options: MANUAL, RATIO, ADAPT_AVERAGE, ADAPT_HARD_LIMIT, ADAPT_TAPERED, ; INBOUND_MAN ; ; RATIO: Fixed ratio of lines to agents. Simple but dumb — doesn't adapt ; to answer rates. Fine for <5 agents. ; ; ADAPT_HARD_LIMIT: Adjusts dial level to keep abandon rate below your ; drop percentage. This is what you want for most campaigns. ; It dials aggressively when answer rates are low and backs off ; when too many calls are connecting without available agents. ; ; ADAPT_TAPERED: Like HARD_LIMIT but smooths out the adjustments. Better ; for small teams (3-8 agents) where one agent going on break ; would cause HARD_LIMIT to oscillate wildly. ; ; ADAPT_AVERAGE: Averages the dial level over time. Least aggressive. ; Use for compliance-sensitive campaigns where drops are costly. ; ; Recommendation: ADAPT_HARD_LIMIT for 10+ agents, ADAPT_TAPERED for 3-9. dial_method = ADAPT_HARD_LIMIT ; --- Auto Dial Level --- ; Starting ratio of lines dialed per available agent. ; 1.0 = one call per agent (preview/progressive). No drops, but agents ; sit idle between calls. ; 3.0 = three calls per agent. Aggressive. Expect 3-5% drops. ; Stock default: 1.0 (way too conservative). ; ; For ADAPT modes, this is the STARTING level. The algorithm adjusts from here. ; Set it close to where you expect to end up to reduce the warmup period. ; Most B2C campaigns settle around 2.5-4.0 depending on answer rates. auto_dial_level = 3.0 ; --- Adaptive Intensity --- ; How aggressively the adaptive algorithm changes the dial level (1-20). ; Higher = faster adaptation but more oscillation. ; Lower = smoother but takes longer to react to changing conditions. ; Stock: 0 (disabled). Start at 5 and increase if the system is slow to adapt. adaptive_intensity = 5 ; --- Adaptive Drop Percentage --- ; Maximum acceptable abandon/drop rate. Adaptive mode won't dial more ; aggressively if drops would exceed this. ; FTC limit: 3% for telemarketing. TCPA: technically unlimited but >5% is risky. ; Set this based on your compliance requirements. ; Most campaigns: 3.0 ; Surveys/political (exempt from FTC): 5.0 adaptive_drop_percentage = 3.0 ; --- Available Only Ratio --- ; Y = only count available (waiting) agents when calculating dial level. ; N = count all logged-in agents including those on calls. ; Stock: N. Set to Y for more accurate predictive behavior. When N, the ; system over-dials because it counts busy agents as available capacity. available_only_ratio = Y ; ============================================================================= ; SECTION 2: HOPPER SETTINGS ; ============================================================================= ; The hopper is VICIdial's call queue — a buffer of leads pre-loaded from ; the database, ready to dial. If the hopper runs dry, agents sit idle ; while the system loads more leads. If it's too big, you waste memory. ; --- Hopper Level --- ; Number of leads to keep in the hopper per campaign. ; Formula: (number_of_agents * auto_dial_level * 2) + 50 ; Example: 20 agents * 3.0 dial level * 2 + 50 = 170 ; Stock: 100. Fine for small campaigns. Scale up with agent count. ; Maximum practical value: 2000. Above that, hopper loads get slow. hopper_level = 200 ; --- Lead Order --- ; How leads are pulled from the database into the hopper. ; DOWN = oldest leads first (by entry_date). Best for fresh leads. ; UP = newest leads first. Use when you're constantly importing new leads. ; RANDOM = random order. Distributes call patterns across area codes. ; DOWN_COUNT = leads with fewest call attempts first. Good for recycling. ; UP_COUNT = most-called leads first. Rarely useful. ; ; Recommendation: DOWN for fresh lists, DOWN_COUNT for recycled lists. lead_order = DOWN ; --- Lead Order Randomize --- ; Y = randomize within the lead_order selection. Prevents geographic ; clustering (calling the same area code back-to-back) which can ; trigger carrier fraud detection. ; Stock: N. Set to Y unless you have a specific reason for sequential ordering. lead_order_randomize = Y ; --- Lead Order Secondary --- ; Secondary sort after the primary lead_order. ; Options: same as lead_order + VENDOR_LEAD_CODE, SOURCE_ID, etc. ; Useful for sorting by source/vendor within the time-based ordering. lead_order_secondary = NONE ; --- Lead Recycling --- ; What to do with leads that weren't reached. ; See https://vicistack.com/blog/vicidial-lead-recycling/ for full guide. ; Configure in Admin > Campaigns > Lead Recycling. ; Key dispositions to recycle: NA (No Answer), B (Busy), DC (Disconnect) ; Set attempt limits per disposition (e.g., NA max 6 attempts over 3 days). ; ============================================================================= ; SECTION 3: CALL TIMING & TRUNK MANAGEMENT ; ============================================================================= ; --- Dial Timeout --- ; Seconds to let a call ring before giving up. ; Stock: 60. Way too long — nobody answers after 30s, and you're burning ; a trunk channel for nothing. 26 seconds = ~4-5 rings, which is the sweet ; spot between "gave them a chance" and "not wasting trunks." dial_timeout = 26 ; --- Trunk Short-Circuit --- ; Calls shorter than this (seconds) are flagged as bad numbers/disconnects. ; Carrier rejection messages typically play for 2-3 seconds. Setting this ; to 5 auto-flags short calls so you don't waste time redialing them. ; Stock: 0 (disabled). Enable it. trunk_shortcircuit = 5 ; --- Max Trunk Lines --- ; Total SIP channels this campaign can use simultaneously. ; Don't set this higher than your actual trunk capacity or you'll get ; 503 errors and the dialer will think answer rates dropped. ; Check your SIP provider's concurrent call limit. ; Leave 10% headroom for inbound calls. ; Example: 100 trunk channels, keep 10 for inbound → set to 90. max_trunk_lines = 90 ; --- Campaign CID (Caller ID) --- ; See https://vicistack.com/blog/vicidial-caller-id-reputation/ for strategy. ; Options: ; CAMPAIGN = use the campaign's default CID ; LIST = use per-list caller IDs (geographic matching) ; CUSTOM = use custom CID per lead ; ; Best practice: Use LIST with local area code matching. Calls from a local ; number get 30-40% higher answer rates than toll-free or out-of-area. campaign_cid = LIST ; ============================================================================= ; SECTION 4: AGENT ROUTING & CALL DISTRIBUTION ; ============================================================================= ; --- Agent Routing --- ; How calls are distributed to available agents. ; Options: ; LONGEST_WAIT_AGENT = agent who has been waiting longest gets the call. ; Fair, prevents cherry-picking. Best for most campaigns. ; RANDOM = random agent selection. Use when all agents are interchangeable. ; RING_ALL = ring all available agents, first to answer gets it. ; Creates competition but wastes resources. ; CAMPAIGN_RANK = route based on agent skill ranking. ; Use for tiered agent groups (seniors get harder leads). ; FEWEST_CALLS = agent with least calls today gets next one. ; Equalizes workload across shift start times. agent_routing = LONGEST_WAIT_AGENT ; --- Wrapup Time --- ; Seconds after a call ends before the agent is available for the next call. ; This is critical for data entry, notes, and disposition. ; Stock: 0 (instant availability). This is terrible for agents — they'll ; get slammed with calls while still typing notes from the last one. ; 5-10 seconds minimum. 15-30 for complex campaigns. ; Your agents will hate you if this is 0. Don't be that manager. wrapup_seconds = 10 ; --- Wrapup Message --- ; Text shown to agent during wrapup period. ; Remind them to disposition properly. wrapup_message = "Enter disposition and notes. Next call in 10 seconds." ; --- Dead Call Handling --- ; What to do when AMD detects a machine or the call drops. ; DISPO = auto-disposition as the configured status (usually AA for Answering Machine) ; MESSAGE = play a pre-recorded message to the voicemail ; Both saves agent time. MESSAGE can leave targeted voicemail drops for ROI. dead_call_handling = DISPO ; ============================================================================= ; SECTION 5: PERFORMANCE TARGETS ; ============================================================================= ; These are the benchmarks for a well-tuned predictive campaign. ; If you're not hitting these, something is misconfigured. ; ; Metric Target Red Flag ; ----------------------------------------------- ; Calls per agent per hour 25-40 <15 ; Agent talk time % 45-55% <35% ; Agent wait time % 5-15% >25% ; Drop/abandon rate <3% >5% ; Average handle time 2-4 min Varies by campaign ; Dial level (adaptive) 2.5-4.0 <1.5 or >6.0 ; ; Monitor these in the VICIdial real-time report: ; https://vicistack.com/blog/vicidial-realtime-report-guide/ ; ; If your calls/hour is low and dial level is high, your list quality is ; the problem, not the dialer settings. Clean your list. ; See: https://vicistack.com/blog/vicidial-list-management/ ; ; For professional campaign optimization: ; https://vicistack.com — hello@vicistack.com ; ============================================================================= ; ============================================================================= ; SECTION 6: COMPLIANCE SETTINGS ; ============================================================================= ; These aren't optional. FTC, FCC, and state attorneys general will fine you. ; --- Call Time Restrictions --- ; TCPA: No calls before 8am or after 9pm in the CALLEE's time zone. ; VICIdial handles this with the Call Time setting. ; Create a Call Time entry: 8am-9pm, apply to campaign. ; Make sure your server timezone and the list timezone fields are correct. call_time = 8am-9pm ; --- DNC List --- ; Load the federal DNC registry and scrub your lists. ; See: https://vicistack.com/blog/vicidial-dnc-management/ ; VICIdial's internal DNC table handles per-campaign opt-outs. ; Enable "DNC Scrub" in campaign settings. dnc_scrub = Y ; --- Abandon Rate Cap --- ; FTC Safe Harbor: 3% abandon rate measured over 30 days. ; The adaptive_drop_percentage above handles this, but double-check ; your actual rate in Admin > Reports > Drop Rate Report. ; See: https://vicistack.com/blog/vicidial-tcpa-compliance/ ; https://vicistack.com/blog/call-center-compliance-checklist-2026/ ; --- Required Disclosures --- ; Your agents must identify themselves and the company within the first ; few seconds. Build this into your agent scripts. ; See: https://vicistack.com/blog/dynamic-scripting-for-call-centers/