·17 min·18 views

VitalPBX Call Center Analytics: The Complete Guide to Real-Time Monitoring in 2026

VitalPBX built-in analytics (Sonata Stats) costs $200/month. How to get real-time call center monitoring for less.

A
Astervis
Engineering & product team

VitalPBX has quietly become one of the best Asterisk-based PBX platforms on the market. Modern UI, unlimited extensions, solid call center features out of the box. But when it comes to analytics and real-time monitoring? That's where most VitalPBX deployments fall short.

Here's the problem: VitalPBX's built-in analytics (Sonata Stats) is only available on the Call Center plan at $200/month. If you're running the Community (free) or Enterprise ($100/month) plan, you're flying blind. No queue reports. No agent performance data. No way to know if your call center is drowning or thriving.

This guide covers everything you need to know about monitoring a VitalPBX call center — from what's built in, to what's missing, to how you can add real-time analytics without upgrading to the $200/month plan.

What VitalPBX Gives You Out of the Box

VitalPBX ships with solid call center fundamentals. Queues with ACD (Automatic Call Distribution), agent management, hot desking for shift-based teams, and supervision codes for managers who need to listen in on calls.

The core PBX handles call routing well. Ring strategies (ringall, leastrecent, fewestcalls, random, rrmemory), queue priorities, announcements, and callback options all work as expected. For basic inbound call center operations, VitalPBX delivers.

But "delivers" and "gives you visibility into what's happening" are two different things.

The Sonata Suite: VitalPBX's Commercial Add-Ons

VitalPBX offers the Sonata Suite as their premium analytics and management layer. It includes five modules:

Sonata Switchboard — Real-time call monitoring panel. See active calls, drag-and-drop transfers, listen/whisper/barge. Available on Enterprise plan ($100/month) and above.

Sonata Stats — Historical reporting. Queue reports, agent reports, lost calls, service level analysis. Only available on Call Center ($200/month) and Multi-Tenant ($250/month) plans.

Sonata Recordings — Call recording management with reference numbers, flags, notes, and ratings. Available on Enterprise ($100/month) and above.

Sonata Dialer — Outbound campaign management. Only on Call Center ($200/month) and above.

Sonata Billing — Cost tracking and billing reports. Available on Enterprise ($100/month) and above.

Notice the gap? The one module most call centers desperately need — Stats — is locked behind the most expensive plans. If you're running 10-15 agents on the Enterprise plan, you're paying $100/month for your PBX but have zero visibility into queue performance.

Where VitalPBX Analytics Falls Short

I've deployed analytics on dozens of Asterisk-based PBX systems, including VitalPBX. Here are the gaps that consistently frustrate call center managers.

No Real-Time Queue Dashboard

Sonata Switchboard shows active calls. That's useful for supervisors who need to intervene on specific calls. But it's not a queue analytics dashboard.

You can't see: current queue depth over time, average wait time trending up, service level dropping, or agents about to hit burnout-level occupancy. You're reacting to individual calls instead of managing queue health.

Real-time dashboards are the difference between "we had a bad day" and "we caught the problem at 10:15 AM and fixed staffing before it got worse." Without one, your supervisors are always 30 minutes behind.

Historical Reports Only (No Real-Time Analytics)

Sonata Stats generates reports. You pick a date range, select your queues and agents, and get a PDF or CSV. This is fine for weekly manager meetings. It's useless for making decisions at 2 PM on a Tuesday when wait times are spiking.

The reports cover:

  • Call summary by queue
  • Service level analysis
  • Agent performance (calls taken, talk time, hold time)
  • Lost/abandoned call breakdown
  • Calls by hour/day distribution

These are the basics. They tell you what happened yesterday. They don't tell you what's happening right now.

No Heatmaps or Advanced Visualizations

Sonata Stats uses tables and basic charts. There's no heatmap showing call volume patterns across the week. No trend lines showing how your average handle time has shifted over the past month. No operator leaderboard that updates in real time.

For a 5-agent team, tables work. For 20+ agents across multiple queues, you need visual patterns to spot problems before they become crises.

No CRM Integration for Analytics

VitalPBX integrates with some CRM systems for screen pops and click-to-call. But the analytics layer doesn't connect to your CRM. You can't correlate call center performance with sales outcomes, customer satisfaction, or ticket resolution.

If you're running a sales team on VitalPBX, you want to know: "Agent A has the highest call volume but the lowest conversion rate." Sonata Stats can tell you the first part. It can't tell you the second.

Limited to VitalPBX Ecosystem

Sonata Stats only works with VitalPBX. If you're running mixed infrastructure — maybe VitalPBX for one office and FreePBX for another — you need two separate reporting systems. No consolidated view.

Option 1: Build Your Own Analytics Stack

If you're technically inclined and budget-conscious, you can build a monitoring stack on top of VitalPBX. VitalPBX runs on Asterisk, which means all the standard Asterisk monitoring approaches work.

CDR + Custom Database Queries

VitalPBX stores CDR (Call Detail Records) in a MySQL/MariaDB database. You can query it directly:

-- Top 10 agents by call volume this week (VitalPBX CDR) SELECT dst AS agent_extension, COUNT(*) AS total_calls, ROUND(AVG(billsec)) AS avg_talk_seconds, ROUND(SUM(billsec) / 3600, 1) AS total_hours FROM cdr WHERE calldate >= DATE_SUB(NOW(), INTERVAL 7 DAY) AND disposition = 'ANSWERED' AND dcontext LIKE '%queue%' GROUP BY dst ORDER BY total_calls DESC LIMIT 10;
-- Abandoned calls by hour (identifies staffing gaps) SELECT HOUR(calldate) AS hour_of_day, COUNT(*) AS abandoned_calls, ROUND(AVG(duration)) AS avg_wait_before_abandon FROM cdr WHERE calldate >= DATE_SUB(NOW(), INTERVAL 7 DAY) AND disposition != 'ANSWERED' AND dcontext LIKE '%queue%' GROUP BY HOUR(calldate) ORDER BY hour_of_day;

This works. It's also slow, manual, and requires someone who knows SQL. Not exactly the "real-time dashboard" your supervisors are asking for.

queue_log + Custom Parsing

Asterisk's queue_log file contains detailed event-level data for every queue interaction. VitalPBX writes to this file like any other Asterisk system:

1711411200|1711411195.42|support|SIP/1001|CONNECT|12|from-queue| 1711411260|1711411195.42|support|SIP/1001|COMPLETECALLER|12|60|| 1711411200|1711411198.43|support|NONE|ABANDON|1|1|15|

Each line records: timestamp, unique ID, queue name, agent, event type, and event-specific data. You can parse this for:

  • Queue wait times (time between ENTERQUEUE and CONNECT)
  • Agent occupancy (time in CONNECT vs total logged-in time)
  • Abandonment patterns (ABANDON events with wait duration)
  • Service level (percentage answered within threshold)

But parsing text files and building dashboards from scratch takes 40-80 hours of development time. And you still need to maintain it.

Grafana + Prometheus Stack

The most popular DIY approach for VitalPBX monitoring:

  1. Install asterisk_exporter on your VitalPBX server
  2. Point Prometheus at the exporter endpoint
  3. Build Grafana dashboards for visualization
# prometheus.yml for VitalPBX monitoring scrape_configs: - job_name: 'vitalpbx-asterisk' static_configs: - targets: ['your-vitalpbx-ip:9100'] scrape_interval: 15s

This gets you system metrics (CPU, memory, active channels) but not queue-level analytics. For queue data, you need custom scripts that parse queue_log and expose metrics in Prometheus format.

I've seen teams spend 2-3 weeks getting a useful Grafana dashboard working for Asterisk queues. It works, but it's fragile. Every Asterisk update risks breaking your custom exporters.

My take: The Grafana approach makes sense if you already have a Prometheus/Grafana stack running for other infrastructure. If you're building it just for VitalPBX call center monitoring, the maintenance cost isn't worth it.

Option 2: QueueMetrics (The Legacy Choice)

QueueMetrics is the established player in Asterisk call center reporting. They have a dedicated VitalPBX integration page and published installation guides.

What You Get

QueueMetrics provides:

  • Historical reports (similar to Sonata Stats, but more detailed)
  • Real-time wallboards (customizable panels)
  • Agent page (personal performance view)
  • Quality assessment module
  • IVR analytics
  • API access

The Trade-Offs

Price: CHF 8 per agent per month (roughly $9 USD). For a 20-agent team, that's $180/month just for reporting — nearly the same as upgrading to VitalPBX's Call Center plan.

Technology: QueueMetrics is Java-based. It runs on Tomcat with a MySQL backend. In 2026, deploying Java applications for web dashboards feels like driving a horse cart on a highway. It works. It's just slow.

Installation: QueueMetrics requires its own server or VM, Java runtime, and database. On VitalPBX, you'll need to configure queue_log access, set up the QueueMetrics connector, and maintain the Java application separately from your PBX.

UI: The interface hasn't fundamentally changed in years. Functional, but looks like it was designed in 2012. If your supervisors live on the dashboard all day, aesthetics matter more than you think.

When QueueMetrics Makes Sense for VitalPBX

QueueMetrics is the right choice if:

  • You need detailed historical reports with custom date ranges
  • Your team already runs Java infrastructure
  • You want IVR analytics specifically
  • You need multi-PBX reporting across different Asterisk systems (QueueMetrics can aggregate)

It's the wrong choice if you primarily need real-time dashboards, want modern visualizations, or are watching your per-agent costs.

Option 3: Astervis (Real-Time Analytics Built for Asterisk PBX)

Full disclosure: this is our product. But I'm going to be straight with you about what it does and doesn't do, so you can make an informed decision.

Astervis is a real-time call center analytics platform built specifically for Asterisk-based PBX systems — including VitalPBX. It's self-hosted, installs in about 5 minutes, and connects to your existing VitalPBX infrastructure without modifying your PBX configuration.

How Astervis Works with VitalPBX

VitalPBX runs on Asterisk. Astervis reads the same data sources any Asterisk monitoring tool uses: the AMI (Asterisk Manager Interface), CDR database, and queue_log. Because VitalPBX doesn't modify Asterisk's core interfaces, the integration is seamless.

Setup on a VitalPBX server:

# One-command install on your VitalPBX server (or a separate machine) curl -sSL https://api.astervis.io/api/releases/install.sh | bash

Astervis connects to your VitalPBX's Asterisk AMI (default port 5038) and starts collecting data immediately. No Java runtime. No Tomcat. No separate database server to maintain.

Tired of guessing what's happening in your queues?

Astervis gives you 30+ real-time charts, operator KPIs, and CRM integration for your Asterisk PBX. Self-hosted. Install in 5 minutes. From $119/mo flat unlimited operators.

Try Free

What You Get: 30+ Real-Time Charts

Here's what Astervis provides that Sonata Stats and QueueMetrics don't:

Real-Time Queue Dashboard

  • Live queue depth, wait times, and service level — updated every second
  • Visual indicators when thresholds are breached (queue too deep, wait too long)
  • Historical trends overlaid on real-time data so you see patterns as they develop

Heatmaps

  • Call volume heatmap: which hours on which days get the most calls
  • Wait time heatmap: when are customers waiting longest
  • Agent availability heatmap: staffing coverage across the week

These heatmaps are the single most useful visualization for workforce planning. One glance tells you "Mondays 9-11 AM are consistently understaffed." No SQL queries needed.

Operator Performance Tracking

  • Real-time leaderboards (calls handled, average handle time, occupancy rate)
  • Individual agent scorecards with trend data
  • KPI tracking against targets you define
  • Burnout indicators: agents above 85% occupancy get flagged

Trunk Analytics

  • SIP trunk utilization in real time
  • Concurrent call tracking per trunk
  • Trunk quality metrics (if your VitalPBX has MOS data)

CRM Integration

  • Bitrix24 and AmoCRM integration built in
  • Correlate call data with deal outcomes
  • Agent-level conversion tracking

Pricing Comparison: VitalPBX Analytics Options

Here's where the numbers tell the story:

Solution10 Agents20 Agents50 AgentsReal-Time
VitalPBX Call Center Plan$200/mo$200/mo$200/moLimited
QueueMetrics$90/mo$180/mo$450/moYes
Astervis Starter$119/moYes
Astervis Professional$449/mo$449/mo$449/moYes
Grafana DIYFree*Free*Free*Partial

*Grafana is free but costs 40-80 hours of development time and ongoing maintenance.

For a 10-agent VitalPBX call center on the Enterprise plan ($100/month), adding Astervis Starter ($119/month) gives you real-time analytics for a total of $219/month. That's $19 more than upgrading to VitalPBX's Call Center plan, but you get real-time dashboards instead of historical reports, and the operator count is unlimited.

For 20+ agents, the math gets even better. QueueMetrics at $9/agent/month hits $180/month for 20 agents. Astervis Starter at $119/month is flat no matter how many operators you add, and you get 30+ real-time charts, heatmaps, and CRM integration that QueueMetrics doesn't offer.

Setting Up Analytics on VitalPBX: Step by Step

Regardless of which analytics tool you choose, you need to ensure your VitalPBX is configured correctly for data collection.

Step 1: Enable AMI Access

VitalPBX manages Asterisk's manager.conf through its web interface. Navigate to Settings → PBX Settings → AMI and create a read-only AMI user:

; VitalPBX AMI configuration for monitoring ; (configured via VitalPBX web UI, shown here for reference) [monitor] secret = your-secure-password-here deny = 0.0.0.0/0.0.0.0 permit = 127.0.0.1/255.255.255.0 permit = 192.168.1.0/255.255.255.0 read = system,call,log,agent write =

The read permissions are sufficient for monitoring. No write access needed — your analytics tool should never modify PBX state.

Step 2: Verify queue_log Is Active

VitalPBX writes queue events to /var/log/asterisk/queue_log by default. Verify it's working:

# Check queue_log is being written tail -f /var/log/asterisk/queue_log # You should see events like: # 1711411200|1711411195.42|support|SIP/1001|CONNECT|12| # If empty, check queues.conf: asterisk -rx "queue show"

If queue_log is empty, verify that at least one queue is configured and receiving calls. VitalPBX creates the file automatically when queues are active.

Step 3: Configure CDR Database Access

For historical analytics, your tool needs access to the CDR database. On VitalPBX, this is typically MySQL/MariaDB:

# Find CDR database credentials grep -A5 'cdr_mysql' /etc/asterisk/cdr_mysql.conf # Or check VitalPBX's database configuration cat /etc/vitalpbx/vitalpbx.conf | grep -i database

Create a read-only database user for your analytics tool:

-- Create read-only user for analytics CREATE USER 'analytics'@'192.168.1.%' IDENTIFIED BY 'secure-password'; GRANT SELECT ON asteriskcdr.* TO 'analytics'@'192.168.1.%'; FLUSH PRIVILEGES;

Step 4: Set Up Queue Monitoring Parameters

For accurate real-time monitoring, configure your VitalPBX queues with proper timeouts and events. In VitalPBX's Queue settings:

; Key settings in queues.conf for accurate analytics ; Configure these through VitalPBX web UI → Call Center → Queues ; Enable detailed event logging eventwhencalled = yes eventmemberstatus = yes ; Set service level target (seconds) for SLA reporting servicelevel = 20 ; Log queue caller abandonment log_membername_as_agent = yes

The eventwhencalled and eventmemberstatus settings are critical. Without them, your analytics tool won't capture agent state changes, which means inaccurate occupancy calculations.

Step 5: Test Your Configuration

Before connecting your analytics tool, verify data is flowing:

# Test AMI connection asterisk -rx "manager show connected" # Test queue is reporting events asterisk -rx "queue show support" # Look for: "Calls completed: X, Calls abandoned: Y" # Verify CDR is writing mysql -u analytics -p asteriskcdr -e "SELECT COUNT(*) FROM cdr WHERE calldate >= DATE_SUB(NOW(), INTERVAL 1 HOUR);"

If all three checks pass, your VitalPBX is ready for any analytics tool — whether that's Astervis, QueueMetrics, or a custom Grafana setup.

Which VitalPBX Analytics Approach Is Right for You?

The answer depends on three things: team size, budget, and what you need to see.

Under 5 Agents: Keep It Simple

If you're running a small team, Sonata Switchboard (included in Enterprise $100/month) plus manual CDR queries might be enough. You don't need heatmaps for a 3-person queue. A weekly SQL report gives you what you need.

But even at this size, if you're on the Community (free) plan and don't want to upgrade to Enterprise just for Switchboard, Astervis Starter at $119/month gives you more analytics than Switchboard provides.

5-20 Agents: You Need Real-Time

This is the sweet spot where real-time analytics starts paying for itself. A supervisor managing 10 agents across 2-3 queues can't manually check each queue. They need a single dashboard that shows problems as they happen.

At this scale, upgrading to VitalPBX Call Center ($200/month) for Sonata Stats, or adding Astervis ($119-449/month) to your existing plan are both reasonable options. The question is whether you need real-time visualization (Astervis) or are satisfied with historical reports (Sonata Stats).

20+ Agents: Invest in Proper Analytics

Above 20 agents, you can't afford to not have real-time analytics. Every minute of excessive wait time costs money. Every staffing gap multiplies across all active queues.

At this scale, the per-agent pricing of QueueMetrics ($9/agent = $180+ for 20 agents) makes flat-rate solutions more attractive. Astervis Starter at $119/month covers unlimited agents — roughly $6/agent at 20 seats, and less with every operator you add, versus QueueMetrics' $9.

Multi-Site or Mixed PBX: Think Carefully

If you're running VitalPBX at one location and FreePBX at another, you need analytics that works across both. QueueMetrics and Astervis both support this since they connect to standard Asterisk interfaces. Sonata Stats only works with VitalPBX.

VitalPBX-Specific Monitoring Tips

A few things I've learned from monitoring VitalPBX deployments that differ from vanilla Asterisk:

Watch Your Sonata Switchboard Impact

If you're running Sonata Switchboard, it maintains persistent AMI connections. If you add another monitoring tool that also connects via AMI, make sure your VitalPBX server can handle multiple AMI sessions. On servers with less than 4GB RAM, I've seen performance dips when three or more AMI consumers are active simultaneously.

# Check current AMI connections asterisk -rx "manager show connected" # If you see 5+, consider whether all are necessary

VitalPBX's CDR May Include Non-Queue Calls

VitalPBX's CDR database captures all calls — not just queue calls. When building reports, filter by dcontext to isolate call center traffic:

-- Filter for queue-only calls in VitalPBX CDR SELECT * FROM cdr WHERE dcontext IN ('from-queue', 'ext-queues', 'macro-queue') AND calldate >= '2026-03-01' ORDER BY calldate DESC;

The exact context names depend on your VitalPBX version and queue configuration. Check your actual dcontext values before building queries.

Hot Desking and Agent Tracking

VitalPBX's hot desking feature (where agents log into different physical phones) can confuse analytics tools that track by extension number. The agent at extension 1001 today might be at 1002 tomorrow.

To handle this cleanly:

  • Use Asterisk agent codes rather than extensions for queue membership
  • Configure your analytics tool to track by agent name, not extension
  • In Astervis, agent identity is resolved automatically from queue membership events

Monitor VitalPBX's Own Resource Usage

VitalPBX does more than vanilla Asterisk — it runs a web UI, manages configurations, and runs commercial modules. Monitor the host system alongside your call center metrics:

# Quick health check for VitalPBX server echo "=== CPU ===" top -bn1 | head -5 echo "=== Memory ===" free -h echo "=== Asterisk Channels ===" asterisk -rx "core show channels count" echo "=== Active Calls ===" asterisk -rx "core show calls"

A VitalPBX server running Sonata Suite modules alongside 50 concurrent calls needs at least 4 CPU cores and 8GB RAM. If you're adding external analytics on the same server, account for the additional resource consumption.

The Bottom Line

VitalPBX is an excellent PBX platform that's rightfully gaining market share. Their Sonata Suite is competent for basic reporting needs. But if you're running a serious call center operation — 10+ agents, SLA commitments, workforce optimization — you need analytics that go beyond historical reports.

Your options are clear:

  1. Upgrade to VitalPBX Call Center ($200/month) for Sonata Stats. Good for teams happy with historical reporting.
  2. Add QueueMetrics for more detailed reports plus real-time wallboards. Watch per-agent costs above 20 agents.
  3. Add Astervis for real-time dashboards, heatmaps, and CRM integration at flat-rate pricing. Try it free for 14 days — installs in 5 minutes on your existing VitalPBX server.
  4. Build with Grafana if you have DevOps resources and want full customization. Budget 40-80 hours.

Every hour your supervisors spend guessing what's happening in the queue is an hour they could spend fixing the problem. Real-time visibility isn't a luxury at scale — it's the minimum viable monitoring for a call center that takes customer experience seriously.

Stop guessing. Start monitoring.

See your Asterisk call center's real performance — queue wait times, agent activity, trunk usage, and 30+ charts. Self-hosted on your server. Install in 5 minutes. No credit card required.

From $119/mo flat. Unlimited operators. 14-day free trial.

Share this article