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

        • Integration with...

          Dear Zoho Commerce team, Please could you consider the integration within Zoho Commerce / Inventory and Qapla'? (https://www.qapla.it/en/) This app is better than Aftership in many ways: - Aftership integration require PRO plan and price start from more
        • Scan and Fill CRM Lookup Field

          Not sure if there is a reason why this isn't possible or if I'm just missing it. But I would like to be able to use the scan and fill feature on the mobile app to prefill the CRM lookup field and fetch the rest of the data in the form.
        • Customer Management: #2 Organize Customers to Enhance Efficiency

          When Ankit started his digital services firm, things felt simple. A client would call, ask for a website or a one-time consultation, Ankit would send an invoice, get paid, and move on. "Just one client, one invoice. Easy.", he thought. Fast forward a
        • Zoho Mail and Zoho Flow integration to automatically create ToDo tasks from outbound emails

          How do i setup Zoho Mail and Zoho Flow integration to automatically create ToDo tasks from outbound emails
        • Attachments between Zoho and Clickup, using Flow.

          Olá suporte Flow, tudo bem ? Estamos usando o flow para integrar Zoho Desk com o clickup. Não localizamos a opção de integrar anexos entre do zoho Desk para o clickup. Gostaríamos de saber se migrando para o plano pago, teremos suporte para fazer a integração
        • Adding an Account on Zoho Mail Trigger in Zoho Flow

          I'm trying to create a flow using the zoho mail trigger "Email Receive". My problem is that when I select this trigger, it only shows one account from the account dropdown. I'm planning to assign it on a different email. How can I add other email ad
        • Linnworks

          Unless I am missing something, the Linnworks integration is very basic and limited. I have reached out to support but the first response was completely useless and trying to get a reply in a timely manner is very difficult. Surely I should be able to
        • Test data won't load

          I am using a Flow to receive orders from WooCommerce and add them to a Zoho Creator app. I recently received an order which failed, and when attempting to test the order I found that it just shows a loading animation and shows up in the history as "queued."
        • AddHour resets the time to 00:00:00 before adding the hour.

          Based on the documentation here: https://www.zoho.com/deluge/help/functions/datetime/addhour.html Here's my custom function: string ConvertDateFormat(string inputDate) { // Extract only the date-time part (before the timezone) dateTimePart = inputDate.subString(0,19);
        • WhatsApp Link is not integrating

          Hello, I am using zoho flow. when new row added in google sheet it sends email to respected person. In email body I have a text "Share via WhatsApp". behind this text I putted a link. But when the recipient receives email and wants to share my given info
        • Zoho flow - Webhook

          If I choose an app as a trigger in Zoho Flow, is it still possible to add a webhook later in the same flow?
        • Zoho Flow + Bigin + Shopify

          We are testing Zoho Flow for the first time and want to create a flow based in first purchases. When a client makes his first order, we're going to add the "primeiracompra" (first order) tag to his account in Shopify (it's not efficient, but that's the
        • Adding multiple Attendee email addresses when adding a Zoho Calendar event in Zoho Flow

          I am trying to integrate Notion and Zoho Calendar via Zoho Flow. However, the Attendee email address supported by Zoho Calendar - Create event only supports one email address, so I am having difficulty implementing automation to automatically register
        • Is it The Flow? Or is it me?

          I want to do some basic level stuff, take two fields from a webhook, create a zsheet from a template using one field with date appended, create a folder using both fields as the name, and put the zsheet into that folder. I was going to elaborate - but
        • Having problem with data transferring from Google sheet to ZMA

          When connecting Google sheet with Zoho marketing automation it is having the email as a mandatory field. Can I change it as non-mandatory field or is there any other way to trasnfer data from google sheet to ZMA. I have leads which we get from whatsapp,
        • Dropbox to Workdrive synchronisation

          I want to get all the files and folders from Dropbox to Workdrive and each time a new file or folder is added in dropbox i want it to be available in Workdrive and wise versa. Sync Updates to Files Trigger: "File updated" (Dropbox). Action: "Upload file"
        • Microsoft Planner Task to Service Desk Plus Request - error n4001

          Hi there. I'm trying to create a flow that will create a new request in ServiceDesk Plus when a new task is created in Microsoft Planner. I have succesfully connected both Planner and ServiceDesk Plus, and have configured the 'create request' section
        • Trailing Space in "Date and time scheduled "

          I am trying to use the Zoho Projects - Create event action in a flow. It is failing with the output error as: "Action did not execute successfully due to an unknown error. Contact support for more details." The input is: { "Duration - Minutes": 30, "Project":
        • Project name by deal name; project creation via flow

          Hello, I want to create a project in zoho projects using flow by a trigger at the crm. My trigger is the update of a deal (stage). The project name should be the account name/ deal name. But I dont find the solution to it. Can you please give me the answer
        • Slack / Zoho Flow; Repl

          I am trying to add a comment in a zoho ticket when someone reply's to a message in a thread. The Message posted to public channel trigger doesn't seem to pick up thread messages. I also cannot use the thread_ts field as it doesn't seem to pull that in.
        • Get Holiday ready with Zoho Mail's Templates

          As the holiday season approaches, it’s time to step away from work and unwind. You may not be able to respond to every email or send individual messages to wish everyone holidays greetings—but It is still important to stay connected. How do you send thoughtful
        • Customize folder permissions in a Team Folder in a Team Folder via zoho Flow

          HI All, on the nth level folder of a team folder I would like to Customize folder permissions when it's created in the flow of Creating folders. That last level I only want to grant access to a specific group, goup ID 201XXXXXXXX. Can you help with a
        • Associating a Candidate to a Job Listing

          Hello, I am trying to use Zoho Forms embedded on my website for candidates to apply for a job opening. I want the form then to tie directly with zoho recruit and have the candidate be automatically inputed into Recruit as well as associated with the specific
        • Automate reminder emails for events

          Hi team, I am trying to automate send event reminders via zoho campaign to my attendees 1 day prior to my scheduled events. I used zoho flow, autoresponder in zoho campaign, as well as I used workflow and automation - but none of these methods are working.
        • Update related module entry Zoho Flow not working with custom module ?

          Hi everyone. I am facing an issue here on Zoho Flow. Basically what I am doing is checking when a module entry is being filled in with an Event ID. Event is a custom module that I created. If the field is being filled in I fetch the contact with its ID
        • How to disable time log on / time log off

          Hi We use zoho people just to manage our HR Collaborators. We don't need that each persona check in and out the time tracker. How to disable from the screen that ?
        • Zoho Flow - Add to Google Calendar from trigger in Zoho Creator App

          Hello! New to Zoho Flow, but I believe I have everything setup the way it should be however getting an error saying "Google Calendar says "Bad Request". Any idea where I should start looking? Essentially some background: Zoho Creator app has a trigger
        • Email authentication

          أريد التحقق من البريد الإلكتروني
        • What’s New in Zoho Analytics – December 2025

          December is a special time of the year to celebrate progress, reflect on what we have achieved, and prepare for what’s ahead! As we wrap up the year, this month’s updates focus on refining experiences, strengthening analytics workflows, and setting the
        • Marketing Tip #12: Earn trust with payment badges and clear policies

          Online shoppers want to know they can trust your store. Displaying trust signals such as SSL-secure payment badges, return and refund policies, and verified reviews shows visitors that your store is reliable. These visual cues can turn hesitation into
        • The improved portal experience: Introducing the template view for inventory modules, enhanced configurations, and PDF export support

          Availability: Open for all DCs. Editions: All Hello everyone, You can now achieve a seamless, brand-aligned portal experience with our enhanced configuration options and the new template view for inventory modules. Your clients will now be able to view
        • Zoho Analytics Bulk Api Import json Data

          HI, I’m trying to bulk-update rows in Zoho Analytics, and below are the request and response details. I’d like to understand the required parameters for constructing a bulk API request to import or update data in a table using Deluge. Any guidance on
        • Project Management Bulletin: December, 2025

          The holiday cheer is in the air and it’s time to reflect on the year that was. At Zoho PM Suite, we've been working behind the scenes on something huge and exciting all year and now we are almost ready—with just a bit of confetti—for our grand release
        • Inventory batch details

          Hi there, I'm trying to get the batch details of an item, here's what I've done so far. I've sent cUrl request to the below endpoint and I get a successful response. Within in the response I find the "warehouses" property which correctly lists all the
        • Auto check out after shift complete

          i'm just stuck here right now, i wanna know how to do this thing, now tell me, how can i configure a custom function that runs after complete shift time if employee forget to check-out ?
        • How to create a flow that creates tickets automaticaly everyday based on specific times

          Hi guys Does anyone know how to create a flow that will create tickets automaticaly in ZOHO Desk when a certain time is reached. Im havin a hard time configuring a flow that will create tickets automaticaly everyday during specific hours of the day For
        • ZOHO FLOW - ZOHO CREATOR - ZOHO WRITER : Get Related records

          Bonjour, J'ai besoin que vous m'ajoutiez la solution "Get related Records" dans la liste de choix de zoho creator (sous Zoho flow). En effet, j'ai besoin de récupérer les champs d'un sous formulaire pour l'ajouter à l'impression de mon document. Mer
        • Will zoho thrive be integrated with Zoho Books?

          title
        • Connecting email for each department in ZohoDesk

          Hi! Could someone help me to go through connecting emails for each department?
        • How do I trigger a Flow based on a campaign response?

          Is there a way to trgiider a Zoho Flow based upon a lead opening an email sent via Zoho Campaigns? I see that the data is recorded in the 'Campaigns' section of Zoho CRM under 'Member Status' and I want to trgigger a flow based upon that record changing.
        • Next Page