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:
- ///----<<<< User Inputs >>>>----
- deskURL = "https://desk.zoho.com";
- //Replace with your custom domain
- //Replace your Custom Field API Name to Update Desired Type Status Duration Ex: Open
- durationApiName = "cf_status_name";
- // ex: "cf_open_time"
- //Replace your Desired Status Type Name Ex: Open
- statusType = "On Hold";
- // Open or On Hold or Closed
- //Replace the Status Name
- statusName = "In Progress";
- // Ex: In Progress, Waiting for Reply, etc
- // ----<<<< Initial Configs >>>>----
- logs = Map();
- logs.insert("ticketId":ticketId);
- openHoursToUpdate = 0;
- openMinutesToUpdate = 0;
- onHoldHoursToUpdate = 0;
- onHoldMinutesToUpdate = 0;
- //---------------------------
- try
- {
- // ---- start your logic from here ----
- ticketStatusLifeCycleInfo = invokeurl
- [
- url :deskURL + "/api/v1/tickets/" + ticketId + "/statusLifeCycle"
- type :GET
- connection:"deskconnection"
- ];
- logs.insert("ticketStatusLifeCycleInfo":ticketStatusLifeCycleInfo);
- if(ticketStatusLifeCycleInfo != null && ticketStatusLifeCycleInfo.containsKey("statusLifeCycle") && ticketStatusLifeCycleInfo.get("statusLifeCycle").size() > 0)
- {
- for each statusInfo in ticketStatusLifeCycleInfo.get("statusLifeCycle")
- {
- statusType = statusInfo.get("statusType");
- statusName = statusInfo.get("status");
- if(statusType == statusType && statusName == statusName)
- {
- statusDuration = statusInfo.get("duration");
- if(statusDuration != null && statusDuration != "")
- {
- statusDuration = statusDuration.replaceAll(" hrs","");
- durationCollection = statusDuration.toCollection(":");
- hourDuration = durationCollection.get(0);
- minuteDuration = durationCollection.get(1);
- openHoursToUpdate = openHoursToUpdate + hourDuration.toNumber();
- openMinutesToUpdate = openMinutesToUpdate + minuteDuration.toNumber();
- }
- }
- }
- openHoursToUpdate = (openMinutesToUpdate / 60).toNumber() + openHoursToUpdate;
- openMinutesToUpdate = openMinutesToUpdate % 60;
- logs.insert("openHoursToUpdate":openHoursToUpdate);
- logs.insert("openMinutesToUpdate":openMinutesToUpdate);
- ticketUpdateParams = Map();
- ticketUpdateParams.insert("cf":{durationApiName:openHoursToUpdate + ":" + openMinutesToUpdate});
- logs.insert("ticketUpdateParams":ticketUpdateParams);
- ticketUpdate = invokeurl
- [
- url :deskURL + "/api/v1/tickets/" + ticketId
- type :PUT
- parameters:ticketUpdateParams + ""
- connection:"deskconnection"
- ];
- logs.insert("ticketUpdate":ticketUpdate);
- }
- }
- catch (errorInfo)
- {
- logs.insert("errorInfo":errorInfo);
- }
- info "logs: \n" + logs;
- logs.insert("errorInfo":errorInfo);
- 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
Recent Topics
Kaizen #190 - Queries in Custom Related Lists
Hello everyone! Welcome back to another week of Kaizen! This week, we will discuss yet another interesting enhancement to Queries. As you all know, Queries allow you to dynamically retrieve data from CRM as well as third-party services directly within
Need the ability to have read only fields on a form.
There needs to be functionality in Creator that allows a field on a form to be read only. Most screen building software applications have this capability. I know you can hide certain fields from specific users and that you can also make the whole form read only but that's not the functionality I need. I want to be able to create a form where certain fields are editable and other are for display purposes only (read only). For example if the form was displaying information on an item that the user
Reverse payment on accidentally closed invoice.
An invoice was closed accidentally with the full payment added. However, only partial payment was paid. How can I reopen the invoice and reverse this to update it to show partial payment?
New integration: Track booking page appointments in Google Analytics 4
Hello all, Greetings from the Zoho Bookings team! We’re excited to introduce our new Google Analytics 4 (GA4) integration designed to help you track booking activity, understand customer behavior, and measure marketing performance, all in one place. What
How to list emails in a folder, e.g. Inbox, on multiple pages when using Zoho mail webpage?
Something as shown in the figure. There are totally 50 emails in Sent folder. If "Mail per page" equals 20, then the Sent folder is split into 3 pages. When I wander through Sent folder, I can just select a specific page to jump to. BTW, it seems that
Zoho Calendar soft bounce on @hotmail.com and @yahoo.com email addresses
Hello, our Zoho calendar recently does not send the calendar invites to emails with hotmail and yahoo domains and comes back with a "soft bounce". other domains like Gmail works fine. Also sending "email" to the same emails to the above domains work well
ERROR CODE :512 - 5.4.4 DNS error:NXDOMAIN.
Suddenly we cant send mail, we are getting this error for all outbound mail to multiple domains.
Unveiling Cadences: Redefining CRM interactions with automated sequential follow-ups
Last modified on 01/04/2024: Cadences is now available for all Zoho CRM users in all data centres (DCs). Note that it was previously an early access feature, available only upon request, and was also known as Cadences Studio. As of April 1, 2024, it's
customer data security
We are exploring ways to enhance our within Zoho CRM. Our Goal: We want to fully integrate RingCentral with Zoho CRM to enable click-to-call functionality for our sales team. However, to comply with data privacy regulations and protect customer contact
Sync CRM inventory data with Zoho Books
I just switched everything over to ZoHo books, but I am trying to find out why the CRM Estimates, Invoices, and Sales Orders created in ZoHo CRM are not then duplicated in ZoHo Books? I had Quickbooks before, and had to do everything twice, I thought
mask Customer phone number and agents cant see customer phone number
Is there any way we can integrate Zoom Phone with Zoho CRM while ensuring that customer phone numbers remain masked? We need a solution where agents can make outbound calls but cannot see customer phone numbers. Please let us know if there is any solution
Email Reminders on Shared Calendars
How do we turn off the setting that emails reminders to everyone who has accepted or declined a calendar invite? If 8 of us have been invited to the same meeting, we receive 8 notifications for every step of the process, from invitation to decision.
How to refresh a ticket view ?
I am doing a widget where I send a rest api call to make a new draft to the ticket I am viewing. The issue is sometimes it refresh a ticket view and I can see inserted draft right away, but sometimes I do not see it even if it is inserted correctly and
Ugh! - Text Box (Single Line) Not Enough - Text Box (Multi-line) Unavailable in PDF!
I provide services, I do not sell items. In each estimate I send I provide a customized job description. A two or three sentence summary of the job to be performed. I need to be able to include this job description on each estimate I send as it's a critical
Supervisor Rules - Zoho Desk
Hi, I have set up a Supervisor Rule in Zoho Desk to send an email alert when a ticket has been on hold for 48 hours. Is there a way to change it so that the alert only sends once and not on an hourly basis? Thank you Laura
ResponseCode 421, 4.7.0 [TSS04] Messages from 136.143.188.51 temporarily deferred due to user complaints
Had email bounce. Let me know if you can fix this. Thanks. Michael
New Zoho triggers Google Dangerous flag due toabnormal charcters
Just signed up and doing my first email test. I sent it to my google email account but it got flagged as Dangerous" due abnormal characters. My DNS setup looks ok. Page snips attached Help Please Thanks, Rick DC PowerWorld
Is there a API to fetch tasks in a Board/Section
I am writing a scheduled function that retrieves all the tasks and send an reminder on cliq. I cannot seem to find a API to fetch tasks (by user / board / section) What are the way to fetch tasks?
Having trouble fetching contents of Zoho Connect Feeds using the API, requesting alternative API documentation.
I'm trying to retrieve feed/post data from Zoho Connect using the API but facing challenges with the current documentation. What I've tried: OAuth authentication is working correctly (getting 200 OK responses) Tested multiple endpoints: /pulse/nativeapi/v2/feeds,
Adding an Account Name to Tasks/Reminders
Does anyone know how to add the related account name to a task? When we look at the list of activities and when the reminders pop up, there is no way of quickly seeing who the account is.
Triggering Zoho Flow on Workdrive File Label
Right now Im trying to have a zoho flow trigger on the labeling/classification of a file in a folder. Looking at the trigger options they arent great for something like this. File event occurred is probably the most applicable, but the events it has arent
SendMail to multiple recipients
Hi, I'm trying to send an email to a list of recipients. Right now the "to" field is directed to a string variable. (List variables won't work here). In the string variable, how can I make it work? trying "user@app.com;user2@app.com" or "user@app.com; user2@app.com" just failed to send the emails. Ravid
Populate drop down field from another form's subform
Hello, I found how to do that, but not in case of a subform. I have a Product form that has a subform for unit and prices. A product might have more than one unit. For example, the product "Brocoli" can be sold in unit at 3$ or in box of 10 at 25 $. Both
Usar o Inventory ou módulo customizado no CRM para Gestão de Estoque ?
Minha maior dor hoje em usar o zoho é a gestão do meu estoque. Sou uma empresa de varejo e essa gestão é fundamental pra mim. Obviamente preciso que esse estoque seja visível no CRM, Inicialmente fiz através de módulos personalizados no próprio Zoho CRM,
Signup forms behaviour : Same email & multiple submissions
My use case is that I have a signup form (FormA) that I use in several places on my website, with a hidden field so I can see where the contact has been made from. I also have a couple of other signup forms (FormB and FormC) that slight differences. All
getting error in project users api
Hello, I'm getting a "Given URL is wrong" error when trying to use the Zoho Projects V3 API endpoint for adding users to a project. The URL I'm using is https://projectsapi.zoho.com/api/v3/portal/{portalid}/projects/{projectid}/projectusers/ and it's
Change total display format in weekly time logs
Hi! Would it be possible to display the total of the value entered in the weekly time log in the same format that the user input? This could be an option in the general settings -> display daily timesheet total in XX.XX format or XX:XX.
How to display historical ticket information of the total time spent in each status
Hi All, Hoping someone can help me, as I am new to Zoho Analytics, and I am a little stuck. I am looking to create a bar chart that looks back over tickets raised in the previous month and displays how much time was spent in each status (With Customer,
Zoho Community Weekend Maintenance: 13–15 Sep 2025
Hi everyone, We wanted to give you a heads-up that Zoho Community will undergo scheduled maintenance this weekend. During this period, some community features will be temporarily unavailable, while others will be in read-only mode. Maintenance Window:
Agent Performance Report
From data to decisions: A deep dive into ticketing system reports An agent performance report in a ticketing system provides a comprehensive view of how support agents manage customer tickets. It measures efficiency and quality by tracking key performance
Pourquoi dans zohobooks version gratuite on ne peut ajouter notre stock d'ouverture??
Pourquoi dans zohobooks version gratuite on ne peut ajouter notre stock d'ouverture ??
How can I adjust column width in Zoho Books?
One issue I keep running into is as I show or hide columns in reports, the column widths get weird. Some columns have text cut off while others can take a fourth of the page for just a few characters. I checked report layout guides and my settings, but
Invalid value passed for file_name
System generated file name does not send file anymore - what is the problem?
Custom Function for Estimates
Hey everyone, I was wondering if there was a way to automate the Subject of an estimate whenever one is created or edited: * the green box using following infos: * Customer Name and Estimate Date. My Goal is to change the Subject to have this format "<MyFirm>-Estimate
Search in module lists has detiorated
Every module has a problem with the search function :-/
YouTube Live #1: AI-powered agreement management with Zia and Zoho Sign
Hi there! We're excited to announce Zoho Sign’s first YouTube live series, where you can catch the latest updates and interact with our Zoho Sign experts, pose questions, and discover lesser-known features. We're starting off by riding the AI wave in
Search in module lists has detiorated
Every module has a problem with the search function :-/
Bigin: filter Contacts by Company fields
Hello, I was wondering if there's a way to filter the contacts based on a field belonging to their company. I.e.: - filter contacts by Company Annual Revenue field - filter contacts by Company Employee No. field In case this is not possibile, what workaround
Has Zoho changed the way it searches Items?
Right now all of our searches have broken and we can no longer search using the SKU or alias. It was fine last night and we came in this morning to broken.....this is impacting our operations now.
Refunds do not export from Shopify, Amazon and Esty to Zoho. And then do not go from Zoho inventory to Quickbooks.
I have a huge hole in my accounts from refunds and the lack of synchronisation between shopify , Amazon and Etsy to Zoho ( i.e when I process a refund on shopify/ Amazon or Etsy it does not come through to Zoho) and then if I process a manual credit note/
Next Page