Site icon DataTadpole.com

Time to 1st response and csat. A box and whisker graph case.

Time to First response is a very popular metric when it comes to support and there is a powerful reason dor that. It has a direct impact on customer satisfaction that can be measured.

Main Outcomes

What’s time to first response and why is this important?

First we need to define TTFR. In my case the metric shows how long it takes us to get back to a customer’s message (and this could be applied to chat or email questions/requests). Time to First Response measures the time that a customer waits until they understand we are “with them”.

Fancy a graphic definition extracted from a support chat?

Jamie Edwards, COO and Co-founder of Kayako says that “First reply time is more important than overall reply times because it’s an acknowledgment to the customer that their issue is being looked into.” and Tim Woo, Marketing Director for Framed Data is also pretty clear “Speed is king for the first reply. Contrary to what we would assume, most customers prefer a quick but “ineffective” response over a calculated, delayed answer“.

Both of the above opinions can be discussed. But we can accept that the sooner we acknowledge a user question, the better impression we cause, the better state of mind we create to start and the more we will be able to help and create satisfaction.

The problem. We need to calculate how fast we are sending the first message to our users in support chat.

Let’s imagine we have a table containing all the messages on our chats, with a FK, the chat_session, we can get a list of chat sessions each one with 3 values: when it starts, when it finishes and when the customer gets the first response from our operator.

   select
        chat_messages.chat_session,
        min(timestamp)  as session_start_dt,
        max(timestamp)  as session_end_dt,
        min(
            case
                when ( msg_from_operator = true ) THEN timestamp
                else null
            end
        ) as session_first_response_dt
    
    from chat_messages
    group by chat_messages.chat_session
    having min(from_unixtime(cast(timestamp / 1000 as bigint))) >= '2020-03-01 00:00:00'

Where the ‘having min’ clause assures we are not interrogating the DB for a too long period.

Solution. Pasting results to Excel to get some indicators.

I would start by asking chat operators about their perceived time to first response. An anonymous poll with 2 questions would be enough…

This could be extremely useful to compare perceived results with real values. I asked this question to about 20 support agents and I got this result:

By pasting results from the first query to Excel, we can easily get average time to 1st response (I bet it is higher than you expected), the median, percentiles… With the information exported to Excel…

Again, a picture is worth a thousand words.

Result. Correlation between customer satisfaction (CSAT score) and time to first response could be visible with the right graph ( Boxplot ).

There is a correlation between customer satisfaction expressed in the bot score and the time to first response.

Note bot score is called this way because it is represented by bot, red, blue or green depending on the customer answer to a feedback poll.

In this case, the problem is to find a graph showing the correlation. It is not a trivial decision. I’ll save you the details: the Boxplot is the right choice as we can compare time to first response quartiles for each bot answer and display the 3 boxes altogether:

This graph would basically mean that you get more or less the same distribution of green/blue/red bots when you answer fast, but from a given elapsed time you have way more possibilities to get a red bot. 

This has a clear effect on the Average Bot Score depending on the Time To First Response, as the following graph also highlights.

Final Notes

We don’t evaluate our support responsiveness is by the first response. First response time is just a small part of the overall experience.

Exit mobile version