Turn on 3CX's per-extension call-quality monitoring from Sikurd, then see each call leg rated good, fair or poor on the call path report, trends per trunk and extension, and a fleet tile for degraded trunks. Where 3CX reported nothing, Sikurd says not available.
The report 3CX already writes
Open any call in the 3CX web client for a monitored extension and there is a call report: codec, MOS from and to the PBX, jitter, lost packets, round-trip time, for the extension side and the trunk side. It is the best voice-quality data an MSP can get, because it was measured on the actual call. The catch is the word monitored. Monitoring is a per-extension switch with an expiry, and on most PBXs nobody has ever flipped it, so the report simply does not exist.
Flipping the switch from Sikurd
Each row on the Users tab has a Monitor button: 1, 7 or 30 days, until turned off, or off. For a department or a whole PBX, select the users and choose Call quality monitoring from the Actions bar; Settings has the same control across every instance in your tenant. Until turned off is a long grant that Sikurd re-asserts weekly so it never lapses on its own. The Users tab shows who is monitored and until when.
Reading it back
Every fifteen minutes Sikurd asks each PBX for new calls that carry a report and stores each leg: who the party was (an extension, or a trunk by name), codec, both MOS directions, jitter, loss, round-trip time, and a good, fair or poor rating over those numbers. The call path report gets a dot per leg with the numbers on hover. The instance Health tab gets a Call quality card: daily good, fair, poor over 7 or 30 days, per-trunk and per-extension tables, and the worst offenders. The fleet board counts instances with a degraded trunk this week. Monitored users show a 7-day summary in the Users tab. Owners can opt into a Monday email.
Honest about the gaps
A call on an unmonitored extension shows not available. A trunk whose carrier sends no RTCP shows one direction and leaves the other blank. There are no alerts in this first version; a trunk-level rule (a sustained share of poor calls across many legs) is designed and will arrive as an opt-in, never per call. If you used the retired probe-based score, this is the replacement, and it only ever shows what the PBX recorded.
From the PBX's own numbers for that leg: MOS at or above 4.0 is good and at or above 3.6 is fair; packet loss under 1 percent is good and under 3 percent is fair; jitter under 30 ms is good and under 60 ms is fair. The worst available signal wins. A leg with no usable numbers shows as no data, never as a made-up score.
Why does the trunk side sometimes show fewer numbers than the extension side?
3CX measures the trunk side from the carrier's RTCP. Many carriers do not send it, so the trunk leg has only the PBX-to-carrier direction. Sikurd shows what was reported and leaves the rest blank rather than filling it in.
Does monitoring slow the PBX down?
No measurable CPU cost: 3CX already handles the media for those calls and monitoring only makes it keep a summary. The cost is growth in the PBX's own call history, which is why 3CX grants it for a period. For always-on coverage, monitor a representative sample of extensions per site rather than every handset; for an investigation, turn it on for all extensions for a week.
What replaced the old probe-based voice quality score?
This did. Sikurd no longer pings customer PBXs from its own servers to infer a score; that measured the path from our probes, not from your callers, and produced most of the noisy alerts. Call quality in Sikurd now means what 3CX recorded on real calls, and nothing is shown where 3CX recorded nothing.
See what the PBX saw on every call.
Open the live demo, open an instance's Health tab and the call path report, and hover a leg for the PBX's MOS, jitter and loss. No signup required.