Zendesk – Customer Satisfaction

Question

Is my customer satisfied with the quality of Customer Support?

Customer satisfaction is another important set of customer support related metrics that you should keep track of.

The best way of measuring customer satisfaction is through surveys that you send to your customers to give you feedback regarding the quality of the customer support they have received so far.

Zendesk offers a mechanism where whenever a ticket is closed a mail is sent to the customer to give feedback regarding the service, so there’s no excuse to not measure the satisfaction of your customers.

Finally, you can also measure the customer satisfaction on a per agent level to see who interacts better with the customers or who might need some additional training.

Schema

Blendo will sync all of your Zendesk data into your data warehouse properly prepared to be used for your analytics purposes. Some of the tables we prepare are tickets and users that we are going to use bellow.

The tickets table has the following structure

Zendesk tickets table

The users table has the following structure

Zendesk users tableGo here to find out the full schema of Zendesk expected data.

Output

SQL Queries

Customer Satisfaction

SELECT count(CASE  
                 WHEN satisfaction_rating_score ='unoffered' THEN 1
                 ELSE NULL
             END) AS unoffered,
       count(CASE
                 WHEN satisfaction_rating_score ='offered' THEN 1
                 ELSE NULL
             END) AS offered,
       count(CASE
                 WHEN satisfaction_rating_score ='bad' THEN 1
                 ELSE NULL
             END) AS bad,
       count(CASE
                 WHEN satisfaction_rating_score ='good' THEN 1
                 ELSE NULL
             END) AS good
FROM cont_tickets

Customer Satisfaction per agent

SELECT a.name,  
       tmp.unoffered,
       tmp.offered,
       tmp.bad,
       tmp.good
FROM cont_users as a,  
  (SELECT assignee_id,
          count(CASE
                    WHEN satisfaction_rating_score ='unoffered' THEN 1
                    ELSE NULL
                END) AS unoffered,
          count(CASE
                    WHEN satisfaction_rating_score ='offered' THEN 1
                    ELSE NULL
                END) AS offered,
          count(CASE
                    WHEN satisfaction_rating_score ='bad' THEN 1
                    ELSE NULL
                END) AS bad,
          count(CASE
                    WHEN satisfaction_rating_score ='good' THEN 1
                    ELSE NULL
                END) AS good
   FROM cont_tickets
   GROUP BY assignee_id)tmp
WHERE tmp.assignee_id=a.id

in Customer Support