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 Desk.

  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 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 that 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

        • Edit a previous reconciliation

          I realized that during my March bank reconciliation, I chose the wrong check to reconcile (they were for the same amount on the same date, I just chose the wrong check to reconcile). So now, the incorrect check is showing as un-reconciled. Is there any way I can edit a previous reconciliation (this is 7 months ago) so I can adjust the check that was reconciled? The amounts are exactly the same and it won't change my ending balance.
        • Approval Workflow for Purchase Orders Abrir

          The requirement is , that all purchase orders greater than or equal to 5000 go through an approval process from certain people, but within books I only see that the approvers can be by levels or any approver but we cannot enter a rule like these. Can
        • Unable to create new finance account in Zoho Books Android app due to missing account number field.

          Free plan I have enabled a setting via the website requiring unique account codes to be specified for all accounts. When using the android app, go to expenses, new expense, select account, new account. Promoted to enter the Account name and description.
        • How to Fetch data from Sales Order and Insert into Purchase Order with Deluge

          Hello, I am wanting to write a Deluge script that would take the shipping address on a Sales Order and upon conversion to a Sales Order automatically insert it into that corresponding PO. I am new to Deluge but understand that it has great capabilities.
        • Google Drive shared folder

          My deluge script has stopped working, no longer collecting files from Google Drive - have these connections finally been deprecated ?? They seem to be active but errors occur when updating them ?
        • Can't add attachment on email template

          The attachment does show up. This is my template. Hi ${Cases.Assigned Programmers}, Please be reminded about the following task that has been assigned to you. Subject : ${Cases.Subject} Description : ${Cases.Description} Ticket # : ${Cases.Request Id}
        • Zoho Desk: Mobile Updates | Q1 2026

          Hello everyone, Greetings! As we gear up for the end of Q1, we are excited to share a quick journey into all that released in the first quarter of 2026. We have brought in a few enhancements in the mobile apps that improve overall user experience and
        • CRM x WorkDrive: We're rolling out the WorkDrive-powered file storage experience for existing users

          Release plan: Gradual rollout to customers without file storage add-ons, in this order: 1. Standalone CRM 2. CRM Plus and Zoho One DCs: All | Editions: All Available now for: - Standalone CRM accounts in Free and Standard editions without file storage
        • Additional Address - Company Name

          It would be very helpful to have a "Company Name" field in the Additional Address shipping section.  In a situation where you drop-ship orders to a different address or different company entirely, it may be necessary to list the company name of the receiver. I understand that the Attention field can be used for that purpose, but that's not really the intended purpose of that field.
        • All new Address Field in Zoho CRM: maintain structured and accurate address inputs

          Availability Update: 29 September 2025: It's currently available for all new sign-ups and for existing Zoho CRM orgs which are in the Professional edition exclusively for IN DC users. 2 March 2026: Available to users in all DCs except US and EU DC. 24
        • Zoho Payroll's Kuwait, Oman, Qatar, Bahrain and Canada edition is available in Zoho One

          Great news for Zoho One users! Zoho Payroll has expanded to five new regions: Kuwait, Oman, Qatar, Bahrain, and Canada. And the best part? These new editions are fully integrated with Zoho One, just like our existing editions in India, the UAE, Saudi
        • Does Zoho Creator support multilingual translation for user-entered data?

          I understand that Zoho Creator provides localization support for UI elements such as field labels and static text. I would like to know: Does Zoho Creator support automatic translation of user-entered data (for example, form inputs or stored records)
        • Upload field on tasks module

          Hello, Why I cannot add an upload field to a Task? Or maybe when creating the task make attachements visible, so you can add an attachement while creating the task? Looking forward to your response!
        • Seeking a WhatsApp Business App (not API) Zoho CRM integration

          We have a business need to integrated WhatsApp Business App (not API) into Zoho CRM to centrally manage communications between our Sales team and Leads & Contact. Is there a reputable integration available for this scenario of ours? Core features we would
        • WhatsApp phone number migration

          Hi @Gowri V and @Pheranda Nongpiur, Thanks for implementing the promised enhancements to the integration between Zoho CRM and WhatsApp. The previous discussion has been locked, so I'm opening this new one. I am copying below a specific
        • How to let club members update their own profile data

          Our club has about 200 members. We keep names, addresses, phones, emails, payment records, etc. for each, recently migrated to Creator. Once a year I send email to each member to confirm or correct their info on file with us, as well as ask for payment
        • Document retention in Zoho Sign

          Document management doesn’t end at signing. It extends to how long you retain agreements—and how securely you dispose of them. With the document retention option in Zoho Sign, you can define structured, policy-driven timelines for managing completed documents.
        • Sales Allowed Beyond Available Stock and Payment Recorded Without Restriction

          Hi, While testing in Zoho Inventory, I noticed that a sales order can be created with a quantity exceeding the available stock in the selected warehouse. In my case: Available stock: 5 units Ordered quantity: 6 units Despite this: I was able to convert
        • Deleting, Adding and Changing a Zoho Books Entry

          Zoho Books Community & Support, If a bulk upload of entries were added to an account, what is the process to: - Delete an entry - Change the amount of an entry - Is there a means to manually add an entry other than upload?
        • Zoho Commerce in multiple languages

          When will you be able to offer Zoho Commerce in more languages? We sell in multiple markets and want to be able to offer a local version of our webshop. What does the roadmap look like?
        • Zoho CRM - Feature Request - Analytics Components Group By Week Alternative Formats

          On the Zoho CRM Analytics Components, please consider adding an option to allow group by week format to be changed to other formats such as Week Commencing or Week Ending dates, rather than the current Week Number. This would provide improved usability
        • The Social Playbook March edition: Myth vs Facts

          We’ve all heard a lot of myths growing up. Some sound convincing, some feel believable, and over time they start to feel like facts. But the truth is, a myth is still a myth until it’s backed by real facts. Marketing is no different. Over time, many ideas
        • Updating Analytical Fields Data

          Dear Zoho team, I'm having an issue with the recently added fields in both Analytical Desk and Analytical. How can I generate the data in Analytical when new fields are added? https://analytics.zoho.com/workspace/2436819000000007005/edit/24368190000
        • Marketing Tip #26: Optimize product images for SEO

          Product images can do more than make your store look good. They can also help customers discover your products through search. Since search engines can’t "see" images, they rely on text signals to understand what an image is about. Two small actions make
        • What's New in Zoho Analytics - February 2026

          Hello Users! We're back with another round of updates for Zoho Analytics. This month's release focuses on giving you greater flexibility in how you visualize, manage, and act on your data - with new features like custom visualizations, remote MCP server,
        • Clone a Module??

          I am giong to repurpose the Vendors module but would like to have a separate but very similar module for another group of contacts called Buyers. I have already repurposed Contacts to Sellers. Is it possible to clone (make a duplicate) module of Vendors
        • [Webinar] Solving business challenges: Secure, real-time, and external collaboration

          Hi Zoho Writer users, We are excited to announce Zoho Writer's webinar for March 2026: Solving business challenges: Secure, real-time, and external collaboration. Zoho Writer supports real-time collaboration by allowing teams to work together in documents.
        • Realtime Translations of Video via OnAir

          It would be an amazing feature to have a drop down selector in the On Air video area for attendees to select a language to convert the original language to.
        • can change deal colors in bigin?

          can be super useful if we can change colors deals process any way to do it?
        • You have reached the maximum limit of bank accounts that can be connected to Zoho Books through token.

          I can no longer connect to my bank account to download transactions into Zoho Books. I egt the error message: "You have reached the maximum limit of bank accounts that can be connected to Zoho Books through token. To connect more accounts, write to us
        • Assign emails to lead

          I have some contacts who refers leads but there is no away to manually assign emails to lead.   
        • Separate Items & Services

          Hi, please separate items and services into different categories. Thank you
        • Page variable not receiving URL parameter in Creator 6 HTML snippet Deluge — Canada DC

          I have a Creator 6 app on Canada DC. I'm trying to pass a URL parameter to an HTML snippet page via Deluge but the variable always returns empty. Setup: Page: MYC_Meeting_Tool Page variable declared: submission_id, type Text Page Script tab contains:
        • Can I import MSG files into Microsoft 365 without Outlook?

          Yes, absolutely. You do not need Outlook installed to import MSG files into Microsoft 365. Aryson MSG file Converter is a dedicated tool that eliminates the Outlook dependency entirely, making the migration process simple and efficient for all users.
        • Print Sales Orders, Purchase Orders or Invoices from API

          Hello, Is it possible to use the print option that is available in Sales Orders Purchase Orders and Invoices with the API?. I don't see any information in the docs about this. Thanks
        • Connectivity issues with Google Calendar and third-party integrations

          Description: We are currently experiencing a critical failure with Zoho CRM third-party connections. This issue is heavily affecting our primary workflow. Symptoms: Sync Failure: Existing Zoho CRM to Google Calendar connections have been failing for approximately
        • How are you syncing CRM, Inventory & orders in Zoho without issues?

          Hi everyone, While working with Zoho One, I noticed syncing CRM, Inventory, and orders can get tricky as operations grow. Issues I’ve seen: Inventory mismatches Delayed order updates Too much manual intervention For those using Zoho at scale — How are
        • Auto-sync field of lookup value

          This feature has been requested many times in the discussion Field of Lookup Announcement and this post aims to track it separately. At the moment the value of a 'field of lookup' is a snapshot but once the parent lookup field is updated the values diverge.
        • Specifying time increments on a Date/Time field

          Hi all, Im using a Date/Time field in my CRM module. At the moment the increments are 30 minutes. How can I change these to be 15 minutes? Thanks
        • Push Forms to CRM

          Hello, I created a Form but forgot to integrate to CRM before many of the Forms were filled out. Is it possible to push those entries to CRM or should I just export a CSV then upload to CRM?
        • Next Page