Automation #13 - Auto assign tickets based on agent shift time

Automation #13 - Auto assign tickets based on agent shift time



This is a monthly series designed to help you get the best out of Desk. We take our cue from what's being discussed or asked about the most in our community. Then we find the right use cases that specifically highlight solutions, ideas and tips to optimize your customer support with the automation capabilities of Zoho Desk.
 
Business working in shifts need to adopt a different dynamic for customer support. For a seamless flow of tickets from one agent to another, it is important to avoid unnecessary delays that make angry customers. A simple two-step automation in Desk will let you ensure your incoming tickets are assigned to agents in the current shift. Giving your customer support teams to work in better co-ordination.
 
To achieve this first the ticket needs to be moved into the unassigned bucket. Then we use a custom function to achieve a round robin mechanism without load balancing to assign these tickets in the current shift.

As always, the first step to making the most of ZohoDesk's automation capabilities is to create a connection to be used in the custom function later. 

To create a  connection, carry out the following steps:
  1. Click on Setup > Developer Space > Connections 
  2. Click Create Connection
  3. In the Pick Your Service section, under Pre-Defined Services find and select Zoho OAuth
  4. In the Connection Details section, add zohodesk as the Connection Name and Connection LinkName
  5. In the Choose Scopes list, select all values that start with 'Desk.' and end with '.ALL' and then include Desk.search.READ, Desk.products.READ
  6. Click Create and Connect
  7. In the page that appears, click Connect
Now move the tickets to the unassigned bucket, by follow these steps:
  1. Go to Setup, and under Automation, click Workflows.
  2. On the left panel, under Workflows, click Rules > Create Rule.
    In the Basic Information section, carry out the following steps:
  3. In the Module drop-down menu, select Tickets.
  4. Enter a name and description for the rule.
  5. If you want to activate the rule right away, select the Active checkbox. Else, you can just create the rule now and activate it later, on the Rules page.
  6. Click Next.
    In the Execute on section, perform the following steps:
  7. Select the Create checkbox to execute this rule every time a new ticket is created.  
  8. Click Next.
    In the Criteria section, do not select any criteria and move to the next section.
    In the Actions section, carry out the following steps:
  9. Click the + icon and select Custom Functions > New
  10. Click Edit Arguments
  11. In the Name field type TicketID, and from the Value drop-down list select Ticket Id under Ticket Information.
    In the script window, input the Custom Function you find below:
    orgId = "paste orgId here";
    contactId = "paste contact ID here";
    TicketInfo = zoho.desk.getRecordById(orgId, "tickets", TicketID,"zohodesk");
    departmentId = TicketInfo.get("departmentId");
    agentId = TicketInfo.get("assigneeId");
    Param = Map();
    Param.put("departmentId", departmentId);
    Param.put("limit", "20");
    onlineagents = invokeurl
    [
    url: "
    https://desk.zoho.com/api/v1/onlineAgents?"
    type: GET
    parameters: Param
    connection:"zohodesk"
    ];
    if (onlineagents.notContains(agentId))
    {
    info zoho.desk.update(orgId, "tickets", TicketID,{"assigneeId":null},"zohodesk");

Note: navigate to Setup > Developer Space > API > get orgId and replace in custom function.


To achieve the round robin automation without load balancing, follow these steps:


Pre-requisite:
  1. In the Contacts Layout, create two fields:
    1. Add a multi line field and name it as Agent List
    2. Add a single line field and name it as Next Agent
  2. For the values, collect and save all the agentIds in the Agent List and the First Agent in the Next Agent Field. Please note the Agent List should be a comma separated values. 
To create the workflow rule, perform the following steps:
  1. Go to Setup, and under Automation, click Workflows.
  2. On the left panel, under Workflows, click Rules > Create Rule.
    In the Basic Information section, carry out the following steps:
  3. In the Module drop-down menu, select Tickets.
  4. Enter a name and description for the rule.
  5. If you want to activate the rule right away, select the Active checkbox. Else, you can just create the rule now and activate it later, on the Rules page.
  6. Click Next.
    In the Execute on section, perform the following steps:
  7. Select the Create checkbox to execute this rule every time a new ticket is created. 
  8. Click Next.
    In the Criteria section, do not select any criteria and move to the next section.
    In the Actions section, carry out the following steps:
  9. Click the + icon and select Custom Functions > New
  10. Click Edit Arguments
  11. In the Name field type TicketID, and from the Value drop-down list select Ticket Id under Ticket Information.
  12. In the script window, input the Custom Function you find below: 
orgId = "paste orgId here";
contactId = "paste contact ID here";
TicketInfo = zoho.desk.getRecordById(orgId, "tickets", TicketID,"zohodesk");
departmentId = TicketInfo.get("departmentId");
agentId = TicketInfo.get("assigneeId");
Param = Map();
Param.put("departmentId", departmentId);
Param.put("limit", "20");
checkAvail = invokeurl
[
url :"https://desk.zoho.com/api/v1/onlineAgents?departmentId=" + departmentId + "&include=mailStatus,phoneStatus,chatStatus,phoneMode,presenceStatus"
type :GET
connection:"zohodesk"
];
if (!checkAvail.toString().contains(agentId.toString()))
{
stopLoop = "false";
contactInfo = zoho.desk.getRecordById(orgId,"contacts",contactId);
allAgents = contactInfo.getJSON("cf").getJSON("cf_agent_list").toList();

elist = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14"};
for each  agent in elist
{
contactInfo = zoho.desk.getRecordById(orgId,"contacts",contactId,"zohodesk");
nextAgent = contactInfo.getJSON("cf").getJSON("cf_next_agent").toLong();
if(checkAvail.toString().contains(nextAgent.toString()) && stopLoop == "false")
{
assignTicket = zoho.desk.update(orgId,"tickets",TicketID,{"assigneeId":allAgents.get(allAgents.indexOf(nextAgent))},"zohodesk");
if(allAgents.indexOf(nextAgent).toLong() < allAgents.size().toLong() - 1)
{
updateContact = zoho.desk.update(orgId,"contacts",contactId,{"cf":{"cf_next_agent":allAgents.get(allAgents.indexOf(nextAgent) + 1)}},"zohodesk");
}
else
{
updateContact = zoho.desk.update(orgId,"contacts",contactId,{"cf":{"cf_next_agent":allAgents.get("0")}},"zohodesk");
}
stopLoop = "true";
}
else if(stopLoop == "false")
{
if(allAgents.indexOf(nextAgent).toLong() < allAgents.size().toLong() - 1)
{
updateContact = zoho.desk.update(orgId,"contacts",contactId,{"cf":{"cf_next_agent":allAgents.get(allAgents.indexOf(nextAgent) + 1)}},"zohodesk");
}
else
{
updateContact = zoho.desk.update(orgId,"contacts",contactId,{"cf":{"cf_next_agent":allAgents.get("0")}},"zohodesk");
}
}
}
}
Note: navigate to Setup > Developer Space > API > to get orgId and replace it in the custom function.
 


    • 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

    • ZIA in Zoho Cliq

      Is It possible to use the ZIA feature from Zoho Analytics in the Zoho Cliq?
    • Issue with “CC” and “Subject Details” of the initial mail when reply / replied all / forward using Zoho Mail Client (Desktop / Web Mail / Mobile App)

      It is observed that when I reply / reply all / forward a mail using Zoho Mail Client (Desktop / Web Mail / Mobile App), the “CC” and “Subject Details” are omitted from the mail which was replied/forwarded. However this is not the case with outlook mail
    • Unable to send Emails - 452 4.3.1 Temporary System Error

      Whene ever i request smtp server to send the email (without attachment). i recieve error "452 4.3.1 Temporary System Error"
    • I can't receive email

      I cannot receive any email sent to my Zoho email after the free upgrade plan trial is finished.
    • Help for the alisa adding

      Sorry, I would like to add a paypal alias on my domain email address. However, the system blocked it. How can I do it?
    • Problem with Writer and Workdrive

      Hi team, I’m the super admin for our Zoho One org. WorkDrive is active, and Zoho Docs is deprecated for our org. However, Zoho Writer cannot connect to WorkDrive at all — we’ve cleared cache, tried incognito, and restarted several times. I was able to
    • Lite plan attachment said 250mb but actually 25mb ?

      Lite plan attachment said 250mb but actually 25mb ? I can't attach over 25mb files, and can't receive mails has attached files over 25mb too
    • Zoho Books | Product updates | August 2025

      Hello users, We’ve rolled out new features and enhancements in Zoho Books. From the right sidebar where you can manage all your widgets, to integrating Zoho Payments feeds in Zoho Books, explore the updates designed to enhance your bookkeeping experience.
    • Constant color of a legend value

      It would be nice if we can set a constant color/pattern to a value when creating a chart. We would often use the same value in different graph options and I always have to copy the color that we've set to a certain value from a previous graph to make
    • Can no longer export as pdf

      In NOTEBOOK I am no longer able to export notes to pdfs as I used to be able to. When I hit that command it asks where I want to send it, but no matter what I chose there is no pdf attachment that shows up in order to send. Nothing happens.
    • Option to Customize Career Site URL Without “/jobs/Careers”

      Dear Zoho Recruit Team, I hope you are doing well. We would like to request an enhancement to the Career Site URL structure in Zoho Recruit. In the old version of the career site, our URL was simply: 👉 https://jobs.domain.com However, after moving to
    • Old vs New Value for Deleted Lookup Values

      Suppose the following scenario, where a value in a lookup is deleted: 1. User has countries form 2. Form A has a lookup to countries form 3. User selects Italy in Form A and saves it with the Italy ID 4. Form A report shows Italy 5. Italy is inadvertently
    • Desktop app doesn't support notecards created on Android

      Hi, Does anybody have same problem? Some of last notecards created on Android app (v. 6.6) doesn't show in desktop app (v. 3.5.5). I see these note cards but whith they appear with exclamation mark in yellow triangle (see screenshot) and when I try to
    • customize payment page

      Is there a way to customize, other than the theme colour, the payment page that customers are taken to from invoices? I can't seem to find a way. I just don't like the formatting of the current page and would like to make it look better. I've looked at
    • Are Environments Worth It?

      In concept, Environments in ZC is a great idea. I think the flow is pretty smart when you compare it to GitHub, especially for a low code audience. However, in practice, I've found it to be unpredictable, and I've only used it a few times. Aside from
    • Enhanced duplicate check for Leads in CRM

      Hello Everyone, We are excited to announce that you can now check for duplicate entries in leads by comparing them with similar records in the Contacts Module. Previously, when you added a lead, only the converted leads were checked for duplicates. This
    • Pause(1);

      I'm using scheduler to invoke an interaction via http post with an external service. The schedule code uses a for-each loop that runs so fast my external application's log files get messed-up (they are named by date-time stamp). What I'm suggesting is
    • Integration Request: Elementor

      Integrating Zoho CRM forms with Elementor, the most popular page builder on Wordpress, would be great. I use it for our site, goenergylink.com, and I have had to use Zapier webhooks to be able to connect it with Elementor. The one issue I have run into
    • Vertical images displayed as horizontal

      Some pictures that originally are in vertical position are displayed in horizontal after the upload. It seems that system rotates them by 90 degrees. How can I fix this issue?
    • Ability to Change Visibility of Published YouTube Videos

      Hi Zoho Social Team, How are you? We would like to request an enhancement in Zoho Social regarding the management of already published youtube videos. Currently, after publishing a youtube video through Zoho Social, there is no option to change its visibility
    • Adding anchor links in Zoho CRM email templates

      I know you can add anchor link in Campaigns, but I dont see the option to that in the CRM email template. Am I missing something?
    • Support “Never End” Option for Recurring Meetings in Zoho Meeting

      Hello Zoho Meeting Team, Hope you are doing well. We would like to request support for creating recurring meetings with no end date in Zoho Meeting. Currently, when scheduling a recurring meeting, Zoho Meeting requires us to select a specific end date.
    • openUrl in blueprints

      My customer wants to open a URL at the end of a blueprint transition. Seems this isn't possible right now but it would be very useful. In this thread, https://help.zoho.com/portal/en/community/topic/openurl-not-working the Zoho agent said that it's logically
    • Is it possible to pull the Zoho desk data into Zoho analytics in real time

      Hi - I am looking to add more dashboards and reports of Zoho Desk in analytics. I see there is a schedule to pull the data into analytics, but I'm wondering if there is an option to pull the data in real time instead of a specific interval?
    • CRM x WorkDrive: File storage for new CRM signups is now powered by WorkDrive

      Availability Editions: All DCs: All Release plan: Released for new signups in all DCs. It will be enabled for existing users in a phased manner in the upcoming months. Help documentation: Documents in Zoho CRM Manage folders in Documents tab Manage files
    • Introducing the revamped What's New page

      Hello everyone! We're happy to announce that Zoho Campaigns' What's New page has undergone a complete revamp. We've bid the old page adieu after a long time and have introduced a new, sleeker-looking page. Without further ado, let's dive into the main
    • Ability to Add YouTube Video to Playlist During Publishing

      Hi Zoho Social Team, How are you? While publishing YouTube videos through Zoho Social, we noticed that the platform currently does not allow selecting a playlist at the time of publishing. Instead, we can only add the video to a playlist after it has
    • Introducing Zoho Creator's 2025 Release Projection 2

      Hello Creators! I'm Prakash, from the Creator product management team, and today I'm delighted to unveil our next set of features as part of Release Projection 2 for 2025. With thoughtful analysis and planning, we've curated powerful new capabilities
    • Sharing Form Ownership Among Multiple Users

      I would really like the ability to share form ownership among multiple users. It's frustrating to me that if a co-worker wants to make an edit to a form, I have to transfer ownership to them. It would be great if forms could act like google forms, where multiple people can edit a form and view responses. 
    • Marketer’s Space - Ace Your Spooky-Season Marketing with Pre-designed Templates in Zoho Campaigns

      Hello marketers, Welcome back to another post in Marketer’s Space! We’re in Q4, which means that you have endless opportunities to connect with your audience, starting with Halloween campaigns! In this post, we’ll show you how to design the perfect Halloween
    • Zia expands to China with native features and DeepSeek-powered generative AI features

      Hello everyone, We are glad to support Zia native features and Zia generative AI features for our customers in China. From hereon, all AI-features in Desk will be accessible in China data center with the integration of DeepSeek generative AI model. DeepSeek
    • Email in each module

      We have a contact ,module which then has a link to customer assets which in turn the asset has a multiple link to service visits. When we link assets to customers we choose by name and it brings over the associate email via the lookup. Great feature.
    • Global Search placement in the new UI

      Having a hard time with the global search placement in the UI redesign. Surely I can't be the only one. Previously global search placement was perfect. A bar at the top/center of the page. Exactly where you would expect it to be. Since the new UI has
    • Introducing Skill-Based Ticket Assignment

      The goal of every support team is to provide great support, and to do so as fast as they can. To make this possible, it is important that agents spend their time judiciously, especially when they're dealing with a large number of tickets of varying urgency
    • Kaizen #213 - Workflow APIs - Part 1

      Welcome to another week of Kaizen! If you have ever managed complex business processes, you know that Workflows are the quiet backbone of any well-run business process. They keep things moving; assigning owners, sending alerts, keeping deals on track,
    • Browser and address bar hide

      Hi, How i can do hide the address bar with browser headline when i am working on the sheet, because i am using (freeze panes) which i want visible for full work. For your reference here i am attached the screen shot and marked yellow lines which really
    • Cells Border

      Hi I am using Zoho Sheet on S Tab , is there any option to make all border of any cell at once. I think this is very basic which we are missing. This is available in mobile but not in tab or suggest if i am missing this function. And for Tab can you give
    • Credit Management: #2 Configuring Right Payment Terms for Credit Control

      Think about the last time you ordered something online and saw that little note at the checkout, "Pay on Delivery" or "Pay later". It's simple, but it actually sets the tone. As a business owner, you know exactly when payment is expected. Now, imagine
    • Zobot and Sales IQ

      What will happen to the Zoho Sales IQ being integrated to the website after creating the Zobot on the website too
    • Workflow workdrive rollout

      Hi! When will workflow be rolled out to all users? Thanks.
    • Next Page