If you're using the Time Tracking app, and have Insights (Plus and Enterprise), you can track the time your support team spent on every Zendesk ticket.
With the app, support managers gain visibility into the actual time spent across all your customer service interactions. While the app tracks time automatically, you’ll need to build a few custom metrics and reports in Insights to analyze your team’s time logs. We’ve created a four-part series to walk you through best practices on how to best report on time spent:
-
The time-tracking metrics you need to be measuring (this article)
-
Advanced time-tracking report: A look inside your agents’ day-to-day productivity
-
Advanced time-tracking report: The most costly support issues for your organization
This first article in the series walks you through setting up three essential metrics in your Insights account. These metrics are the building blocks that you will use to create reports in our other recipes and an be used in any custom report you want to make later.
Note: If you recently installed the Time Tracking app, the custom fields required to build these metrics might not yet appear in Insights. The fields become available after your ticket data sync with Insights. This sync occurs once an hour for Enterprise and once a day for Professional.
For general information on setting up the Time Tracking app, see Setting up Time Tracking.
Metric 1: Total time spent
This metric will measure the total time spent on each of your tickets through the Time Tracking app. This metric is used as part of the other two metrics in this recipe, so be sure to follow the instructions carefully.
Skill Level: Basic
Time Required: 10 minutes
Instructions
- Click Reporting (
) in the sidebar, then click the Insights tab. Click the GoodData link in the top right corner of the panel.
- In Insights, in the top menu, click Manage > Metrics > Create Metric > Custom metric.
- In the Name your metric field, enter Total time spent (min).
- Click into the metric editor and enter SELECT SUM(IFNULL(
- Add an element by going to the menu on the right side of the screen and clicking Facts , then select [Numeric Field] New value and click Add Selected to add the fact to your metric.
- Back in the Metric editor, add ,0) - IFNULL(
- Add another element to your metric by clicking Facts , then then select [Numeric Field] Old value and click Add Selected to add the fact to your metric. This fact should be right next to the last one you added.
- Back in the metric editor, enter ,0)) / 60 WHERE
- Add another element to your metric by clicking Attributes > Numeric Field. Once Numeric Field is selected, add it to your metric by clicking Add Selected.
- Back in the metric editor, enter an equals sign (=).
- Click Attribute Values. You will see a list of attributes again. After you select the attribute you're using for your metric, you can then select the attribute value as your final element.
- Select the Numeric field attribute, then the Total time spent (sec) attribute value. Your attribute value will appear in orange.
- Add the element by clicking Add Selected.
- Your final Metric should appear as follows: SELECT SUM(IFNULL([Numeric Field] New value,0) - IFNULL([Numeric Field] Old value,0)) / 60 WHERE Numeric Field = Total time spent (sec)
- Click Add at the bottom right.
- On the next screen, under Metric Format , click on #,##0.00 and change it to #,##0.0 min
Metric 2: Avg time spent per ticket (min)
This metric will measure the average time spent on each individual ticket. This will use the metric we previously created in this recipe, so be sure not to skip around. We’ll use this metric later in some of our reports to get a birds eye view on how long tickets are taking your team to complete.
Skill Level: Basic
Time Required: 5 minutes
Instructions
-
Click the Reporting (
) in the sidebar, then click the Insights tab. Click the GoodData link in the top right corner of the panel.
-
In Insights, in the top menu, click Manage > Create Metric > Custom metric .
-
In the Name your metric field, enter Avg time spent per ticket (min).
-
Click into the metric editor and enter SELECT AVG(SELECT.
-
Add an element by going to the menu on the right side of the screen and clicking Metrics > Total time spent (min) and click Add Selected to add the metric to your metric. Note that this is the metric we created earlier in the recipe.
-
Click in to the metric editor again and enter BY.
-
Add another element by going to the menu on the right side of the screen and clicking Attributes, then Tickets, then select Ticket Id and click + Add Selected to add the Attribute to your metric
-
Click in to the metric editor again and enter ).
-
Your final metric should read SELECT AVG(SELECT Total time spent (min) BY Ticket Id).
-
Click Add at the bottom right.
-
On the next screen, under Metric Format , click on #,##0.00 and change it to #,##0.0 min
Metric 3: Avg time spent per update (min)
This metric will measure the average time spent on each update of a ticket. This will use the first metric we created in this recipe, so be sure not to skip around. We’ll use this metric later in some of our reports to get an up close look at your agent activity to help you tighten up efficiency.
Skill Level: Basic
Time Required: 5 minutes
Instructions
-
Click the Reporting (
) in the sidebar, then click the Insights tab. Click the GoodData link in the top right corner of the panel.
-
In Insights, in the top menu, click Manage > Create Metric > Custom metric .
-
In the Name your metric field, enter Avg time spent per update (min).
-
Click into the metric editor and enter SELECT AVG(SELECT.
-
Add an element by going to the menu on the right side of the screen and clicking Metrics > Total time spent (min) and click Add Selected to add the metric to your metric. Note that this is the metric we created in the first section of the recipe.
-
Click in to the metric editor again and enter BY.
-
Add another element by going to the menu on the right side of the screen and clicking Attributes, then Ticket Updates, then select Ticket Updates and click + Add Selected to add the Attribute to your metric
-
Click in to the metric editor again and enter ).
-
Your final metric should read SELECT AVG(SELECT Total time spent (min) BY Ticket Updates).
-
Click Add at the bottom right.
- On the next screen, under Metric Format , click on #,##0.00 and change it to #,##0.0 min
167 Comments
Hi Team need help on Zendesk Insights ( How to created "Average response time( min) of an Agent")
Can help how to get data on metric.
Hi Ninja Raj,
Zendesk only records the First Reply Time and not ongoing reply times unfortunately. That being said, you could use an SLA policy with a next reply time target, then report on the amount of time each instance of that target was active using the SLA Metric Target [Median] or SLA Metric Value metric.
Hopefully other members of our community can join in and offer more guidance on how to create this sort of report :)
Cheers!
Hi,
It has been 3 days since I setup the time tracking app. I have data:
However, I still do not see anything in insights. I created the Total time spent (min) metric (note: I used the "Fact" because there was no Total time spent(sec) attribute.
Yet, when I try to create a simple report, I get no matching data:
Hi BJ,
I'm going to create a ticket on your behalf so our Customer Advocacy team can dig into this further. You'll receive a follow-up email shortly stating your ticket has been created. Feel free to reply back to that email with any additional information you think may be helpful :)
Thanks!
Heya, we're looking to build a report that shows how much time each Agent from one of our Groups spent in Zendesk each month, but the only way I can get close-to-accurate results is to group by Assignee - is there a way to group by the person who updated it?
I tried grouping by Updater but we can't easily filter that to agents in our Support group (we'd have to modify this report every single time we employed someone new or someone left).
Hi Patrick,
If you do use the Updater attribute I believe you should be able to apply the User Role or Updater Role attribute to your filter so you can easily show to only agents on your account. More information on available attributes here: Insights Object Reference
Let me know if that doesn't get you the results you're looking for.
Cheers!
Hey Brett,
We want to only include agents from one of our many Groups so we can see how much time our support team spent in Zendesk, and the User Role and Updater Role link to the agent/end-user/admin categories, not the Group categories.
Is there a way to exclude agents from particular Groups?
Hi Patrick,
You'll most likely need to create a Variable within GoodData to capture this information. You can find this option by navigating to the GoodData>Manage>Variables>Create Variable. You'll want to create a Filtered Variable which you can find out more about in GoodData's article: Define Filtered Variables.
Hope this helps!
Hey Brett,
I've created a variable for Group and set it to 'Support' for all, and made a new metric called Total time spent [MAQL] that has the expression SELECT Total time spent on Ticket (Support Hours) WHERE Group .
I then put this new metric as the What and put the Updater and Month/Year (Event) as the How, then added filters for the variable, but now I see a list of everyone including end users.
I then added a filter Updater Roles is Agent, Admin but they're still appearing, and I'm still seeing agents who aren't in the Support Group.
Could you please tell me what I'm doing wrong? All I want is to see how much time the Support Group is spending in Zendesk every month, regardless of who the ticket is assigned to or what group it's in.
Hi Patrick! In the Insights data model, the Group is a ticket property, not a user property. There isn't a way to dynamically filter agents by their group memberships.
Instead, you can create filtered variables based on the Updater attribute. For the variable's Default Value, choose the individual support agents that belong to the group. For example, you could create a filtered variable called "Community Team," pick the Updater attribute, and choose Amy, Patrick, and Brett for your default value.
Once you have the "Community Team" variable, you can put it in any report or metric to quickly select those three agents. For this time tracking example, your metric could look like this: SELECT Total time spent (min) WHERE Community Team. In this context, the Community Team variable would behave just like Updater IN (Amy, Patrick, Brett).
Creating these variables is a tedious process. However, variables make it easy to put the same group of values on any report without manually selecting them over and over.
Variables also give you a central place to manage the values. In this example, if Brandon joins the Community Team later on, you can just add him to variable. That will automatically include Brandon in every report that uses the variable with no further effort needed.
I hope this helps! Happy reporting!
Hey Amy, thanks for that, I think that makes sense. So I leave the Default as blank, then change all our people in the support group to Support?
I'm still having trouble filtering out everyone in my report that is an End-User when I select Updater as the How, even if I add a filter for Updater Role is Agent, Admin and a variable filter for Support Group
Hi Patrick! If you're using variables as report filter shortcuts like this, you should select the values you want for the default value, then leave individual users on "use default value" -
The User Specific Values section allows you to control what individual users see in reports. It's great for targeted user permissions, but that's not what we're doing in this example.
In your case, it sounds like you have a lot of moving parts in your workflow and report. It's possible a couple of those parts aren't moving together, which is why you're getting weird results. I'm going to set up a ticket so we can look at your examples in more detail. Watch for an email!
Happy reporting!
Want to share my experience. I was able to make by updater report, which shows how much did updater spend time during last update (works even when agent wasn't the last who updated ticket).
SELECT MAX([Numeric Field] New value/60) WHERE Numeric Field=Time spent last update (sec) AND Date (Event)= MAX(Date (Event))
You can just Paste this in Metric Editor:
SELECT MAX([/gdc/md/i79vnfc3780jtagfbyzhux75lo29fqj0/obj/15098]/60) WHERE
[/gdc/md/i79vnfc3780jtagfbyzhux75lo29fqj0/obj/21505]=[/gdc/md/i79vnfc3780jtagfbyzhux75lo29fqj0/obj/21505/elements?id=1573553] AND [/gdc/md/i79vnfc3780jtagfbyzhux75lo29fqj0/obj/14868] = MAX([/gdc/md/i79vnfc3780jtagfbyzhux75lo29fqj0/obj/14868])
How and where do you actually see these metrics as a report? Do I have to build a report for these to show up on the Insight tab?
Hello Adam, yes you would need to use the metric in a report to use this, and best to add the report to a tab.
Any chance these instructions can be updated to work with Explore?
Hi Mark,
There's an Explore edition of this article on their help center.
Please sign in to leave a comment.