# Telephony Metrics

> Numbers used to monitor voice deployments.

Industry-standard metric definitions, formulas, healthy ranges, and
what each one indicates when it deviates. Every metric below is also
emitted by the gateway — see [Telemetry](/platform/telemetry).

## Capacity & traffic

| Metric | What it means | Healthy range | Why it matters |
| ------ | ------------- | ------------- | -------------- |
| **CPS** (Calls Per Second) | Origination rate. | Whatever the trunk's contracted CPS is, headroom ~30%. | Carriers throttle past contracted CPS; sustained overshoot = `503` rejections. |
| **Concurrent channels** | In-flight calls at any instant. | < 80% of trunk channel cap. | Hitting 100% drops new call attempts. Steady state = `CPS × ACD`. |
| **Erlangs** | Channel-hours of traffic. 1 Erlang = one channel busy continuously for one hour. | Capacity-planning unit. | Carriers and PBX vendors size hardware in Erlangs, not CPS. |
| **Trunk utilisation** | Concurrent / channel cap. | 60–80%. | < 40% = over-provisioned (cost). > 90% = blocking risk. |

## Connection & answer rates

| Metric | Formula | Healthy | Why it matters |
| ------ | ------- | ------- | -------------- |
| **ASR** (Answer-Seizure Ratio) | answered / attempted | 30%–70% (campaigns), > 90% (transactional) | Low ASR = dialing bad numbers, blocked caller-ID, or trunk health issues. |
| **ACD** (Average Call Duration) | `Σ duration / answered` | depends on use case | Sudden ACD drop = audio failure; sudden spike = stuck calls not hanging up. |
| **ABR / NER** (Answer/Network Effectiveness Ratio) | (answered + busy + no-answer) / attempted | > 95% | Excludes "user-busy" from your fault attribution; isolates network failures. |
| **CCR** (Call Completion Ratio) | answered / not-blocked-attempts | > 50% on outbound campaigns | Carrier-facing version of ASR. |
| **PDD** (Post-Dial Delay) | dial → ringback start | < 3 s | High PDD = caller hangs up before ringback. Often driven by carrier routing. |

## Audio quality

| Metric | What it means | Healthy | Why it matters |
| ------ | ------------- | ------- | -------------- |
| **MOS** (Mean Opinion Score) | Subjective 1.0–5.0 quality estimate. | ≥ 4.0 toll, ≥ 3.6 acceptable | Single-number summary of perceived audio quality. |
| **R-factor** | ITU E-Model 0–100. Converts to MOS. | ≥ 80 = MOS 4+ | Catches problems MOS-only smooths over (delay, codec, jitter). |
| **Jitter (ms)** | StdDev of inter-packet arrival times. | < 30 ms | Above 30 ms triggers de-jitter buffering, raising latency. |
| **Packet loss (%)** | RTP packets dropped. | < 1% | 1–3% audible; > 3% degraded. |
| **One-way latency (ms)** | Mouth → ear. | < 150 ms ideal, < 300 ms acceptable | ITU G.114. Above 400 ms conversation falls apart. |
| **Round-trip time (ms)** | Symmetric round trip. | < 300 ms | Diagnostic; one-way latency is the user-perceived number. |
| **Echo Return Loss (ERL, dB)** | Echo suppression measure. | > 20 dB | < 10 dB and the caller hears themselves. |

## WebRTC-specific metrics

When the leg in question is WebRTC (browser, LiveKit, Daily, Chime,
Twilio Media Streams, Vapi), there's a second tier of numbers everyone
expects:

| Metric | What it means | Healthy | Why it matters |
| ------ | ------------- | ------- | -------------- |
| **ICE gathering time (ms)** | Time to enumerate candidate paths and pick one. | < 1 s | High values mean STUN/TURN issues; user hears a long "connecting" pause. |
| **DTLS handshake time (ms)** | SRTP key negotiation duration. | < 200 ms | Adds to PDD on WebRTC legs. |
| **Selected candidate type** | `host` / `srflx` / `relay`. | Mostly `host` or `srflx`. | High `relay` % = lots of TURN traffic; expensive and adds 30–80 ms one-way. |
| **REMB / TWCC bandwidth estimate** | Live link estimate from the WebRTC bandwidth controller. | matches connection speed | Drops in estimate predict upcoming loss/jitter. |
| **NACK / FIR rate** | Retransmit and full-frame requests. | low and stable | Spikes = receiver detecting loss; sustained spikes = action needed. |
| **Audio level** | Per-direction loudness. | speech-shaped, with silences | Flat or zero levels = mic/route issue. |
| **PLI/PLC events** | Packet-loss-concealment fires. | sparse | Frequent PLC = loss is masking but quality is degraded. |

These come straight out of the WebRTC `getStats()` standard, so any
existing observability tooling that consumes WebRTC stats will
recognise them by name.

## Outbound campaign metrics

| Metric | What it means | Healthy | Why it matters |
| ------ | ------------- | ------- | -------------- |
| **Connect rate** | answered / dialed | 30–60% (cold), > 80% (warm) | Bottom-of-funnel conversion driver. |
| **Pickup rate** | "human answered" / dialed | varies | AMD (answering-machine detection) classifies calls as human vs voicemail. |
| **Abandon rate** | answered → agent unavailable / answered | ≤ 3% (TCPA) | TCPA caps US predictive-dialer abandon at 3% — a legal requirement, not a target. |
| **Drop rate** | dropped mid-call / answered | < 0.5% | High drops = trunk instability or codec mismatch. |
| **DNC hit rate** | suppressed / dialed | ideally 0% | Anything > 0 means your DNC hygiene is broken. |

## Inbound / contact-centre metrics

| Metric | What it means | Healthy | Why it matters |
| ------ | ------------- | ------- | -------------- |
| **AHT** (Average Handle Time) | talk + hold + wrap-up | varies by industry | Operations efficiency. |
| **ASA** (Average Speed of Answer) | queue time before agent picks up | < 30 s most industries | SLAs are usually written against ASA. |
| **Service Level** | "% answered within X seconds". e.g. 80/20 = 80% within 20 s. | varies | The dominant SLA shape in contact-centre RFPs. |
| **Abandonment Rate** | callers who hung up before agent | < 5% | Above 5% = under-staffed or routing issues. |
| **First Call Resolution (FCR)** | resolved / answered | > 70% | Predicts CSAT better than AHT. |
| **Occupancy** | (talk + hold + wrap) / scheduled | 80–85% | > 90% burns out agents. |

## Cost metrics

| Metric | What it means | Why it matters |
| ------ | ------------- | -------------- |
| **CPM** (Cost Per Minute) | Carrier rate per minute. Varies by destination prefix. | Foundation of LCR. |
| **CPC** (Cost Per Call) | All-in cost per attempt: minutes + AI + recording storage. | Standard unit-economics figure for voice workloads. |
| **Margin per minute** | Revenue – (carrier + AI + infra) per billed minute. | Determines whether per-minute pricing is sustainable. |
| **Bill increment** | Carriers bill in 1/1, 6/6, or 30/30-second increments. | First number = setup minimum, second = increment after. 6/6 vs 1/1 changes a 7-second call from 12-sec to 7-sec billing. |

## Reliability

| Metric | What it means | Healthy | Why it matters |
| ------ | ------------- | ------- | -------------- |
| **Uptime / availability** | % of time service answered new calls. | ≥ 99.95% (3-nines plus). | Voice SLAs hover here; below 99.9% triggers credits. |
| **MTTR** (Mean Time To Repair) | Avg outage length. | < 15 min for carrier-grade voice. | More operationally meaningful than MTBF for voice. |
| **Cutover RTO/RPO** | Time-to-recover / data-loss window for failover. | RTO < 1 min, RPO ~0 for voice. | Active-active vs cold-standby decision. |

## Which metrics matter for which workload

| Workload | Primary metrics |
| -------- | --------------- |
| **Outbound predictive dialer** | ASR, abandon rate, CPS sustained. |
| **Contact-centre / ACD** | ASA, service level, MOS. |
| **Carrier interconnect** | CPS, NER, MOS, CPM. |
| **AI voicebot** | One-way latency, transcoding overhead, concurrent channels. |
| **Browser / WebRTC** | DTLS handshake time, ICE gathering time, % `relay` candidates, MOS. |
| **Regulated (health / finance)** | DTMF masking, recording encryption, retention controls. |
| **Cost / unit-economics** | CPC, margin per minute, billing increment. |
