How to pull reports from VICIdial
The most useful built-in reports + how to query the underlying tables for custom analysis.
VICIdial ships with ~80 built-in reports. Here are the ones you'll actually use day-to-day.
Top reports
Real-time
- Real-time Main Report (Reports → Real Time Main Report) — campaign-level live status: agents on, dial level, drops, abandons
- Time on Reports — per-agent live status: pause time, talk time, calls
Daily / shift
- Daily Stats (Reports → Daily Report) — totals per campaign per day
- User Stats (Reports → User Stats) — per-agent productivity
- Call Status Stats — disposition counts, helpful for funnel analysis
Compliance
- Drop Calls Report — every abandoned call. Critical for FCC 3% cap monitoring.
- DNC Stats — additions to your DNC list per period
Sales analysis
- Sales by Hour — peak conversion times
- Sales Tracker — campaign-level conversion funnel
Query the underlying tables
VICIdial's reports run against MariaDB tables. For custom analysis, query directly. Useful tables:
-- Every call placed
SELECT * FROM vicidial_log WHERE call_date >= NOW() - INTERVAL 1 DAY;
-- Every agent action / disposition
SELECT * FROM vicidial_agent_log WHERE event_date >= NOW() - INTERVAL 1 DAY;
-- Closer (in-group) calls
SELECT * FROM vicidial_closer_log WHERE call_date >= NOW() - INTERVAL 1 DAY;
-- DNC entries
SELECT phone_number, campaign_id, call_date FROM vicidial_dnc;
-- Agent live status snapshot
SELECT user, status, lead_id, last_call_time FROM vicidial_live_agents;
Connect a BI tool
VICIdial's MariaDB is a normal SQL database. Point any BI tool (Tableau, Looker, Metabase, Superset, Power BI) at it:
- Host: your VICIdial server's public IP
- Port: 3306
- DB: asterisk
- User/pass: a read-only user you create
Create a read-only user:
CREATE USER 'reporting'@'%' IDENTIFIED BY 'strong-password';
GRANT SELECT ON asterisk.* TO 'reporting'@'%';
FLUSH PRIVILEGES;
Lock it down further by IP allowlist in MariaDB.
Daily exports
Cron-driven CSV export to S3:
# /etc/cron.d/daily-export
0 2 * * * root mysql asterisk -e "
SELECT * FROM vicidial_log
WHERE call_date >= CURDATE() - INTERVAL 1 DAY
AND call_date < CURDATE()
INTO OUTFILE '/tmp/vicidial-$(date +\\%F).csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '\"'
" && aws s3 cp /tmp/vicidial-$(date +%F).csv s3://your-bucket/vicidial/