Use this article to discover the metrics and attributes you can use to build Explore reports based on your usage of Zendesk messaging. These datasets are also used for the messaging prebuilt dashboard (see Overview of the Zendesk Messaging dashboard).
For more information about how to create reports with Explore, see Creating reports.
Messaging tickets dataset
The Messaging tickets dataset contains metrics and attributes that relate to all messaging channels, including web, mobile, and social messaging channels.
This section lists all the available elements for the dataset. It contains the following topics:
Messaging tickets metrics
This section lists and defines all the Messaging tickets metrics available.
Metric | Definition | Calculation |
Messaging tickets | The total number of tickets created from messaging channels. | [Ticket ID] |
Solved tickets | The number of solved or closed messaging tickets. | IF ([Ticket status - Unsorted] = "Solved" OR [Ticket status - Unsorted] = "Closed") THEN [Ticket ID] ENDIF |
One-touch messaging tickets | The number of messaging tickets that were solved in the first interaction, indicated by transitioning from Open to Solved, without going through Pending and On-hold. | IF ([Ticket status - Unsorted] = "Solved" OR [Ticket status - Unsorted] = "Closed") AND VALUE(Agent replies) > 0 AND NOT([Wait status changed]) AND [Reopens] = 0 THEN [Ticket ID] ENDIF |
% One-touch messaging tickets | The percentage of messaging tickets that were solved in the first interaction, indicated by transitioning from Open to Solved, without going through Pending and On-hold. | COUNT(One-touch messaging tickets) / COUNT(Solved messaging tickets) |
Unsolved messaging tickets | The number of unsolved messaging tickets. This includes tickets in every status, except Solved and Closed. | IF [Ticket status - Unsorted] != "Solved" AND [Ticket status - Unsorted] != "Closed" THEN [Ticket ID] ENDIF |
Unassigned unsolved messaging tickets | The number of unsolved messaging tickets currently not assigned. | IF [Ticket status - Unsorted] != "Solved" AND [Ticket status - Unsorted] != "Closed" AND [Assignee ID] = NULL THEN [Ticket ID] ENDIF |
Assigned unsolved messaging tickets | The number of unsolved messaging tickets that are assigned. This includes tickets in every status except Solved and Closed. | IF [Ticket status - Unsorted] != "Solved" AND [Ticket status - Unsorted] != "Closed" AND [Assignee ID] != NULL THEN [Ticket ID] ENDIF |
Unassigned unreplied messaging tickets | The number of unsolved messaging tickets that currently have no agent replies and are not assigned. | IF [Ticket status - Unsorted] != "Solved" AND [Ticket status - Unsorted] != "Closed" AND VALUE(Agent replies) = 0 THEN [Ticket ID] ENDIF |
Agent messages | The number of messages sent by an agent. | |
Agent replies | The number of replies to the messaging ticket by an agent. Replies are messages sent by the agent in response to an end-user message. | |
Requester messages | The number of messages sent by the requester. | |
Requester replies | The number of replies sent by the requester. Replies are messages sent by the end user in response to an agent message. | |
Good satisfaction tickets | The number of messaging tickets with a good satisfaction rating. | IF [Ticket satisfaction rating] = "Good" THEN [Ticket ID] ENDIF |
Bad satisfaction tickets | The number of messaging tickets with a bad satisfaction rating. | IF [Ticket satisfaction rating] = "Bad" THEN [Ticket ID] ENDIF |
Rated satisfaction tickets | Messaging tickets that were rated either bad or good by the requester. | IF [Ticket satisfaction rating] = "Good" OR [Ticket satisfaction rating] = "Bad" THEN [Ticket ID] ENDIF |
% Satisfaction score | The percentage of satisfaction surveys rated good. | COUNT(Good satisfaction tickets) / COUNT(Rated satisfaction tickets) |
First reply time (sec) | The median duration in seconds between when the messaging ticket was created and the first agent reply on the ticket. | |
Requester wait time (sec) | The median time in seconds from the end user sending a message and the agent’s response. | |
Requester wait time average (sec) | The median time in seconds from the end user sending a message and agent’s response. | VALUE(Requester wait time (sec)) / VALUE(Agent replies) |
Agent wait time (sec) | The median time in seconds from the agent sending a message and the end user’s response. It measures how long agents were waiting for end user replies. | |
Agent wait time average (sec) | The median time in seconds from the agent sending a message and the end user’s response. It measures how long agents were waiting for end user replies. | VALUE(Agent wait time (sec)) / VALUE(Requester replies) |
Assignment to first reply (sec) | The median time in seconds from last assignment to the first agent reply. | |
First reply time (min) | The median duration in minutes between when the messaging ticket was created and the first agent reply on the ticket. | VALUE(First reply time (sec))/60 |
Requester wait time (min) | The median time in minutes from the end user sending a message and the agent’s response. | VALUE(Requester wait time (sec))/60 |
Requester wait time average (min) | The median time in minutes from the end user sending a message and the agent’s response. | VALUE(Requester wait time average (sec))/60 |
Agent wait time (min) | The median time in minutes from the agent sending a message and the end user’s response. It measures how long agents were waiting for end user replies. | VALUE(Agent wait time (sec))/60 |
Agent wait time average (min) | The median time in minutes from the agent sending a message and the end user’s response. It measures how long agents were waiting for end user replies. | VALUE(Agent wait time average (sec))/60 |
First resolution time (min) | The number of minutes between when the messaging ticket was created and when it was first resolved. | IF [Ticket ID] != NULL THEN VALUE(First resolution time (min)) ENDIF |
Full resolution time (min) | The duration in minutes from when the messaging ticket was created to its latest resolution. | IF [Ticket ID] != NULL THEN VALUE(Full resolution time (min)) ENDIF |
Assignment to first reply (min) | The median time in minutes from the last assignment to the first agent reply. | VALUE(Assignment to first reply (sec))/60 |
First reply time (hours) | The median duration in hours between when the messaging ticket was created and the first agent reply on the ticket. | VALUE(First reply time (sec))/3600 |
Requester wait time (hours) | The median time in hours from the end user sending a message and the agent’s response. | VALUE(Requester wait time (sec))/3600 |
Requester wait time average (hours) | The median time in hours from the end user sending a message and the agent’s response. | VALUE(Requester wait time average (sec))/3600 |
Agent wait time (hours) | The median time in hours from the agent sending a message and the end user’s response. It measures how long agents were waiting for end user replies. | VALUE(Agent wait time (sec))/3600 |
Agent wait time average (hours) | The median time in hours from the agent sending a message and the end user’s response. It measures how long agents were waiting for end user replies. | VALUE(Agent wait time average (sec))/3600 |
Assignment to first reply (hours) | The median time in hours from the last assignment to the first agent reply. | VALUE(Assignment to first reply (sec))/3600 |
First reply time (days) | The median duration in days between when the messaging ticket was created and the first agent reply on the ticket. | VALUE(First reply time (sec))/86400 |
Requester wait time (days) | The median time in days from the end user sending a message and the agent’s response. | VALUE(Requester wait time (sec))/86400 |
Requester wait time average (days) | The median time in days from the end user sending a message and the agent’s response. | VALUE(Requester wait time average (sec))/86400 |
Agent wait time (days) | The median time in days from the agent sending a message and the end user’s response. It measures how long agents were waiting for end user replies. | VALUE(Agent wait time (sec))/86400 |
Agent wait time average (days) | The median time in days from the agent sending a message and the end user’s response. It measures how long agents were waiting for end user replies. | VALUE(Agent wait time average (sec))/86400 |
Assignment to first reply (days) | The median time in days from the last assignment to the first agent reply. | VALUE(Assignment to first reply (sec))/86400 |
Unsolved tickets age (min) | The duration in minutes between when an unsolved messaging ticket was created and now. | IF [Ticket ID] != NULL AND [Ticket status - Unsorted] != "Solved" AND [Ticket status - Unsorted] != "Closed" THEN DATE_DIFF(NOW(), [Ticket created - Timestamp], "nb_of_minutes") ENDIF |
Unsolved tickets time since update (min) | The duration in minutes between an unsolved messaging ticket’s last update and now. | IF [Ticket ID] != NULL AND [Ticket status - Unsorted] != "Solved" AND [Ticket status - Unsorted] != "Closed" THEN DATE_DIFF(NOW(), [Ticket updated - Timestamp], "nb_of_minutes") ENDIF |
Unsolved tickets age (hours) | The duration in hours between when an unsolved messaging ticket was created and now. | IF [Ticket ID] != NULL AND [Ticket status - Unsorted] != "Solved" AND [Ticket status - Unsorted] != "Closed" THEN DATE_DIFF(NOW(), [Ticket created - Timestamp], "nb_of_hours") ENDIF |
Unsolved tickets time since update (hours) | The duration in hours between an unsolved messaging ticket’s last update and now. | IF [Ticket ID] != NULL AND [Ticket status - Unsorted] != "Solved" AND [Ticket status - Unsorted] != "Closed" THEN DATE_DIFF(NOW(), [Ticket updated - Timestamp], "nb_of_hours") ENDIF |
Unsolved tickets age (days) | The duration in days between when an unsolved messaging ticket was created and now. | IF [Ticket ID] != NULL AND [Ticket status - Unsorted] != "Solved" AND [Ticket status - Unsorted] != "Closed" THEN DATE_DIFF(NOW(), [Ticket created - Timestamp], "nb_of_days") ENDIF |
Unsolved tickets time since update (days) | The duration in days between an unsolved messaging ticket’s last update and now. | IF [Ticket ID] != NULL AND [Ticket status - Unsorted] != "Solved" AND [Ticket status - Unsorted] != "Closed" THEN DATE_DIFF(NOW(), [Ticket updated - Timestamp], "nb_of_days") ENDIF |
First reply time - Business hours (sec) | The median time in seconds between when the messaging ticket was created and the first agent reply on the ticket, excluding out-of-business hours. | |
Requester wait time - Business hours (sec) | The median time in seconds from the end user sending a message and the agent’s response, excluding out-of-business hours. It measures how long requesters were waiting for agents' replies. | |
Requester wait time average - Business hours (sec) | The median time in seconds from the end user sending a message and agent’s response, excluding out-of-business hours. | VALUE(Requester wait time - Business hours (sec)) / VALUE(Agent replies) |
Agent wait time - Business hours (sec) | The median time in seconds from the agent sending a message and the end user’s response, excluding out-of-business hours. It measures how long agents were waiting for end user replies. | |
Agent wait time average - Business hours (sec) | The median time in seconds from the agent sending a message and the end user’s response, excluding out-of-business hours. It measures how long agents were waiting for end user replies. | VALUE(Agent wait time - Business hours (sec)) / VALUE(Requester replies) |
Assignment to first reply - Business hours (sec) | The median time in seconds from last assignment to the first agent reply, excluding out-of-business hours. | |
First reply time - Business hours (min) | The median time in minutes between when the messaging ticket was created and the first agent reply on the ticket, excluding out-of-business hours. | VALUE(First reply time - Business hours (sec))/60 |
Requester wait time - Business hours (min) | The median time in minutes from the end user sending a message and the agent’s response, excluding out-of-business hours. It measures how long requesters were waiting for agents' replies. | VALUE(Requester wait time - Business hours (sec))/60 |
Requester wait time average - Business hours (min) | The median time in minutes from the end user sending a message and the agent’s response, excluding out-of-business hours. | VALUE(Requester wait time average - Business hours (sec))/60 |
Agent wait time - Business hours (min) | The median time in minutes from the agent sending a message and the end user’s response, excluding out-of-business hours. It measures how long agents were waiting for end user replies. | VALUE(Agent wait time - Business hours (sec))/60 |
Agent wait time average - Business hours (min) | The median time in minutes from the agent sending a message and the end user’s response, excluding out-of-business hours. It measures how long agents were waiting for end user replies. | VALUE(Agent wait time average - Business hours (sec))/60 |
Assignment to first reply - Business hours (min) | The median time in minutes from the last assignment to the first agent reply, excludes out-of-business hours. | VALUE(Assignment to first reply - Business hours (sec))/60 |
First reply time - Business hours (hours) | The median time in hours between when the messaging ticket was created and the first agent reply on the ticket, excluding out-of-business hours. | VALUE(First reply time - Business hours (sec))/3600 |
Requester wait time - Business hours (hours) | The median time in hours from the end user sending a message and the agent’s response, excluding out-of-business hours. It measures how long requesters were waiting for agents' replies. | VALUE(Requester wait time - Business hours (sec))/3600 |
Requester wait time average - Business hours (hours) | The median time in hours from the end user sending a message and the agent’s response, excluding out-of-business hours. | VALUE(Requester wait time average - Business hours (sec))/3600 |
Agent wait time (hours) | The median time in hours from the agent sending a message and the end user’s response, excluding out-of-business hours. It measures how long agents were waiting for end user replies. | VALUE(Agent wait time - Business hours (sec))/3600 |
Agent wait time average (hours) | The median time in hours from the agent sending a message and the end user’s response, excluding out-of-business hours. It measures how long agents were waiting for end user replies. | VALUE(Agent wait time average - Business hours (sec))/3600 |
Assignment to first reply (hours) | The median time in hours from the last assignment to the first agent reply, excluding out-of-business hours. | VALUE(Assignment to first reply - Business hours (sec))/3600 |
First reply time - Business hours (days) | The median duration in hours between when the messaging ticket was created and the first agent reply on the ticket, excluding out-of-business hours. | VALUE(First reply time - Business hours (sec))/86400 |
Requester wait time - Business hours (days) | The median time in hours from the end user sending a message and the agent’s response, excluding out-of-business hours. It measures how long requesters were waiting for agents' replies. | VALUE(Requester wait time - Business hours (sec))/86400 |
Requester wait time average - Business hours (days) | The median time in hours from the end user sending a message and the agent’s response, excluding out-of-business hours. | VALUE(Requester wait time average - Business hours (sec))/86400 |
Agent wait time - Business hours (days) | The median time in hours from the agent sending a message and the end user’s response, excluding out-of-business hours. It measures how long agents were waiting for end user replies. | VALUE(Agent wait time - Business hours (sec))/86400 |
Agent wait time average - Business hours (days) | The median time in days from the agent sending a message and the end user’s response, excluding out-of-business hours. It measures how long agents were waiting for end user replies. | VALUE(Agent wait time average - Business hours (sec))/86400 |
Assignment to first reply - Business hours (days) | The median time in days from the last assignment to the first agent reply, excluding out-of-business hours. | VALUE(Assignment to first reply - Business hours (sec))/86400 |
Messaging tickets attributes
This section lists and defines all the Messaging tickets attributes available.
Attribute | Definition |
Ticket ID | The ID number of the messaging ticket. |
Ticket status | The status of the messaging ticket. |
Ticket group | Name of the group where the messaging ticket was assigned. |
Ticket brand | The brand of the messaging ticket. |
Ticket channel |
The channel a messaging ticket was created from. For more information about the ticket channels Explore collects, see Understanding ticket channels in Explore. |
Ticket priority | The messaging ticket's priority. |
Ticket tags | The tags associated with the messaging
ticket. For important information about filtering reports using tags, see Reporting on ticket tags using filters. |
Ticket satisfaction rating | The satisfaction rating left by the customer on the messaging ticket. Values: Good, Bad, Offered, Unoffered. |
Wait status changed |
Returns true or false depending on whether a ticket has previously gone into the Pending or On-hold status. |
Assignee name | The name of the assignee. |
Assignee role | The role of an assignee. Possible values: admin, agent, or end user. |
Assignee ID | The messaging ticket's assignee ID. |
Assignee email | The messaging ticket assignee’s email address. |
Requester name | The name of the user who is asking for support through a messaging ticket. |
Requester ID | The ID number for a messaging ticket's requester. |
Requester email | The email address of the messaging ticket requester. |
Requester tags | Tags associated with the requester. For important information about filtering reports using tags, see Reporting on ticket tags using filters. |
Ticket organization name | The name of the organization associated with the messaging ticket. |
First reply time brackets | The time between when the messaging ticket was first created and when an agent first replied. Values are returned as 0-1 mins, 1-3 mins, 3-10 mins, >10 mins, and no replies. |
Requester wait time brackets | The time a requester was waiting for agent replies. The values are returned as no wait, 0-1 mins, 1-3 mins, 3-10 mins, 10-30 mins, and >30 mins. |
First resolution time brackets | The time between when the messaging ticket was first created and the first time it was set to solved. The values are returned as Unsolved, 0-30 mins, 30-90 mins, 1.5-6 hrs, 6-24 hrs, and >24 hrs. |
Time - Ticket created | Includes a number of attributes that return the time and date when the messaging ticket was created in various time measurements. |
Time - Ticket solved | Includes a number of attributes that return the time and date when the messaging ticket was marked as solved in various time measurements. |
Time - Ticket last updated | The time when the messaging ticket was last updated. |
Time - Ticket requester updated | The time when the messaging ticket was last updated by its requester. |
Time - Ticket last assigned | The time when the messaging ticket was last assigned to an agent. |
Time - Ticket first assigned | The time when the messaging ticket was first assigned to an agent. |
Time - Ticket type - Task due | When a messaging ticket is configured as a task, this is the date at which the task must be completed. |
23 Comments
Hey, great to have this dataset finally!
I am curious about Wait status attribute (compared to Ticket status). What is the main difference and use cases to use it?
Andrei Kamarouski
Zendesk Expert, Pythia AI Co-Founder
Hi Andrei,
Wait is not a new status. It collectively refers to the existing Ticket status - Pending and On-hold.
- Prakruti
Is this dataset also available via the Chat APIs? We're trying to find some of this data in Snowflake and it seems like it is not there.
I'm afraid these metrics for Messaging aren't available yet via the API. At this time, only the First reply time for messaging can be pulled using the Ticket metrics API.
@... Is there a timeline for this? This is really frustrating to not be able to report on this in Looker with the rest of our data.
Unfortunately, there is nothing specific that we can share yet at this time. If you have the time, I would suggest that you create a post in out Chat & Messaging topic in the Community to engage with other users with the same needs. Our Product Managers monitor the threads in the Product Feedback sections. It would be helpful if you can provide as much details as possible in your post, like specific datapoints or metrics that you need to pull. Thank you, Lauren!
Thanks @... - just did that!
Hey, any ETA about adding Agent name attribute to track the agent activities (like messages)on a more granular updates level (deeper than just the Assignee name)?
Hi, can we report on custom ticket fields for messaging tickets (outside of creating a custom attribute based on tags)?
According to the Messaging team, the option to slice the data by user – and not just by ticket assignee – is on the radar of Product. But, I'm afraid we don't have a specific timeline or more details that we can share at this time.
At this time, the only option to report on custom field data in the Messaging dataset is through the value tags. There are no definite plans yet to make the custom field data available through native attributes in this dataset. If you have time, I would recommend that you start a post in the Product Feedback topic in our community to engage with other users who have similar needs. If the Product team sees that there's high engagement in the thread, then hopefully it will be flagged for future roadmap planning.
Our Agents work on tickets from all channels over the course of a shift, so not being able to report on Replies & Solves for all tickets Agents manage in the same report is really crippling for our reporting (as is not having update-oriented metrics & attributes -- Assignee-based reporting completely erases record of an Agent's work if the ticket is passed to another Agent when they turn over shifts, which happens very frequently)
Without this info in one dataset, we can't report on Agent output performance in Explore & we can't pull it to our database to do so either at this point. Will Messaging Solves & Replies be available in the Ticket + Updates History datasets? Some components of those tickets are available to report on in the Ticket dataset, but not two of the most core metrics for reporting on Agent output performance.
There are no specific details or timeline that we can share at the moment, but according to our Product team, adding more options to report on agent activity within Messaging conversations are in the radar. I would suggest to start a thread in the Product Feedback topic which the team actively monitors; and if you can, add as much details about your reporting needs in your post.
Thanks Lauren!
None of these metrics seem to measure the number of times an inbound Message was served up to an agent but didn't get picked up (timed out and was served to a different agent after XX seconds). Any plans to make this metric available for reporting?
We really need visibility into the number of Messaging threads served up to an agent vs the number of threads they actually click "accept" on.
There are no definite details and timeline yet that we can share, but the Product team continues to work to add more options for reporting on Messaging activity. At the moment, there's not metric or attribute in the Messaging dataset to count the number of missed assignments. I didn't find an ongoing thread on this yet, but if you have time, I would suggest that you start a post in the Product Feedback topic in our Community to engage with more users with similar reporting needs. Our Product team actively monitor the feedback threads, and it would be great if you can share more info on what metrics you need in your reports.
Thank you, Harper.
Hi,
I believe we need agent name activity, not just assignee. Because when agent change from A to B, if we use assignee name. all the result would go to agent B. We need the calculation for agent A as well
That's right, at this time, there's no attribute for reporting on the actual agent who engaged with the user or sent the messages within the conversation. There's no definite plans yet to include this in future updates for the Messaging dataset, but if you have time, I would recommend that you create a new post in the General Product Feedback topic in our community to engage with other users who have similar needs and discuss possible workarounds. Conversations with a high level of engagement ultimately get flagged for product managers to review when they go through roadmap planning.
Hi!
I cannot find Two-touch and Multi-touch metric definition. Could it be possible to add it?
Thank you!
Bénédicte
The definition can be found in the following article:
Analyzing agent ticket touches with Explore
One-touch tickets: Tickets that were solved with only one agent reply.
Two-touch tickets: Tickets that were solved with two agent replies.
Multi-touch tickets: Tickets that were solved with more than two agent replies.
We would really like to have the URL that the customer contacted us from using the messaging widget to be part o a dataset so we can see the most popular pages for customers to request help from. Then we could cross reference with tags to see what they contact us about from each page.
Are there plans to have messaging reporting/metrics include things such as refusals? Meaning, when an agent is first assigned a message, but doesn't accept it in the allotted time and the message is therefore re-routed to another agent. This would be extremely helpful to have as refusals is a large part of KPIs.
Hello Tia, at the moment, there's no metric or attribute in the Messaging dataset that could measure refusal (missed assignments) and there is no timeline that we can share yet if this will become available in the future. For now, I would recommend creating a post on our Zendesk Explore Feedback page to engage with other users who have similar needs.
Apologies for delayed responses to asks here. Anne and Gabe - Thank you for your responses.
We do plan to support accepts and re-assignments (refusals) in our reporting.
Slicing data using the values in the custom ticket field is on the roadmap for this year.
Messaging solves are available as Ticket Solves in the Updates History dataset. Similarly, Assignee Updates in the Updates dataset can provide insights into the agents who have handled the ticket.
Support for more granular reporting for messaging and APIs are on our radar.
- Prakruti
Please sign in to leave a comment.