Team metrics
How quickly every caller and texter is answered.
SiteCall measures responsiveness per workspace-local day. GET /api/v1/metrics (scope metrics:read) reads any range of up to 366 days, per workspace, agent, queue or number, and three lists name the people still waiting.
Who sees what
- Your application key reads the whole workspace.
- A member's token reads as that member: owners, admins and supervisors see everyone; an agent sees only their own agent row and their own missed offers (anything else is a 403
forbidden). - An application user's token is refused: read for your users with your key.
The summary
| Query | Meaning |
|---|---|
dimension | workspace, agent, queue, number (default workspace). |
id | Only this dimension id. |
to | The last local day, YYYY-MM-DD (default today in the workspace's time zone). |
from | The first local day; or |
days | 1–366 days ending on the to day (default 7). Send from or days, not both. |
limit, cursor | Pages in dimension-id order; a cursor belongs to its date range. |
const week = await sitecall.metrics.summary({ dimension: "agent", days: 7 });
for (const row of week.data) {
console.log(row.subject?.name, row.metrics.answer_rate, row.metrics.speed_to_answer_median_secs);
}Each row names its subject (the workspace, a member or an application user with your externalUserId, a queue or a number) and carries every metric below under metrics. A value is null when there was nothing to measure; rates are 0–1 and durations seconds. refreshedAt is the stalest day's refresh.
Who is still waiting
| List | Order | Filters |
|---|---|---|
GET /api/v1/metrics/missed-offers | Newest first | from, to, days, memberId |
GET /api/v1/metrics/unreturned-calls | Longest waiting first | from, to, days, phoneNumberId |
GET /api/v1/metrics/awaiting-replies | Longest waiting first | phoneNumberId |
Each list holds its first 500 entries and pages through them with the usual cursor. A phoneNumberId filter applies within those 500, so a busy workspace may see fewer rows for one number than it has. Waiting times count business hours only.
Metrics
| Key | Metric | Unit | On rows of |
|---|---|---|---|
offers | Offers. Calls offered to a person (a queue offer or a ring) that resolved: accepted, declined, missed or withdrawn. | count | workspace, agent, queue, number |
offers_accepted | Accepted offers. Offers the person answered. | count | workspace, agent, queue, number |
offers_declined | Declined offers. Offers the person declined on their device. | count | workspace, agent, queue, number |
offers_missed | Missed offers. Offers that rang out unanswered. | count | workspace, agent, queue, number |
offers_withdrawn | Withdrawn offers. Offers that ended because someone else answered or the caller hung up; never counted as a miss. | count | workspace, agent, queue, number |
answer_rate | Answer rate. Answered offers ÷ offers made while the person was available (withdrawn offers left out). | ratio | workspace, agent, queue, number |
speed_to_answer_median_secs | Speed to answer (median). Median seconds from an offer reaching a person until that person answers. | seconds | workspace, agent, queue, number |
speed_to_answer_p90_secs | Speed to answer (p90). Nine in ten answered offers were answered within this many seconds. | seconds | workspace, agent, queue, number |
missed_calls | Missed calls. Inbound calls from a dialable number that no person or AI answered, or that went to voicemail. | count | workspace, number |
missed_voicemails | Voicemails among missed calls. Missed calls where the caller left a voicemail. | count | workspace, number |
missed_returned | Returned. Missed calls followed by an outbound call or text to that number from anyone in the workspace. | count | workspace, number |
missed_reconnected | Caller got through. Missed calls whose caller called again and reached a person before anyone returned the call. | count | workspace, number |
missed_unreturned | Unreturned. Missed calls nobody has returned and whose caller has not reached anyone since. | count | workspace, number |
returned_15m_rate | Returned within 15 min. Share of missed calls returned within 15 minutes of business time. | ratio | workspace, number |
returned_1h_rate | Returned within 1 hour. Share of missed calls returned within 1 hour of business time. | ratio | workspace, number |
returned_same_day_rate | Returned the same business day. Share of missed calls returned before the close of the business day they came in (the next business day after hours). | ratio | workspace, number |
return_median_secs | Return time (median). Median business-hours time from a missed call or voicemail to the first call or text back. | seconds | workspace, number |
return_p90_secs | Return time (p90). Nine in ten returned calls were returned within this much business time. | seconds | workspace, number |
text_waits | Texts waiting for a reply. Inbound texts that started a wait for a reply; on an agent's row, the waits that agent answered first. | count | workspace, agent, number |
text_replied | Texts replied. Waits a person replied to; an agent is credited with the replies they sent first. | count | workspace, agent, number |
text_response_median_secs | Text first response (median). Median business-hours time from an inbound text to the first human reply in that thread. | seconds | workspace, agent, number |
text_response_p90_secs | Text first response (p90). Nine in ten replied texts got their first human reply within this much business time. | seconds | workspace, agent, number |
voicemails | Voicemails. Voicemails left. | count | workspace, number |
voicemails_heard | Voicemails heard. Voicemails someone has listened to. | count | workspace, number |
voicemail_pickup_median_secs | Voicemail pickup (median). Median business-hours time from a voicemail arriving to its first listen. | seconds | workspace, number |
voicemail_pickup_p90_secs | Voicemail pickup (p90). Nine in ten heard voicemails were first heard within this much business time. | seconds | workspace, number |
queue_offered | Queue calls. Calls that entered a queue and were answered, abandoned or overflowed, or are still waiting past the target; callbacks left out. | count | workspace, queue, number |
queue_answered | Queue calls answered. Queue calls a person answered. | count | workspace, queue, number |
queue_answered_in_target | Answered in target. Queue calls answered within the queue's target (20 seconds unless the queue sets one). | count | workspace, queue, number |
queue_abandoned | Abandoned. Queue calls whose caller hung up while waiting. | count | workspace, queue, number |
queue_overflowed | Overflowed. Queue calls that waited past the queue's maximum and moved on (voicemail or the next step). | count | workspace, queue, number |
queue_callbacks | Callbacks requested. Callers who left the line asking to be called back. | count | workspace, queue, number |
service_level | Service level. Queue calls answered in target ÷ queue calls. | ratio | workspace, queue, number |
abandon_rate | Abandon rate. Abandoned queue calls ÷ queue calls. | ratio | workspace, queue, number |
queue_average_wait_secs | Average wait. Average seconds a caller waited in the queue before being answered, hanging up or overflowing. | seconds | workspace, queue, number |
queue_longest_wait_secs | Longest wait. The longest any caller waited in the queue. | seconds | workspace, queue, number |
queue_target_secs | Answer target. The queue's service-level threshold: calls answered within it count as in target. | seconds | queue |
queue_goal_pct | Service level goal. The percent of queue calls the queue aims to answer in target (80 unless it sets one). | percent | queue |
available_secs | Time available. Time signed in as Available and free to take a call. | seconds | workspace, agent |
offered_secs | Time ringing. Time a queue offer was ringing the person. | seconds | workspace, agent |
on_call_secs | Time on calls. Time on a call, from the agent state log. | seconds | workspace, agent |
wrap_up_state_secs | Time in wrap-up. Time in wrap-up after calls, from the agent state log. | seconds | workspace, agent |
away_secs | Time away. Time set to Away (by the person, or after a missed offer). | seconds | workspace, agent |
offline_secs | Time offline. Time signed out or offline. | seconds | workspace, agent |
occupancy | Occupancy. Time on calls ÷ time available (available, ringing, on a call or in wrap-up). | ratio | workspace, agent |
calls_handled | Calls handled. Inbound calls a person answered and finished (each person who answered a transferred call counts it). | count | workspace, agent, queue, number |
average_handle_secs | Average handle time. Talk + hold + wrap-up per answered call. | seconds | workspace, agent, queue, number |
talk_secs | Talk time. Time connected on answered calls, less time on hold. | seconds | workspace, agent, queue, number |
hold_secs | Hold time. Total time answered calls spent on hold, from device-reported and server hold and resume. | seconds | workspace, agent, queue, number |
hold_per_call_secs | Hold per call. Hold time ÷ answered calls. | seconds | workspace, agent, queue, number |
held_calls | Calls put on hold. Answered calls with any hold. | count | workspace, agent, queue, number |
wrap_up_secs | Wrap-up time. Wrap-up time after answered calls. | seconds | workspace, agent, queue, number |
calls_transferred | Transferred. Answered calls the person handed on: a blind or completed warm transfer; refused requests do not count. | count | workspace, agent, queue, number |
transfer_rate | Transfer rate. Answered calls transferred out ÷ answered calls. | ratio | workspace, agent, queue, number |
outbound_calls | Calls placed. Outbound calls placed. | count | workspace, agent, number |
outbound_connected | Calls connected. Outbound calls the other side answered. | count | workspace, agent, number |
connect_rate | Connect rate. Outbound calls connected ÷ outbound calls placed. | ratio | workspace, agent, number |
outbound_texts | Texts sent. Texts a person sent. | count | workspace, agent, number |
inbound_calls | Inbound calls. Inbound calls that came in and ended. | count | workspace, queue, number |
inbound_answered | Inbound answered. Inbound calls a person answered. | count | workspace, agent, queue, number |
repeat_calls_48h | Repeat callers. Answered calls whose caller called again within 48 hours (a sign the issue was not resolved). | count | workspace, agent, queue, number |
repeat_caller_rate | Repeat-caller rate. Repeat callers ÷ inbound calls answered. | ratio | workspace, agent, queue, number |
sentiment_calls | Calls with sentiment. Answered calls the existing call analysis rated (no extra AI is run for metrics). | count | workspace, agent, queue, number |
sentiment_average | Average customer sentiment. Average caller sentiment on rated calls, from -1 (negative) through 0 (neutral) to 1 (positive). | score | workspace, agent, queue, number |
negative_calls | Calls flagged negative. Answered calls whose caller sentiment was negative. | count | workspace, agent, queue, number |
ai_calls | AI-handled calls. Inbound calls the AI answered. | count | workspace, queue, number |
ai_handoffs | AI handoffs. AI-answered calls a person took over afterwards. | count | workspace, queue, number |
ai_share | AI-handled share. AI-handled calls ÷ inbound calls. | ratio | workspace, queue, number |
More keys may appear within /v1: read the ones you know and ignore the rest.