The Zendesk Time Tracking app helps support managers gain visibility into the actual time spent across all your customer service interactions within a ticket. The app tracks the time spent on each ticket update, and stores this with the ticket. With Explore, you can create calculated metrics that contain this information, and use them to produce reports. Use this article to learn how to set up custom time tracking metrics and produce three sample reports.
In this article:
Choosing the approach
As with any other Support ticket data, there are two approaches for analyzing the time tracking app data.
Ticket handling time
The first approach is to look at the handling time per ticket. It can be used to analyze agent performance when the ticket is handled mostly by the same agent and for reporting on time your team spent supporting a specific end-user or organization.
If you choose to go with this approach the best place to create your reports is the Support: Tickets dataset. To do so you can create two simple calculated metrics based on the Total time spent (sec) metric and use them to report on the handling time per ticket alongside the native time metrics.
Metrics that can be created to support this approach are:
- Ticket handling time (min)
- Ticket handling time (hrs)
Update handling time
The second approach is to look at the handling time per update. It is the best way to report on the agent performance and it is suitable for the complex workflows where the same ticket is handled by multiple agents.
For this approach, the calculated metrics and reports should be created in the Support: Updates history dataset based on the data stored in the Changes - Previous value and Changes - New value attributes. You can use the NUMBER() function to transform the text attribute values into numbers.
Metrics that can be created to support this approach are:
- Update handling time (min)
- Update handling time (hrs)
Creating the metrics
If this is the first time you've created a calculated metric, see Creating standard calculated metrics and attributes.
To create the metric
Repeat the following general procedure to create each custom metric. Use the metrics configuration section to find the information you'll need to create each one.
- In Explore, click the reports (
) icon.
- In the Reports library, click New report.
- On the Select a dataset page, click Support and select the appropriate dataset for the metric you're creating (Updates history for update handling metrics, or Tickets for ticket handling metrics), then click Start report. The report builder opens.
- From the calculations menu (
), click Standard calculated metric.
- On the Standard calculated metric page, enter a name for your calculated metric from the list below, for example Update handling time (min).
- In the Formula field, enter or paste the formula you want from the metrics configuration sections. The example immediately below is for the Update handling time (min) metric:
IF ([Changes - Field name] = "Total time spent (sec)")
THEN
IF ([Changes - Previous value]=NULL OR [Changes - Previous value]="")
THEN NUMBER([Changes - New value])/60
ELIF (REGEXP_MATCH([Changes - New value], "[0-9]+") AND REGEXP_MATCH([Changes - Previous value], "[0-9]+"))
THEN(NUMBER([Changes - New value])-NUMBER([Changes - Previous value]))/60
ENDIF
ENDIFNote: The formulas in this article won't work if the user profile is set to a non-English language. If your user profile in Explore isn't in English, follow the instructions in this article to make the formula work: How can I convert Explore formulas from English into another language? - If your user profile language is not in English replace the attribute names in the formula with attributes in your language. For example, in German the formula will look like this:
- When you are finished, click Save.
- In the Metrics panel, click Add.
- From the list of attributes, expand the Calculated metrics folder, find your calculated metric, then click the pen icon next to it.
- From the Options menu of the Standard calculated metrics page, choose Edit aggregators.
- Set the metric's default and visible aggregators. If you are creating the Update handling time (min) metric the aggregator menu looks like this:
- Continue creating the calculated metrics as shown below.
Metrics configuration
Metric name: Ticket handling time (min)
This metric should be created in the Support: Tickets dataset. It returns the time spent by agents per ticket, calculated in minutes.
Copy and paste this formula into the formula field of your standard calculated metric:
VALUE(Total time spent (sec))/60
Supported aggregators when you use this metric in a report: SUM, AVG, MIN, MAX, MED
Metric name: Ticket handling time (hrs)
This metric should be created in the Support: Tickets dataset. It returns the time spent by agents per ticket, calculated in hours.
Copy and paste this formula into the formula field of your standard calculated metric:
VALUE(Total time spent (sec))/60/60
Supported aggregators when you use this metric in a report: SUM, AVG, MIN, MAX, MED
Metric name: Update handling time (min)
This metric should be created in the Support: Updates history dataset. It returns the time spent by agents per ticket update, calculated in minutes.
Copy and paste this formula into the formula field of your standard calculated metric:
IF ([Changes - Field name] = "Total time spent (sec)")
THEN
IF ([Changes - Previous value]=NULL OR [Changes - Previous value]="")
THEN NUMBER([Changes - New value])/60
ELIF (REGEXP_MATCH([Changes - New value], "[0-9]+") AND REGEXP_MATCH([Changes - Previous value], "[0-9]+"))
THEN(NUMBER([Changes - New value])-NUMBER([Changes - Previous value]))/60
ENDIF
ENDIF
Supported aggregators when you use this metric in a report: SUM, AVG, MIN, MAX, MED
Metric name: Update handling time (hrs)
This metric should be created in the Support: Updates history dataset. It returns the time spent by agents per ticket update, calculated in hours.
Copy and paste this formula into the formula field of your standard calculated metric:
IF ([Changes - Field name] = "Total time spent (sec)")
THEN
IF ([Changes - Previous value]=NULL OR [Changes - Previous value]="")
THEN NUMBER([Changes - New value])/60/60
ELIF (REGEXP_MATCH([Changes - New value], "[0-9]+") AND REGEXP_MATCH([Changes - Previous value], "[0-9]+"))
THEN(NUMBER([Changes - New value])-NUMBER([Changes - Previous value]))/60/60
ENDIF
ENDIF
Supported aggregators when you use this metric in a report: SUM, AVG, MIN, MAX, MED
Example 1: Ticket handling time by ticket ID
In this example, you'll produce a list of tickets with their handling time and some additional attributes.
Before you start, ensure you've created the custom metrics shown previously.
- In Explore, click the reports (
) icon.
- In the Reports library, click New report.
- On the Select a dataset page, click Support > Support - Tickets, then click Start report. The report builder opens.
- Now, add your metrics. In the Metrics panel, click Add.
- From the list of metrics, choose Calculated Metrics > Ticket handling time (min) ,then click Apply.
- In the Rows panel, add the attribute you want to report against the metrics. Click Add.
- From the list of attributes, expand Ticket, and then choose Ticket ID.
- Expand Assignee, and choose Assignee name.
- Expand Requester, and choose Requester name.
- Expand Time - Ticket solved, and choose Ticket solved - Date.
- Click on one of the Time - Ticket solved, then Date range and select the time period you wish.
- From the visualizations menu (
), choose Table.
Example 2: Ticket handling time by month and organization
In this example, you'll produce a chart showing total ticket handling time and average ticket handling time by month and organization.
Before you start, ensure you've created the custom metrics shown previously.
- In Zendesk Explore, click the reports (
) icon.
- In the Reports library, click New report.
- On the Select a dataset page, click Support > Support - Tickets, then click Start report. The report builder opens.
- Now, add your metrics. In the Metrics panel, click Add.
- From the list of metrics, choose Calculated metrics > SUM(Ticket handling Time (hrs)) and AVG(Ticket handling time (min)), then click Apply.
- From the visualizations menu (
), choose Line.
- Click the AVG(Ticket handling time (min)) metric you just added, then select Dual.
- In the Columns panel, add the attribute you want to report against the metrics. Click Add.
- From the list of attributes, choose Time - Ticket created > Ticket created - Year and Ticket created - Month, then click Apply.
- Click the Ticket Created - Month, then Date range and select the time period you want.
- In the Rows panel, add the attribute you want to have in the row selector. Click Add.
- From the list of attributes, choose Ticket organization > Ticket organization name, then click Apply.
- Click the Ticket organization name, and choose the organizations you want to look at.
- You can adjust the chart colors, labels and more in the chart configuration menu (
).
You'll end up with a chart that looks like this:
Example 3: Update handling time by agent
In this example, you'll generate a graph showing agents with the top ten average handling time.
Before you start, ensure you've created the custom metrics shown previously.
- In Zendesk Explore, click the reports (
) icon.
- In the Reports library, click New report.
- On the Select a dataset page, click Support > Support - Updates history, then click New report. The report builder opens.
- Now, add your metrics. In the Metrics panel, click Add.
- From the list of metrics, choose Calculated metrics > AVG(Update handling time (min)), then click Apply.
- In the Columns panel, add the attribute you want to report against the metric. Click Add.
- From the list of attributes, choose Updater > Updater name, then click Apply.
- In the Filters panel, add the attributes that will refine the results. Click Add.
- From the list of attributes, choose Updater > Updater role, then click Apply.
- Click the Updater role attribute you just added and select Admin and Agent from the menu.
- In the Filters panel, click Add
- From the list of attributes, choose Time - Ticket update > Update - Date, then click Apply.
- Click the Update - Date filter you just added, then click Date range and select the time period you want to show.
- From the visualizations menu (
), choose Bar.
- To show only the top ten users, in the result manipulation menu (
), click Top/bottom. On the Top/bottom page, select Top, then set the number to 10.
- Adjust colors, labels and other customizations in the chart configuration menu (
).
You'll end up with a chart that looks something like the following:
104 Comments
I am getting an issue with the first metric
The use of the word 'Simply' throughout these instructions is frustrating.
Thanks for that feedback, Ryan. We'll share it with the documentation team.
Is there something I an import into explore without having to manually create the metrics to then have the dashboard?
I'm trying to build a report that identifies the amount of time spent per update by the group the ticket was assigned to. Two years ago, a Zendesk rep posted this solution:
However, I do not believe this is accurate. The definition of Update Ticket Group is:
The group to which a ticket was assigned at the end of an update. For example, if a ticket was reassigned from Tier 1 to Tier 2, the attribute returns Tier 2.
What we want to capture is the group at the *beginning* of the update, because the agent who performs the update is likely a member of *that* group, not the group the ticket is *handed off to*.
How can we report using the group the ticket was assigned to *before* the update was completed?
Ideally we would instead use the fact "Updater group", but that doesn't seem to be a fact that's available in the update dataset.
i believe i followed the guide - but the numbers i am getting is too high to fit the actual time spent.
It would be impossible for us to spend 778 hours on one client in 2020?

What am i doing wrong? I doublechecked my calculated metrics.
Hi Alexia -
It may be that you have one or more tickets from that client where the tracked time was accidentally left running for a long time, for example if someone was working on a ticket on a Friday and left it open over the weekend, and only submitted the ticket when they returned.
Here's what I'd suggest: use the Ticket handling time by ID recipe above, and add a filter for the Organization in question, to look at the handling time of those 24 tickets, to see if there's an abnormally high outlier that can explain the discrepancy. Unfortunately, there isn't a way to modify the time tracked on a ticket once it's been submitted, but it could point you to an agent who might need refresher training on the use of the app.
@...
Not sure if you have figured this out but you were getting an error because the metric you were trying to create should have been created in the Ticket Updates dataset. Each metric formula in the article has a note to point out which datasets you need to use.
Does anyone from Zendesk have input on my question from 20 days ago?
https://support.zendesk.com/hc/en-us/articles/360022186134/comments/1260800283650
I am trying to get the time spent on a ticket in a given month. The account as the Time Tracking app. I am using the Support Tickets Data Set, and I copied and pasted the Update handling time (min) formula. But Explore keeps giving me a error (and the formatting in the formula doesn't match the example. What am I doing wrong?
Never mind, I read the article a little closer. I think I know what my mistake is
What best practices should I suggest to my agents while using the app.
There is insufficient documentation with the app itself for me to understand the settings without just trial and error.
What is meant by "navigates away from the ticket" for the auto pause. Is it switching tabs? Changing windows?
Does anyone have any advice?
Hi @..., @..., @... and anyone else. I'm experiencing a very strange issue that the Time Tracking app seems to be tracking less time and not including calls. If you look at the following screenshot, you'll see the initial call was almost 11 minutes, but the time tracking in total was only 378 seconds (6 mins and a bit).
Does the time tracking app not include the calls? I would have assumed it did. Do we know exactly what it does include and when? Does it not include first calls?
Is this a bug?
Hi @...

Thanks for this question.
Essentially the Time Tracking app only adds time to a ticket, if the agent makes an update to the ticket after spending the time on that ticket.
In the case of the call, the app does not add a time spent for the initial call update on the ticket.
Only once the agent updates the ticket (in your case after the agent spent 378 seconds filling out fields and maybe following up with the client, this will be added by the time tracking app to the ticket.
Here is an example from my own test account, which shows this:
The purpose of the app is essentially to track the time the agent took to work on the ticket.
So you would have to use the Talk Dataset and calculate the call time also if you wanted to have both the time of the call and the time the agent spent working on the ticket.
I hope this helps answering your question.
Thanks for that! What about subsequent calls to the customer while the agent is on the ticket. Does that accrue time? And if that does, what if an agent then switches to another ticket, does that pause time?
Hey @...

No problem! As for your new questions:
Time Tracking App does not add time to the ticket for outbound calls.
Same as for the inbound calls, the call itself does not add the time spent on the ticket.
Only any manual update after the call made by the agent will add the time spent.
I'm adding another screenshot here for you:
In regards to the time where agents are away from the ticket:
Note that the Time Tracking App calculates the time spent as long as the agent has the ticket tab open. Should the agent navigate away from that browser-tab for example, this will still continue counting.
The only time where the tracker will reset or stop is, if the agent closes the ticket tab without submitting the ticket.
With that said, keep in mind that The Time Tracking App will only add time to the ticket if the agent actually hits "submit as [status]"
I hope this explains the behaviour of the app.
That answers it, thank you!
I keep getting an error when trying to pull data using the standard formulas above.
Here is the copied formula - syntax error doesn't allow me to save.
deleting the second ) allows me to save but the calculation doesn't work. It gives me the error.
@... Try adding a space between "spent" and "(" and I believe that should resolve the issue for you. The full formula should look like this: VALUE(Total time spent (sec))/60
Hello ZenDesk Team!
I copied the formula provided:
@... Based on that error message, I have a feeling you may have been using the Tickets dataset when building that metric since the 'Changes - New Value' attribute is only available in the Ticket Updates dataset.
Mind double checking to ensure that you're building this metric in the Ticket Updates dataset?
Hi! I am trying to run the Update Handling Tim (min) metric in Explore but keep recieving the message below, depsit copying and pasting from the formula above? Any idea's?
I can't see the error in the metric so struggling on this one.
Thank You!
Hey Tom - Mind confirming that you're using the Ticket Updates dataset instead of the Tickets dataset? The 'Changes - New Value' attribute is only available in the Ticket Updates dataset, so that might explain the error message you're seeing if you happen to be in a different dataset.
Hi, "Avg Ticket Handling time (min)" rounds to the nearest minute on the graph. How do I view the exact handle time? For example, our handle time in mins for June is not 6, according to the graph, it's less than 6.
@... If you click into Chart Configuration from the right-side menu and then click on Display Format, you should be able to specify the format by selecting Custom from the dropdown menu next to this metric.
I need to find the best way to measure how long a ticket takes to be resolved by my engineering team. I do not currently have advanced queries. What would be the best way to measure?
Hi Kate! The best way to create these queries if the default queries do not meet your requirement is via Explore. I can see your current plan is Explore Lite. For creating custom queries you need Explore Professional, included in our Suite Professional plan. You can compare our plans prices and features here
Best regards, Atenciosamente
Diogo | Customer Advocate | Zendesk Certified Support Administrator
Having issues? Try clearing your cache and cookies! || || Join our community! Find advanced answers and share your own!
Hi @...: Could you point me towards what custom inputs to select in "display format" to get the exact AHT to display https://share.getcloudapp.com/4gun6jxw?
Hey @... - Happy to help! The solution I had in mind was to select "Custom" as the Display Format for that metric and then specify a different Decimal Place to round it to (i.e. "2" or "4" instead of "0"). This would help solve for the problem you previously described in terms of getting a more precise number rather than using Zendesk's default rounding.
While I'm not sure if there would be a way to get the exact AHT time to display, it looks like a workaround would be to enter a really large value (ie. 30) and that should help you find the exact AHT time.
For instance, below is an example of what I see in one of my own time tracking queries (table) when I round that metric to 30 decimal places:
@... are you looking for something like below?
Please sign in to leave a comment.