Irish technology company Spearline acquires Callstats from 8x8.  Learn More

What Data Should You Be Sending to callstats

By callstats on June 7, 2021

This is an extension to our previous post: Importance of Collecting Pertinent  data for call monitoring. This discusses more holistically and makes recommendations on which APIs you should be incorporating in your app. This is to make sure that you are making the most out of the data and are using our APIs more effectively! 

To recap, at callstats we believe that the data in app can be collected and consumed in real-time through the various stages -- before the call, during the call, and after the call.

The APIs that you should use!

In this blog post, we will cover some of the above topics. For a good analysis, the first thing to keep in mind, collect as much pertinent data as possible!

Before the call provides an API that can continuously measure the enduser’s network, think of this as a speed test. We call them active tests, they 

The Pre-call Tests API runs a network speed test, is part of the Smart Connectivity Test Suite, which we rolled out in 2016 as a way to test the network just before the call is connected. We soon realised that these tests can be run in the background when they are not making a call. And this provides complementary data to the network metrics during the call. Most importantly, it can tell if the network was congested even before the call was made/received. 

  • Pre-call Tests check the network conditions and report the throughput, packet loss and round trip time (RTT, latency), jitter, as well as the TURN server availability.

The callback APIs for the pre-call test provide notifications on the current status of the network, and if the results from the previous tests compared to the current status are improving or deteriorating.

This is impactful in changing the user perception of a problem with your RTC application and reduces the number of complaints. With this API your solution can also advise your user on what to change to have the best user experience possible.

During the call

Developers can integrate and set up to collect data from each endpoint during a call. callstats collects webrtc-stats data automatically, the most pertinent metrics being collected: round trip time, jitter, throughput, and loss for each media stream. Learn more from this educational YouTube video!  Below is a summary of the API elements that can be used to correlate events at multiple levels: 

  • Device Events and Media Events correlate media and device events with user behaviour; 
  • User Action Events describe the user behaviour, like joining or leaving a call, dropping due to bad connectivity, or rejoining on a different device; 
  • Fabric allows the endpoint to send peerconnection related events, such as one-way audio, circuitbreaker, etc;
  • Stats Events automatically sends the webrtc-stats measurement data; 
  • ICE Events monitors the network establishment and disconnections during a call.

Combining the events in one group helps understanding the quality of experience from an end-user’s perspective. For example, if a user dropped and rejoined (user action event) due to the headphones not working (device/media event) compared to a networking issue (ICE event), can help diagnose the problem more quickly.

After the call

Getting insight into how exactly the call was experienced, you need to collect the User Feedback from each participant on the call. The participant can submit an overall rating for the conference or add comments. This is contextually visualized in a call or can also be received as a webhook notification alerts. Furthermore, you can receive all the summary data from a call at the end of the call, in real-time over a webhook. This allows you to react events in real-time or store them in your data lake for running weekly reports!


Our APIs are documented at, the callstats.js is the most common integration path, and we also support react-native. In addition, we also have a integrations with  several WebRTC CPaaS SDKs. All the APIs listed above also apply to our integrations, this should simplify the getting your app up and running on callstats! 

In Part 4: We will be discussing how this data applies to each persona!


This blog post was contributed by Filipe Leitão, callstats' resident troubleshooting expert. Based in Germany.