Automation#22 Track Ticket Duration at Specific Status

Automation#22 Track Ticket Duration at Specific Status



Hello Everyone!

Welcome back to the Community Learning Series! Today, we explore how Zylker Techfix, a gadget servicing firm, boosted productivity by tracking the time spent at a particular ticket status in Zoho Desk. 

Zylker Techfix customized Zoho Desk’s ticket statuses to align with their servicing process. Here’s their workflow: when a gadget was submitted for service, the ticket entered “Open” status. After an initial examination, it moved to “Service” status, mapped to the “Hold” type while repairs were underway. Once repairs were complete, the ticket progressed to “Billing” and then to “Closed” after payment and delivery. To improve operations, Zylker Techfix wanted to know how long tickets stayed in “Service” status, giving them insights into potential delays and resource use. With a custom function, they tracked this time in a custom field, then used it to generate reports that highlighted areas for process improvement.

With this custom function, you can gain a clear view of your support timeline, identify bottlenecks, and serve clients more efficiently. Let’s dive into how you can implement this custom function to refine your own operations and drive productivity forward.

Prerequisites
1. Create a Custom Field
To track ticket duration at a StatusName (call it In progress) mapped to the Status Type On Hold
     
      1.1 Go to Setup (S) >> Customization >> Layouts and Fields.
             Select Tickets under Layouts and the Department in which you would like to track the ticket duration. 
      1.2 Create a custom single-line field in the Tickets layout of the respective department. 
            1.2.1 Click on the layout, add a single-line field with a label StatusTime. 
                      You can label the field with your preferred name. 
      1.3 Note the API names for the single-line field to insert into the custom function.     
            To find the API name, click the Gear wheel icon in the single-line field.
            Click on Edit Properties, and you will find the API Name under the Edit Field. Refer to Create Custom Fields

2. Create a connection
      2.1 Go to Setup(S) and choose Connections under Developer Space.
      2.2 Click Create Connection.
      2.3 Select Zoho Desk under Default Connection.
      2.4 Set the connection name as deskconnection.
      2.5 Under Scope, choose the below scope values:
             Desk.tickets.READ
             Desk.tickets.UPDATE
      2.6 Click Create and Connect.
      2.7 Click Connect and click Accept.
Connection is created successfully.

Create a Workflow Rule
1. Go to Setup, choose Workflows under Automation
2. Under Workflows, click Rules >> Create Rule.

In the Basic Information section,
3. Select Tickets from the drop-down menu under Module.
4. Enter a Rule Name and Description for the rule.
5. If you want to activate the rule right away, select the Active checkbox. Else, create the rule and activate it later.
6. Click Next.
 
In the Execute on section, follow these steps:
7. Select Field Update, Choose Status.  
8. Click Next.
 
9. Leave the Criteria section blank and click Next. (Add a criteria if you require it.) 
10. In the Actions section, click the + icon and select New next to Custom Functions.
11. Enter a Name and Description for the custom function.
12. Under Argument Mapping, give a desired Method Name. Map the arguments as below: 
      12.1 In the Argument Name field, type ticketId and from the Value drop-down list, select Ticket Id under the Tickets Section.                                         
13. In the script window, insert the Custom Function given below:
  1. ///----<<<< User Inputs >>>>----
  2. deskURL = "https://desk.zoho.com";
  3. //Replace with your custom domain
  4. //Replace your Custom Field API Name to Update Desired Type Status Duration Ex: Open 
  5. durationApiName = "cf_status_name";
  6. // ex: "cf_open_time"
  7. //Replace your Desired Status Type Name Ex: Open
  8. statusType = "On Hold";
  9. // Open or On Hold or Closed
  10. //Replace the Status Name 
  11. statusName = "In Progress";
  12. // Ex: In Progress, Waiting for Reply, etc
  13. // ----<<<< Initial Configs >>>>----
  14. logs = Map();
  15. logs.insert("ticketId":ticketId);
  16. openHoursToUpdate = 0;
  17. openMinutesToUpdate = 0;
  18. onHoldHoursToUpdate = 0;
  19. onHoldMinutesToUpdate = 0;
  20. //---------------------------
  21. try 
  22. {
  23. // ---- start your logic from here ----
  24. ticketStatusLifeCycleInfo = invokeurl
  25. [
  26.   url :deskURL + "/api/v1/tickets/" + ticketId + "/statusLifeCycle"
  27.   type :GET
  28.   connection:"deskconnection"
  29. ];
  30. logs.insert("ticketStatusLifeCycleInfo":ticketStatusLifeCycleInfo);
  31. if(ticketStatusLifeCycleInfo != null && ticketStatusLifeCycleInfo.containsKey("statusLifeCycle") && ticketStatusLifeCycleInfo.get("statusLifeCycle").size() > 0)
  32. {
  33.   for each  statusInfo in ticketStatusLifeCycleInfo.get("statusLifeCycle")
  34.   {
  35.   statusType = statusInfo.get("statusType");
  36.   statusName = statusInfo.get("status");
  37.   if(statusType == statusType && statusName == statusName)
  38.   {
  39.     statusDuration = statusInfo.get("duration");
  40.     if(statusDuration != null && statusDuration != "")
  41.     {
  42.     statusDuration = statusDuration.replaceAll(" hrs","");
  43.     durationCollection = statusDuration.toCollection(":");
  44.     hourDuration = durationCollection.get(0);
  45.     minuteDuration = durationCollection.get(1);
  46.     openHoursToUpdate = openHoursToUpdate + hourDuration.toNumber();
  47.     openMinutesToUpdate = openMinutesToUpdate + minuteDuration.toNumber();
  48.     }
  49.   }
  50.   }
  51.   openHoursToUpdate = (openMinutesToUpdate / 60).toNumber() + openHoursToUpdate;
  52.   openMinutesToUpdate = openMinutesToUpdate % 60;
  53.   logs.insert("openHoursToUpdate":openHoursToUpdate);
  54.   logs.insert("openMinutesToUpdate":openMinutesToUpdate);
  55.   ticketUpdateParams = Map();
  56.   ticketUpdateParams.insert("cf":{durationApiName:openHoursToUpdate + ":" + openMinutesToUpdate});
  57.   logs.insert("ticketUpdateParams":ticketUpdateParams);
  58.   ticketUpdate = invokeurl
  59.   [
  60.   url :deskURL + "/api/v1/tickets/" + ticketId
  61.   type :PUT
  62.   parameters:ticketUpdateParams + ""
  63.   connection:"deskconnection"
  64.   ];
  65.   logs.insert("ticketUpdate":ticketUpdate);
  66. }
  67. }
  68. catch (errorInfo)
  69. {
  70. logs.insert("errorInfo":errorInfo);
  71. }
  72. info "logs: \n" + logs; 
  73. logs.insert("errorInfo":errorInfo);
  74. info "logs: \n" + logs;
NOTE
a. In Line 2, Replace ".com" with the domain extension based on your Data Center.
b. In Line 5, add the API name of the custom field created within the Tickets layout. 
c. In Line 8 and line 11, enter the status type and status name. 
14. Click Save to save the custom function.
15. Click Save again to save the workflow.

Creating Ticket Tracking Reports
You can generate Reports under Analytics to view the time duration of your tickets in one go. 
Go to the Analytics module >> Choose Reports >> Add Report >> Select Tickets module and Time Entry under Related modules. Refer to Create Custom Report 

Let us know how this custom helps improve your ticketing process.

Until next week,
Warm regards,
Lydia | Zoho Desk 


      • Sticky Posts

      • Register for Zoho Desk Beta Community

        With the start of the year, we have decided to take a small step in making the life of our customers a little easier. We now have easy access to all our upcoming features and a faster way to request for beta access. We open betas for some of our features
      • Share your Zoho Desk story with us!

        Tell us how you use Zoho Desk for your business and inspire others with your story. Be it a simple workflow rule that helps you navigate complex processes or a macro that saves your team a lot of time; share it here and help the community learn and grow with shared knowledge. 
      • Tip #1: Learn to pick the right channels

        Mail, live chat, telephony, social media, web forms—there are so many support channels out there. Trying to pick the right channels to offer your customers can get pretty confusing. Emails are most useful when the customer wants to put things on record. However, escalated or complicated issues should not be resolved over email because it's slow and impersonal.  When you need immediate responses, live chat is more suitable. It's also quick and convenient, so it's the go-to channel for small issues. 
      • Welcome to Zoho Desk Community - Say hello here!

        Hello everyone! Though we have been here for a while, it’s time to formally establish the Zoho Desk Community; we’re really happy to have you all here! This can be the place where you take a moment to introduce yourself to the rest of the community. We’d love to hear all about you, what you do, what company or industry you work for, how you use Zoho Desk and anything else that you will like to share! Here’s a little about me. I am Chinmayee. I have been associated with Zoho since 2014. I joined here
      • Webinar 1: Blueprint for Customer Service

        With the launch of a host of new features in Zoho Desk, we thought it’ll be great to have a few webinars to help our customers make the most of them. We’re starting off with our most talked about feature, Blueprint in Zoho Desk. You can register for the Blueprint webinar here: The webinar will be delivered by our in-house product experts. This is a good opportunity to ask questions to our experts and understand how Blueprint can help you automate your service processes. We look forward to seeing

        • Recent Topics

        • Unlock your Zoho Vault with OneAuth, Windows Hello, TouchID, YubiKey, and many more!

          Hello everyone, We are thrilled to introduce one of the most highly requested features – the ability to unlock your Zoho Vault using various authenticators. The primary purpose of a password manager is to remember just one master password and securely
        • Creator roadmap for the rest of 2022

          Hi everyone, Hope you're all good! Thanks for continuing to make this community engaging and informative. Today we'd like to share with you our plans for the near future of Creator. We always strive to strike a good balance of features and enhancements
        • How can I get base64 string from filecontent in widget

          Hi, I have a react js widget which has the signature pad. Now, I am saving the signature in signature field in zoho creator form. If I open the edit report record in widget then I want to display the Signature back in signature field. I am using readFile
        • Add Setting Values to the Rules

          Hi, It would be great to use the rules to set values in fields for submission, such as if a Type is X then set the Field Y to 10. Thanks Dan
        • So we ran with it for the week

          In our company i bit the bullet and ran with FSM for a whole week. Service calls, deliveries and surveys. Covering about 30-120 miles a day to domestic properties. Loved the appointment list and satnav integration. Loved the timer to measure the appointments.
        • Is there a way to set Document Owner/Sender via the API

          When sending requests for zoho sign, it would seem zoho uses the id of the person that created the zoho api cred to determine the owner_id, is there a way to set a default for this?
        • What's New - September 2025 | Zoho Backstage

          September has been a different month for Zoho Backstage. Instead of rolling out a long list of new features, we focused on something just as important: Performance, reliability, and stability The event season is in full swing, and organizers are running
        • Prevent stripping of custom CSS when creating an email template?

          Anyone have a workaround for this? Zoho really needs to hire new designers - templates are terrible. A custom template has been created, but every time we try to use it, it strips out all the CSS from the head.  IE, we'll define the styles right in the <head> (simple example below) and everything gets stripped (initially, it saves fine, but when you browse away and come back to the template, all the custom css is removed). <style type="text/css"> .footerContent a{display:block !important;} </style>
        • Stock Quotes/Spreadsheet

          It would be nice if we could download security and mutual fund prices from Yahoo Finance (or?) in order to maintain an up to date investment portfolio on Zoho. Any chance?
        • link to any Belgian bookkeeping software?

          Hello, Does anyone on this Forum can help me with the question whether the ZOHO CRM (Invoices) or ZOHO Book can be linked to software that is used for Belgian Bookkeeping/accountancy? By linking, I mean either with the help of a middleware program or either by the ability to export the custom made reports as CSV-files... If someone has an experience with online CRM-Accountancy in Belgium, with ZOHO (or other), it would be great to read it... Thank you
        • marketing automation

          wants to know about the zoho marketing automation
        • Problems with email templates (HTML - Outlook)

          Hi there, I've been trying to create a newsletter from the template "Business 4". Everything looks great in the preview, but when I send it to my Outlook inbox, the layout doesn't seems to stick. More particularly: - The line-height is way more reduced, even though I used the line-height tool from the template - Columns but they are sometimes misaligned - Font size is not always the one I've selected. Could you help? Thanks!
        • How to create a drop down menu in Zoho Sheets

          I am trying to find out, how do I create a drop down option in Zoho sheet. I tried Data--> Data Validation --> Criteria --> Text  --> Contains. But that is not working, is there any other way to do it.  Thanks in Advance.
        • Introducing Keyboard Shortcuts for Zoho CRM

          Dear Customers, We're happy to introduce keyboard shortcuts for Zoho CRM features! Until now, you might have been navigating to modules manually using the mouse, and at times, it could be tedious, especially when you had to search for specific modules
        • Zoho CRM's custom views are now deployable from sandboxes

          This feature is now available for users in the AU, JP, and CN DCs. This feature is now available for users in CA and SA DCs. New update: This feature is now available for users in all DCs. Hello everyone, We're excited to announce that you can now deploy
        • Zoho One - Syncing Merchants and Vendors Between Zoho Expense and Zoho Books

          Hi, I'm exploring the features of Zoho One under the trial subscription and have encountered an issue with syncing Merchant information between Zoho Expense and Zoho Books. While utilizing Zoho Expense to capture receipts, I noticed that when I submit
        • Limit in number of records for subforms and multi-select lookup fields

          It is my understanding that a maximum of 100 items can be selected in a multi-select lookup field, and that a total of 200 items can be selected in total between both subforms in a given module.  Are there any ways to work around this limitation if we
        • Kaizen #136 - Zoho CRM Widgets using ReactJS

          Hey there! Welcome back to yet another insightful post in our Kaizen series! In this post, let's explore how to use ReactJS for Zoho CRM widgets. We will utilize the sample widget from one of our previous posts - Geocoding Leads' Addresses in ZOHO CRM
        • Getting Permission denied to access this portal.

          We have one user that can't login to projects even though access has been granted. This user can login to accounts.zoho.com but when login to https://projects.zoho.com/portals.do we get this error: Unauthorized login to this portal Permission denied to access this portal. Check your portal URL again. Sometimes we also get "server too busy". We have tried killing sessions (in accounts.zoho.com) and we have deleted cookies; and tried different computers and still the same problem. All others use can
        • Does Zoho Docs have a Line Number function ?

          Hi, when collaborating with coding tasks, I need an online real time share document that shows line numbers. Does Zoho's docs offer this feature ? If yes, how can I show them ? Regards, Frank
        • Setting Default Views for Custom, List and Detail Views

          Hey, Is it possible to set a default custom view, list view and detail view for a module for every user? We are onboarding a lot of non technical people that struggle with these things. Setting the views as default would really help. Btw: also setting
        • Filter Based API request in Zoho Books using POSTMAN

          How do I GET only specified CONTACTS based on created time or modified time in Zoho Books using POSTMAN. In the api documentation, it is written we can apply filters but I need a sample request.
        • URL validation

          We use an internal intranet site which has a short DNS name which Zoho CRM will not accept.   When attempting to update the field it says "Please enter a valid URL". The URL I am trying to set is http://intranet/pm/ Our intranet is not currently setup with a full DNS name and given the amount of links using the shortname probably isn't a feasible change for us.
        • Has anyone been experiencing slow issues?

          Dear all, I just want to ask if anyone has been experiencing slow issues with Zoho Creator in the past two weeks? I worked with the ISP to improve network quality by changing routes and upgrading bandwidth, but nothing changed. I am in Vietnam.
        • Zoho Projects Roadshows 2025 - USA

          Dear Users, After an amazing response to our roadshows in 2024, we are excited to be back for the second year in a row! Join our team of experts as they walk you through the most-used features in Zoho Projects, explore powerful automation capabilities,
        • Billing Management: #6 Usage Billing in SaaS

          Imagine a customer shuffling across multiple subscriptions, a streaming service, a music app, cloud storage, and a design tool. Each one charges a flat monthly fee, regardless of how much or how little they use. Some months, the customer barely opens
        • Is there anyone who has been experiencing issues regarding the Zoho Creator Certification Website in the past 2 weeks?

          Dear all , I just wanted to ask is there anyone who was planning on taking the Zoho Creator Developer Certification Test in the past 2 weeks and have been facing errors stating that the website is under maintennance and also not allowed to access the
        • Allow syncing Activities from other applications

          Marketing Automation could be a much more powerful platform if you were able to sync activities into the platform (e.g. purchase, donation, etc) outside of a user doing something on your website. I'd love it if you could sync Custom CRM Modules as activities,
        • Global Sets for Multi-Select pick lists

          When is this feature coming to Zoho CRM? It would be very useful now we have got used to having it for the normal pick lists.
        • Integración Books para cumplir la ley Crea y Crece y Ley Antifraude (VeriFactu)

          Hola: En principio, en julio de 2025, entra en vigor la ley Crea y Crece y Ley Antifraude (VeriFactu). ¿Sabéis si Zoho va a cumplir con la ley para cumplir con la facturación electrónica conectada a Hacienda? Gracias
        • Ask the Experts #1

          Hello everyone! It’s time to transform how you manage projects. Define the processes. Automate the tasks. Streamline the workflows. Let us dive into automation in Zoho Projects — from configuring workflows and custom functions to building triggers, using
        • How to overcome Zoho Deluge's time limit?

          I have built a function according to the following scheme: pages = {1,2,3,4,5,6,7,8,9,10}; for each page in pages { entriesPerPage = zoho.crm.getRecords("Accounts",page,200); for each entry in entriesPerPage { … } } Unfortunately, we have too many entries
        • Checking if Creator has Change History

          Like zForms - whenever an entry was updated there's an option to attached change history to email notif. Trigger -> Successful form submission
        • how to use validation rules in subform

          Is it possible to use validation rules for subforms? I tried the following code: entityMap = crmAPIRequest.toMap().get("record"); sum = 0; direct_billing = entityMap.get("direct_billing_details"); response = Map(); for each i in direct_billing { if(i.get("type")
        • Adding contact role to a specific deal js sdk malfunctioning

          i was trying to add the contact role to a specific deal contact but repeatedly i am getting this error: { "code": "SUCCESS", "details": { "statusMessage": { "code": "INVALID_DATA", "details": { "expected_data_type": "jsonobject" }, "message": "body",
        • Q3 Updates from Bigin!

          Hey Biginners, Hope you’re doing great! As we approach the end of 2025, we truly hope Bigin has been a part of helping you build your dream business this year! We've been busy working behind the scenes to bring you features that make running your business
        • Client Script | Update - Introducing Subform Events and Actions

          Are you making the most of your subforms in Zoho CRM? Do you wish you could automate subform interactions and enhance user experience effortlessly? What if you had Client APIs and events specifically designed for subforms? We are thrilled to introduce
        • {"errors":[{"id":"500","title":"Servlet execution threw an exception"}]}

          Here's the call to move a file to trash. The resource_id is accurate and the file is present. header = Map(); header.put("Accept","application/vnd.api+json"); data = Map(); data_param1 = Map(); att_param1 = Map(); att_param1.put("status",51); data_param1.put("attributes",att_param1);
        • Converting Sales Order to Invoice via API; Problem with decimal places tax

          We are having problems converting a Sales Order to an Invoice via API Call. The cause of the issue is, that the Tax value in a Sales Order is sometimes calculated with up to 16 decimal places (e.g. 0.8730000000000001). The max decimal places allowed in
        • Zoho Canvas - Custom templates for related lists

          Hi, I see that the example pages load always one of our related lists in a custom template, but I dont know how to work with that:  1) How can i make my own custom templates for related lists?  2) Where and how can i check out existing custom templates?
        • Next Page