KPI Definitons
Important
All KPIs are updated on new events or in every minute
Calls
JSON definition
- The realtime feed provided by Buzzeasy returns data in JSON syntax. This consumed by third party applications such as a wallboard display
{
"calls": {
"abandoned30mins": 1,
"abandoned24h": 1,
"abandonedToday": 1,
"waiting": 1,
"connected": 5,
"handled30mins": 1,
"handled24h": 1,
"handledToday": 1,
"serviceLevel30mins": 0,
"serviceLevel24h": 0,
"serviceLevelToday": 1,
"dialSucceededToday": 0,
"dialSucceeded24h": 0,
"dialSucceeded30mins": 0,
"dialFailedToday": 0,
"dialFailed24h": 0,
"dialFailed30mins": 0,
"dialling": 0,
"callbacksWaiting": 0,
"callbackSuccessRateToday": 50,
"completedCallbacksToday": 4,
"successfulCallbacksToday": 2,
"failedCallbacksToday": 2,
"callbackSuccessRate24h": 50,
"completedCallbacks24h": 4,
"successfulCallbacks24h": 2,
"failedCallbacks24h": 2,
"callbackSuccessRate30mins": 0,
"completedCallbacks30mins": 0,
"successfulCallbacks30mins": 0,
"failedCallbacks30mins": 0
}
Windowing (30 mins, 24h, today) is based on the call drop time
abandoned{30mins,24h,today} (inbound)
Number of calls that were dropped in the following scenarios:
- In the queue before finding an agent
- Ringing at the agent side, but customer not waiting until the agent picks up
- Dropped in transfer waiting for the another agent
waiting (inbound)
Number of calls waiting in:
- Queue
- Ringing at the agent, but not picked up yet
- Calls currently transferring and waiting for another agents are NOT counted
connected (inbound & outbound)
Number of calls that are in talking state at:
- Agent
- Call currently transferring and waiting for another agents are NOT counted, once a call is connected again to the agent, it is counted.
- Call connected to the Auto Attendant/Bot or IVR are NOT counted
handled{30mins,24h,today} (inbound)
Number of calls that finished the conversation after talking to an agent.
- Calls being transferred to another agent are counted. If the target agent handles the call successfully, it is then counted as a another call.
serviceLevel{30mins,24h,today} (inbound)
[Service Level] = [Handled in defined service level] / [Total number of inbound calls]
Total number of inbound calls = abandoned+handled
[Handled in defined service level] = [handled] where [queue time]+[agent ring time] < [Service level]
dialSucceeded{30mins,24h,today} (outbound)
Number of calls that finished the conversation after talking to a customer or still talking to the customer.
dialFailed{30mins,24h,today} (outbound)
Number of calls when the customer was not reached.
dialling (outbound)
The number of calls:
- Ringing at the customer, but not picked up yet
callbacksWaiting (outbound)
The number of callbacks waiting to be answered.
- Callback assigned to an agent are not counted as waiting
callbackSuccessRate{30mins,24h,today} (outbound)
[Callback Success Rate] = [Successful Callbacks] / [Completed Callbacks] * 100
completedCallbacks{30mins,24h,today} (outbound)
Number of callbacks that were successful or failed.
successfulCallbacks{30mins,24h,today} (outbound)
Number of callbacks that finished the conversation after talking to a customer or still talking to the customer.
failedCallbacks{30mins,24h,today} (outbound)
Number of failed callbacks when the customer was not reached.
callStatsByChannel
JSON
"callStatsByChannel": [
{
"channelId": 172,
"channelName": "Test Voice Channel 1",
"abandoned30mins": 1,
"abandoned24h": 1,
"abandonedToday": 1,
"waiting": 1,
"connected": 5,
"handled30mins": 1,
"handled24h": 1,
"handledToday": 1,
"serviceLevel30mins": 0,
"serviceLevel24h": 0,
"serviceLevelToday": 1,
"dialSucceededToday": 0,
"dialSucceeded24h": 0,
"dialSucceeded30mins": 0,
"dialFailedToday": 0,
"dialFailed24h": 0,
"dialFailed30mins": 0,
"dialling": 0,
"callbacksWaiting": 0,
"callbackSuccessRateToday": 50,
"completedCallbacksToday": 4,
"successfulCallbacksToday": 2,
"failedCallbacksToday": 2,
"callbackSuccessRate24h": 50,
"completedCallbacks24h": 4,
"successfulCallbacks24h": 2,
"failedCallbacks24h": 2,
"callbackSuccessRate30mins": 0,
"completedCallbacks30mins": 0,
"successfulCallbacks30mins": 0,
"failedCallbacks30mins": 0
}
Same as above for a given channel
queueStat{now,30mins,24h,today}
JSON:
"queueStat30mins": {
"longestQueueTime": "00:01:32",
"avgQueueTime": "00:00:51",
"longestTotalCallTime": "00:02:00",
"avgTotalCallTime": "00:00:43",
"longestCustomerRingTime": "00:00:00",
"avgCustomerRingTime": "00:00:00"
},
longestQueueTime
The maximum waiting time of calls (inbound) in the following state:
- In queue
- Ringing at agent
avgQueueTime
Average of waiting time of calls (inbound) in the following state:
- In queue
- Ringing at agent
longestTotalCallTime
Maximum total length of all in/outbound calls in the channel. Total call time includes the ringing time, queue time and connected time.
[!IMPORTANT]
queueStatNow longestTotalCallTime = longest call currently in the queue or connected
avgTotalCallTime
The average of all total call times. Total call time includes the ringing time, queue time and connected time.
longestCustomerRingTime
Outbound only
The longest time it takes to call the customers before they answer.
avgCustomerRingTime
The average time it takes the customers to answer for outbound calls
Windowing:
Type | Criteria |
---|---|
now | Calls currently in the queue |
30mins | Calls currently in queue or left the queue (abandoned, handled) within 30 mins |
24h | Calls currently in queue or left the queue (abandoned, handled) within 24h |
today | Calls currently in queue or left the queue (abandoned, handled) from midnight |
queueStatsByChannel{now,30mins,24h,today}
JSON:
"queueStatsByChannel30mins": [
{
"channelId": 172,
"channelName": "Test Voice Channel 1",
"longestQueueTime": "00:01:32",
"avgQueueTime": "00:00:51",
"longestTotalCallTime": "00:02:00",
"avgTotalCallTime": "00:00:43",
"longestCustomerRingTime": "",
"avgCustomerRingTime": ""
}
],
Same as above, but bound to Channel.
agents
JSON:
"agents": [
{
"resourceId": "5f15a1bab27ff1000104a490",
"resourceName": "Supervisor Test01",
"state": "Break",
"callsHandled30mins": 1,
"callsHandled24h": 1,
"callsHandledToday": 10,
"timeInState": "01:27:46",
"breakName": "Lunch break",
"callsProgress": 0,
"chatsProgress": 0,
"emailsProgress": 0,
"fbMessengerProgress": 0,
"whatsAppProgress": 0,
"smsProgress": 0
}
],
state
Current state of the agent
callsHandled{30mins,24h,today) (inbound)
Number of calls
- where windowing overlaps the time between agent connect and call ended/transfer time
Call ended:
- Dropped by agent
- Dropped by customer
- Transferred away
timeInState
the time from when they just joined that state to now.
breakName
Selected break name in case state is any break type
{calls,chats,emails,fbMessenger,wahatsApp,sms}Progress
number of conversations of the given media type present at the agent currently
dispCodeStats{30mins,24h}
JSON:
"dispCodeStats30mins": [
{
"dispositionCode": "None",
"count": 1
},
...
{
"dispositionCode": "XXXX",
"count": 1
},
...
{
"dispositionCode": "RONA",
"count": 1
}
],
Disposition Code count of each closure code assigned (for that segment) within the window
timestamp
latest update on the entire data structure