City of Midland — Be the Energy!
City of Midland, Texas | ITSD | Office of Performance & Innovation

Citywide Telephone PerformanceTRENDS BRIEF

ANALYSIS BRIEF LIVE NARRATIVE CASE STUDIES LABELED

Citizen-facing call performance: what’s working, what needs attention

Loading the current picture…

The summary, key figures, and charts on this page are generated from the live data feed at load time (refreshed every 15 minutes). Sections marked “historical case study” are the July 2026 analysis record and are fixed as published. For day-to-day operations use the live dashboard. Two data sources, labeled per section. Export lens: RingCentral Performance Report export of May 28, 2026 (staffed-queue flow; May covers 27 days). API lens: RingCentral account call log, current rolling window — a broader measure that also counts closed-hours routing and callers who hang up within seconds. Methodology notes at the bottom of this page.

Data through: loading…

Showing cached snapshot (live feed unavailable)

Historical case study — staffed-queue flow, January–May 2026 (export lens; findings fixed as published)

Monthly answer rate

Share of citizen sessions that reached a live person · axis starts at 98.5%

All hours Business hours (M–F 8–5)

Time to reach a live person

Seconds from first ring to first answered leg

Median 90th percentile

Unanswered citizen sessions by month

Sessions that never reached a live person, managed queues only

Weekly answer rate

Full Monday–Sunday weeks only (Jan 1–4 and May 25–27 partial weeks excluded) · axis starts at 98.5%

Case study findings — January–May 2026 (fixed as published)

City Utility Billing — unanswered calls

The largest single improvement: 69 unanswered in January → 8 in May (−88%)

Police TRU Line — median time to answer

Faster every single month: 16s in January → 11s in May (−31%)

Call volume context

Citizen sessions per month — volume rose 16% into spring while performance held (May = 27 days)

99.3%
managed call-center queues, May
42.1%
unmanaged direct extensions, May

The same months tell a second story: citizen calls that land on unmanaged direct extensions reach a person less than half the time (39.4% in January, 45.5% in April). The call-center operating model — shared coverage, routing logic, queue ownership — is what produces the 99% line, which is the case for continuing to move published numbers onto managed queues.

The rolling view — account call log via API

99%+
staffed-queue flow (export lens)
91–96%
every queue touch, business hours (API lens)

The API's account call log sees calls the Performance Report never counts: closed-hours routing and callers who hang up within seconds of the greeting. Of the TRU Line's 1,067 "missed" API sessions in January, 82% were after-hours (concentrated overnight) with a median length of 23 seconds, and 87% appear nowhere in the export. Neither lens is wrong: the export answers "did staff answer the calls presented to them," the API answers "what happened to every caller who touched a queue." Both agree on the story — January 2026 was the trough, then recovery.

Answer rate, rolling window (API lens)

Share of citizen queue-touch sessions reaching a live person · latest month partial

All hours Business hours (M–F 8–5)

Citizen queue sessions per month (API lens)

Broader denominator than the export view · latest month partial

Monthly detail — staffed-queue flow (export)

Month Sessions Answered Unanswered Answer rate Business-hours rate Median answer time P90 answer time Avg handle time

Queue mechanics — Analytics engine (trailing window)

Average ring time at the queues

Seconds of ringing per call with a ringing segment, all queues · RingCentral Analytics timers · latest month partial

Calls abandoned while waiting in queue

Callers who hung up in queue before an answer, all queues · latest month partial

Managed queues vs direct extensions, rolling window

Citizen sessions reaching a live person (API lens, all hours)

Managed queues Direct extensions
91–96%
business-hours answer rate (API lens)
about two-thirds
after-hours answer rate (API lens)

Roughly 3,600–5,200 citizen queue touches per month happen outside business hours, and those callers reach a person only about two-thirds of the time versus the business-hours range shown above during staffed hours. That gap — not staffed-hour performance — is the largest remaining citizen-experience opportunity on the queue side, and it is the concrete case for after-hours capture: AI answering (Jacky), voicemail-to-ticket workflows, and published callback expectations.

Monthly detail — API lens (rolling window)

Month Sessions Answer rate (all hours) Business-hours rate Unanswered

Methodology

Session, not leg. RingCentral logs several records (legs) when a call rings, transfers, or forwards. All legs sharing a Session Id are grouped into one caller session, and a session counts as answered if any leg reached a live person (Result of Answered, Connected, IVR/Answered, or Park Off). This matches the methodology of the existing Call Quality Metrics Dashboard.

Citizen-facing scope. Inbound legs are classified as constituent/external unless the caller's number matches a City-owned receiving line or the caller name matches City-origin patterns. Sessions are in scope when they touched a managed queue (non-blank Queue). 90,282 of 147,695 constituent inbound sessions entered managed queues; the remainder rang unmanaged direct extensions and are shown only as contrast.

Time to answer is first ring to the start of the first answered leg. Business hours are Monday–Friday sessions starting 8:00 AM–4:59 PM. May is partial (through May 27), which affects volume counts but not rates or durations. Generated by pipeline/generate_citizen_trend_metrics.py; tabular outputs in docs/citizen-call-center-trends/.

API lens (section 3). Built from the RingCentral account call log (14 months downloaded via API), grouping records by telephony session, matching queue touches against the 67-queue Analytics roster, and applying the same constituent-origin and business-hours rules. "Answered" = any leg accepted or connected, excluding auto-attendant pickups. This lens includes closed-hours routing and sub-5-second abandons that Performance Reports excludes, so its rates sit structurally lower than the export lens; compare within each lens, never across. June 2025 exists only from June 22 (RingCentral's ~13-month retention edge) and is omitted from charts. Generated by pipeline/ringcentral-api/analyze_api_trends.py.

Analytics engine (section 4). Ring time and abandonment come from the RingCentral Business Analytics API's daily queue timers (pipeline/ringcentral-api/analyze_analytics_timeline.py): ring time = total ringing seconds ÷ calls with a ringing segment; abandoned = callers who hung up in queue before an answer. This engine counts queue-presented calls (not caller journeys), is not constituent-filtered, and reaches back only 184 days — January 2026 is partial (from Jan 20) and excluded from these charts. Its per-queue answer rates also sit well below the export's, confirming the export reflects a filtered staffed-flow view even relative to RingCentral's own analytics.

Internal-caller correction (July 2026). Extension-to-extension calls carry no external phone number in the account call log and were initially counted as citizen traffic. They are now classified as internal and excluded from the citizen series (~8,700 records/month). The correction barely moved the queue series (−0.3 to −0.8 points) but materially lowered the direct-extension series (internal colleague calls answer at high rates and had been masking the citizen experience): direct lines answer 57–65% of citizen calls, not 68–76% as previously shown.

Live dashboard  ·  Today’s operations  ·  Analyst workbench