In this article, you'll learn more about some of the metrics built into Zendesk Support that help you measure the duration between two events.
Note: This article covers only the native Support metrics. SLA metrics might have identical names but their behavior is different because they are live counters. See: Defining and using SLA policies.
For more information about the metrics and attributes you can use with Explore, see Understanding Explore datasets.
The native duration metrics are not live counters, instead, they measure time duration between specific events. Support computes the time difference between two event timestamps and adds the results with the following behaviors:
- The new metric value is recorded on the ticket only after the specific events take place.
- The metric’s value will appear as null until two required events occur at least once.
This article contains the following topics:
- First reply time
- First resolution time
- Full resolution time
- Requester wait time
- Agent wait time
- On-hold time
Tip: In the graphics below, green indicates time counted and gray indicates time not counted.
First reply time
- Definition: The duration between ticket creation and the first public agent reply on the ticket.
- First timestamp: Ticket creation.
- Second timestamp: The first public comment by any agent.
- Exceptions: If the ticket is created by an agent and the first comment is public the second timestamp shifts to the second public agent comment. If the ticket is created via private sharing agreement, the first private note by any agent will be considered as the second timestamp. For more details see: Calculating first reply time
First resolution time
- Definition: Duration between ticket creation and its first resolution.
- First timestamp: Ticket creation.
- Second timestamp: The first time the ticket status is set to solved.
- Exceptions: If the unsolved ticket is set to closed by a business rule or API, this event is considered as the second timestamp.
Full resolution time
- Definition: Duration between ticket creation and its most recent resolution.
- First timestamp: Ticket creation.
- Second timestamp: The last time the ticket status was set to solved.
- Exceptions: If the unsolved ticket is set to closed by a business rule or API, this event is considered as the second timestamp.
Requester wait time
- Definition: The total combined time ticket was in the new, open, and on-hold statuses.
- First timestamp: Ticket status is changed to new, open, or on-hold.
- Second timestamp: Ticket status is changed from new, open, or on-hold to any other status.
Agent wait time
- Definition: The total combined time the ticket was in the pending status.
- First timestamp: Ticket status is changed to pending.
- Second timestamp: Ticket status is changed from pending to any other status.
On-hold time
- Definition: The total combined time the ticket was in the on-hold status.
- First timestamp: Ticket status is changed to on-hold.
- Second timestamp: Ticket status is changed from on-hold to any other status.
51 comments
Kaushik Chanda
Hello,
Is there a way I can get the duration in business hours between 2 status changes directly from Zendesk reports please?
Example: Audit log-
New to Pending - 2021-01-06 T16:42:33
Pending to Open - 2021-01-08 T03:30:07
Open to Solved - 2021-01-08 T17:39:37
I basically want to get the duration the ticket was sitting in 'Open' status. So basically the difference of time b/w 2021-01-08 T17:39:37 & 2021-01-08 T03:30:07.
If I need to do the calculation in excel, the data should be sorted and then getting duration in business hours (excluding weekends, holidays etc) in another complication to handle.
Can you help me figure this out please?
Thank you!
Kaushik Chanda.
1
Michael Froeming
Hi Kaushik,
You could use the default metric Open status time to get the duration a ticket is in the Open status, but unfortunately this don't come with a business hours calculation. Business hours metrics are only available in Support: Tickets dataset and not available in Support: Ticket updates dataset(where the said metric is in).
Best,
0
Sérgio Pinho
Hello,
Knowing that the requester wait time is only updated when status changes (This number is only measured after a ticket status is changed from New/Open/On-hold/Pending/Solved/Closed), how can I know the requester wait time updated with the current date/time if the status does not change in the meantime?
Thanks.
0
Matt
Hey @...
Thanks for this question! Note that the Requester Wait Time is generally speaking something you would want to measure once the ticket's live cycle is completed.
So for example on Tickets that have been solved/closed. Even if the ticket did only change from New status to Closed status directly, this will give you a value for the Requester Wait Time.
If you are looking specifically to report on the times a ticket spent in a Status, this could be done following a recipe like this one: Reporting on the duration of fields
You can potentially use a custom attribute in the Ticket Updates Dataset, to create a time stamp for when the ticket changed to a specific status and then use a custom metric to measure the time between that time stamp and today. But this is not related to the Requester Wait Time but is simply a way of calculating a time spent in a current status.
Here is an example to measure the time your ticket spend in the New Status, if they did not change the status yet:
Create the Timestamp Attribute: (let's call this "New Timestamp")
Use this Timestamp Attribute now in a custom Metric:
I'm afraid there isn't a direct native way to measure the requester wait time for tickets that do not change the status, as this is not really what it would be used for. But I hope the workarounds supplied might be helpful to you!
0
Jared Vicencio
I so love this article. This is extremely useful for us in upholding our SLA commitments to our customers.
I have a slightly tricky question. I compute our metrics based on the count of tickets that meet our RWT and FRT SLA. But in RWT, is there a way for me to count the tickets that meet a certain SLA but will not include On-Hold time? Although we don't expect our teams to mark tickets as On-Hold, I plan to use that Ticket Status for customers whose requests need to be referred to third-party contractors whose SLA's are beyond our control. I would also have a separate metric for that On-Hold Time. We initially inform our customers that we are closing the tickets since their requests are not feasible at the moment but they wanted to keep them open until they get feedback (which can take forever). Thanks.
0
Gab Guinto
Hi Jared,
There are metrics for On-hold time under the Tickets, Ticket updates and SLA datasets. So, you should be able to calculate for the requester wait time minus the on-hold status time via a standard calculated metric or through a result metric calculation. You can then build your report around that metric, or create custom attributes to classify tickets based on different brackets/values of the custom requester wait time calculation.
0
Jared Vicencio
Thanks.
Another question. I created an SLA for First Response Time (2 hours for Urgent and High Priority Tickets and 24 hours for Normal and Low priority tickets). Ticket priority is determined by the macro used for that ticket. I then created a report in Explore to show which tickets Breached and which Tikcets achieved the SLA Targets. I did this by using Ticket ID in the Row Section and Ticket SLA Target count of Achieved and count of Breached in the Metrics section (In a table format). I noticed that in some of the ticket IDs, it showed that the SLA was breached twice (marked 2 under. How is this possible? Thanks.
0
Gab Guinto
Hi Jared,
Is your query filtered by SLA policy and target metric? If the rows in the query are not specific to a single target metric and SLA policy, then it may display all the breached and/or achieved SLA events for one ticket ID/row.
Gab Guinto
Technical Support Engineer | Zendesk | APAC
0
Jared Vicencio
Really appreciate the responses. I have a few more questions.
Adding a few more details from my previous query:
1. I only used one policy In the row section. I currently have 2 policies: 1 for First response time / FRT (1 hour for Urgent and High Prio and 12 hours for the rest) and 1 for Requester Wait Time / RWT (2 hours for Urgent and High prior, and 24 hours for the rest). Wish I can share my screens or do this in chat.
2. I have data filters for the timeframe and a data filter for the Assigneed.
3. I created 4 queries: FRt for Urgent/High, FRT for other prior, RWT for URgent /High, and RWT for other prios.
3. In each query, my metrics are D-count for Achieved SLA Metrics and D_Count for Breached SLA MEtrics For the Row, I set SLA policy (1 policy only in each query). My filters isolated the prior and Assignee name.
Questions:
1. Shouldn't the total counts of tickets be the same?
2. If an Agent marks a ticket as solved and the customer responds again reopening the ticket, and Agent responds again solving the ticket (again), will this cause the double counts in their FRT and RWT metrics? I think it is the case for RWT but for FRT? How do I make the report count the tickets only as 1 for Achieved OR 1 only for Breached?
0
Gab Guinto
Hi Jared,
It looks like I need to investigate further on this. I've created a request on your behalf so that we can continue our conversation over the ticket. Thanks!
Gab Guinto
Technical Support Engineer | Zendesk | APAC
0
Jared Vicencio
Thanks, Gab.
0
sajid371 shaik
Is there any way to exclude the time gap in the full resolution time from Solved to Re-open
Example: If a ticket got created on Day 1 and solved on Day 1 and again the same ticket got re-opened on Day 3 and solved on day 3 . The full resolution time metric is calculating the time from day 1 to Day 3.
I want to exclude the time gap from Solved to re-open. Is there any way?
0
Giuseppe
Hi Sajid,
I think this is possible, though it will be highly customized, by combining DATE_FIRST_FIX and DATE_DIFF
I think you'll have to create a couple of custom attributes for this, using Ticket Updates dataset. First, we'll have to get the timestamp of when the ticket was reopened. This can be done by creating a formula based on the Changes value (like the one in this recipe - Explore recipe: Reporting on the duration of fields, except we'll be returning Update - timestamp)
Next, we'll have to create a new calculated attribute to identify when the ticket was reopened. It'll be pretty similar to the one above, except instead of returning Update - timestamp we'll only return True. This will help us identify the timestamp of when the ticket was reopened.
The third attribute that needs to be created would be to get the timestamp of the first reply after the ticket was reopened. We'll have to use DATE_FIRST_FIX here, and an IF clause to make sure that Comment present, Comment public, and Reopen (the one we previously created) are all set True.
Lastly, using DATE_DIFF, get the difference between when the ticket was reopened and when the first reply to the ticket was (first and third attribute here). We can then use that and subtract it from the Full Resolution Time to get the Full Resolution time minus the extra time when the ticket was first Reopened.
0
Zixuan
Hello Giuseppe,
Thank you for your response. I have the same question for the full resolution time. In a business sense, we need this metric to know how long does it take to solve a ticket. However, if we include the duration from solved to reopened, it creates a bias. Since customer can reopen a ticket at any time for instance 15 days later. And including that time into resolution time does not seem to be fair and reflect the true story. I understand from your explanation that there is a way to customize the metric, which looks rather complicated. Thus, wouldn't it be possible to change the way Full Resolution Time is calculated? To exclude the duration from solved to reopened. If you do not think this is appropriate, would you please provide me explanation of what is the business sense behind it? Thank you.
0
Marco
Thanks for your response. I completely understand where you're coming from. I am not part of the dev team thus I would not have insight on the thinking behind it. However, my first hunch would be that a reopened ticket was not solved in the first place. More so that agents can basically just solve a ticket whenever they want, a ticket being reopened means that the issue was not resolved, or at least not fully resolved. There's definitely some pros and cons here, and simply changing how full resolution time is not really an option that we have right away, thus the custom metric that Giuseppe recommended.
However, as mentioned I do see your point here. It would be great if you can post this as a feedback as well for our product team to see. Posts that get a lot of traction via comments and upvotes are reviewed by our product team for possible future improvements. https://support.zendesk.com/hc/en-us/community/topics/1260801325369--Feedback-Ticketing-System-Support-
Hope this helps! Cheers!
0
Hana Tran
Hello,
Does the Requester wait time include non business hours?
For example, client texted at 5.30am, out support opens at 6am and ticket changed to status pending at 6.05am. So in this case Requester wait time will be 35 min or 5 min?
0
CJ Johnson
Is there anyway to get the formula for:
I'd like to set up an attribute that returns the timestamp of the First Resolution time but I'm a little stymied on how to reference this.
0
Dave Dyson
If you want the absolute time that a ticket was first solved, I think the best way to do this would be use the DATE_ADD() function, adding the time to first resolution to the time of ticket creation. Is that what you're asking?
0
CJ Johnson
Hi Dave,
Thanks, can you explain how I would use DATE_ADD for this? It seems to want me to provide 2 attributes, one for the date and one for the modifier, but there are no attributes for First Resolution, only Metrics. That's why I'm asking about the second timestamp attribute.
0
Jared Vicencio
What is the formula I can use to compute the percentage of Solved tickets of a particular group/type, whose Requester Wait Time did not exceed say, 24 hours? Thanks for the help.
1
Ronald
How is it possible that my Average Full Resolution time for Q2 4/1/2022 - 6/30/2022 is MUCH higher than the Average Full Resolution time for those same groups during each individual month of Q2? Is there something mathematical that I'm overlooking here? I trust these numbers are correct I just don't understand how.
I could understand if say the month of April had a high ticket volume and a high Average Full Resolution, that would skew the Average for the quarter higher.
But each of April, May, and June all have a lower Average Full Resolution time than the Q2 metric. How can that happen? 🤔
April - 46.4 hours
May - 37.2 hours
June 33.3 hours
Q2 - 67.2 hours
Update: After some additional investigation I discovered the above was being caused by the Time filter widget configuration. The time filter is being applied on "Ticket created" and "Ticket solved". So when I filter the tickets by each month individually it is calculating the Resolution Time for tickets created and solved during that month only. But when I created a report for April - June that is able to include tickets that were created in one month but then solved in the next. Which would certainly explain a higher resolution time.
TLDR - When doing the quarterly calculation it includes tickets created in April and solved in May/June and tickets created in May and solved in June. But hose higher resolution time tickets are not included in the calculation when doing April or May individually due to the time filter widget being applied on created and solved.
2
Dane
Hi Ronald,
I have created a ticket for you to further check this behavior. Please wait for my update via email.
0
Ron Purdy
Hi!
My team frequently assist each other with our tickets. Is there a way to calculate the Average Requester Wait Time (Business Hours) by the agent making the reply instead of by the agent who is assigned when the ticket is solved?
0
Dave Dyson
I don't think there's going to be any easy way to do this -- requester wait time is simply defined as the time a ticket spends in the New, Open, and On-hold statuses. In the Tickets dataset, you can of course look at this by Ticket Assignee, but that's going to the the ticket's assignee at the time the report is run. For my money, I think requester wait time is a good metric to look at from an overall team perspective, or when breaking things down by customer or request time (and in any case, I'd use median instead of average, since median isn't heavily influenced by data outliers), but to measure agent responsiveness, I'd probably look at how many tickets they're solving, or how many public responses they're making per day (which can be found in the Agent Updates tab of the built-in Zendesk Support dashboard.
But it's possible someone else may have found a way to do this that I haven't thought of.
0
Omar
If a ticket comes into Zendesk, in Status NEW
The agent assigns to themselves (their name) and then closes it as SOLVED
The customer replies back, the ticket comes back, its NEW (or open, whichever status)
When the ticket comes back in the NEW status, (after being solved) will it go against the agents metrics, because it is still under their name?
0
Dave Dyson
If a ticket is in Solved status when a customer replies, the status on that ticket will change to Open (see About the inborn system ticket rules). If a Solved ticket does move to Closed ticket, then if the requester responds, a new ticket will be created with New status, and that new ticket will (as you said) be assigned to the same agent that the Closed ticket was assigned to (see Creating a follow-up for a closed ticket).
If the Assignee is not changed on that followup ticket, then yes the metrics will be attributable to the assigned agent on the original ticket. But the assignee on the followup ticket can be changed at any time, in which case the metrics will be attributable to the new assignee.
0
Omar
@...
I have business hours set on dashboard and widgets etc. e.g. requester wait time business hours
We have shift patterns i.e. 8.30-5.30 and 12.30-9pm
the agents change these shifts weekly. best way to account for the shift patterns and the agents who change them weekly would be? Can you set business hours in a way so it takes into account the shift pattern, and the changing shift pattern of that agent each week?
(but essentially be the same dashboard)
0
Omar
@...
just to be sure ive understood
Agent A assigns themself a ticket
closes ticket as solved (all metrics have gone to agent A since they assigned themselves)
cust comes back 2 hours later with a reply
The reply is still assigned to Agent A.
The new ticket which is on status 'NEW'- metrics will go to agent A from when it arrived in the Zendesk inbox, so if its idle and not had a reply for 2 hours, that (2 hours wait time) metric will go to agent A
Thanks
0
Emily Sia
Is there a way to only see the full resolution time average for tickets created and solved on the same month? ie, resolution time for tickets created and solved in January, February, March, only, etc?
0
Gab Guinto
You can create a custom attribute that checks the creation/solved month and year of tickets and then use that as filter in your report. Example:
You can filter the report by this custom attribute; using the example above:
With this filter, the report should only show tickets created and then solved within the same month & year.
Hope this helps. Thanks Emily!
0