Create a task in Zoho CRM directly from Zoho Cliq

Create a task in Zoho CRM directly from Zoho Cliq

Components used : Slash command, message action.

Slash Command:

To create a task in Zoho CRM directly from a chat window in Zoho Cliq, follow the steps below:

Step 1: Create a command

The first step is to create a command in Zoho Cliq that allows users to create a task directly from a chat window. To do this, go to your profile, then navigate to  Bots & Tools > Integrations > Command > Create Command .

In the command creation window, you will need to enter a name for your command, a description, and choose the access level (Personal, Team, or Org). Once you have done this, save the command.

Next, paste the provided code in the script editor in the integration window:

  1. fetchFields = invokeurl
  2. [
  3.  url :"https://www.zohoapis.com/crm/v2/settings/fields?module=Tasks"
  4.  type :GET
  5.  connection:"CONNECTION LINK NAME"
  6. ];
  7. //info fetchFields;
  8. allFields = fetchFields.get("fields");
  9. priorityList = list();
  10. statusList = list();
  11. for each  field in allFields
  12. {
  13.  if(field.get("api_name") == "Priority")
  14.  {
  15.   pickListValues = field.get("pick_list_values");
  16.   for each  pickList in pickListValues
  17.   {
  18.    displayName = pickList.get("display_value");
  19.    priorityList.add({"label":displayName,"value":displayName.replaceAll(" ","_")});
  20.   }
  21.  }
  22.  else if(field.get("api_name") == "Status")
  23.  {
  24.   pickListValues = field.get("pick_list_values");
  25.   for each  pickList in pickListValues
  26.   {
  27.    displayName = pickList.get("display_value");
  28.    statusList.add({"label":displayName,"value":displayName.replaceAll(" ","_")});
  29.   }
  30.  }
  31. }
  32. inputs = list();
  33. inputs.add({"type":"text","name":"task","label":"Task Name","hint":"Enter a subject","placeholder":"","min_length":8,"max_length":100,"mandatory":true});
  34. inputs.add({"type":"date","name":"date","label":"Due Date","placeholder":"Choose a due date","mandatory":false});
  35. modulesList = list();
  36. modulesList.add({"label":"Lead","value":"lead"});
  37. modulesList.add({"label":"Contact","value":"contacts"});
  38. inputs.add({"type":"select","name":"module","label":"Type of module","placeholder":"Choose a module","trigger_on_change":true,"options":modulesList});
  39. inputs.add({"type":"textarea","name":"description","label":"Description","hint":"Enter description","placeholder":"","min_length":0,"max_length":1000,"mandatory":false});​
  40. inputs.add({"type":"select","name":"priority","label":"Priority","placeholder":"Choose a priority","mandatory":false,"options":priorityList});
  41. inputs.add({"type":"select","name":"status","label":"Status","placeholder":"Choose a status","mandatory":false,"options":statusList});
  42. return {"type":"form","title":"Create a task","hint":"Name the task and assign a user","name":"createTask","button_label":"Create","actions":{"submit":{"type":"invoke.function","name":"createTask"}},"inputs":inputs};

Note : Make sure to replace the connection link name

Creating a connection:
  • Click on the connections button on the top right of the code editor.
  • Click on the Create Connection button
  • In default services, select the Zoho OAuth service and enable the following scopes:
    • ZohoCRM.modules.ALL
    • ZohoCRM.settings.ALL
  • Now authorize the connection

Step 2: Create a Form Function

 The second step is to create a form function that will handle the creation of the task in Zoho CRM. To do this, navigate to  Bots & Tools > Integrations > Functions > Create , and name your function " createTask ". Add a description and select the function type as form.

Then, paste the provided code in the form submit handler, which will handle the form submission and create a task in Zoho CRM.

  1. info form;
  2. paramsMap = map();
  3. labelList = list();
  4. formValues = form.get("values");
  5. module = formValues.get("module").get("label");
  6. subject = formValues.get("task");
  7. labelList.add({"Subject":subject});
  8. paramsMap.put("Subject", subject);
  9. description = formValues.get("description");
  10. if(description.length() > 0)
  11. {
  12.  labelList.add({"Description":description});
  13.  paramsMap.put("Description", description); 
  14. }
  15. dueDate = formValues.get("date");
  16. if(dueDate.length() > 0)
  17. {
  18.  dueDate = dueDate.toString("yyyy-MM-dd");
  19.  paramsMap.put("Due_Date", dueDate);
  20. }
  21. else 
  22. {
  23.  dueDate = "-";
  24. }
  25. labelList.add({"Due Date":dueDate});
  26. priority = formValues.get("priority");
  27. if(priority.keys().size() > 0)
  28. {
  29.  priority = priority.get("label");
  30.  paramsMap.put("Priority", priority);
  31. }
  32. else 
  33. {
  34.  priority = "High";
  35. }
  36. labelList.add({"Priority":priority});
  37. status = formValues.get("status");
  38. if(status.keys().size() > 0)
  39. {
  40.  status = status.get("label");
  41.  paramsMap.put("Status", status);
  42. }
  43. else 
  44. {
  45.  status = "Not Started";
  46. }
  47. labelList.add({"Status":status});
  48. if(module == "Lead")
  49. {
  50.  leadID = formValues.get("lead").get("value");
  51.  paramsMap.put("What_Id", leadID);
  52.  paramsMap.put("$se_module", "Leads");
  53.  labelList.add({"Lead":formValues.get("lead").get("label")});
  54. }
  55. else if(module == "Contact") 
  56. {
  57.  contactDetails = formValues.get("contact").keys();
  58.  if(contactDetails.size() > 0)
  59.  {
  60.   contactID = formValues.get("contact").get("value");
  61.   paramsMap.put("Who_Id", contactID);
  62.   labelList.add({"Contact":formValues.get("contact").get("label")});
  63.  }
  64.  assciatedModule = formValues.get("contactModule").get("value");
  65.  if(assciatedModule == "account")
  66.  {
  67.   choosenModule = "Accounts";
  68.  }
  69.  else 
  70.     {
  71.   choosenModule = "Deals";
  72.     }
  73.  accountOrDealID = formValues.get(assciatedModule).get("value");
  74.  paramsMap.put("What_Id", accountOrDealID);
  75.  paramsMap.put("$se_module", choosenModule);
  76.  labelList.add({choosenModule:formValues.get(assciatedModule).get("label")});
  77. }
  78. params = map();
  79. params.put("data", [paramsMap]);
  80. createTask = invokeurl
  81. [
  82.  url: "https://www.zohoapis.com/crm/v2/tasks"
  83.  type: POST
  84.  parameters: params+""
  85.  detailed : true
  86.  connection: "CONNECTION LINK NAME"
  87. ];
  88. info createTask;
  89. if(createTask.get("responseCode") == 201)
  90. {
  91.  response = {"text":"### Task has been created successfully 👍","card":{"theme":"10"},"slides":[{"type":"label","data":labelList}],"buttons":[{"label":"View","action":{"type":"open.url","data":{"web":"https://crm.zoho.com/crm/tab/Tasks/"+createTask.get("responseText").get("data").toMap().get("details").get("id")}}}]};
  92. }
  93. else 
  94. {
  95.  response = {"text":"Something went wrong with the integration. Please try again after some time!!!","type":"banner","status":"failure"};
  96. }
  97. return response;

Step 3: Update with Form Change Handler

The third step is to create a form change handler that will update the task details as the user fills out the form. To do this, navigate to the form change handler and paste the provided code in the script editor.

  1. targetName = target.get("name");
  2. info targetName;
  3. formValues = form.get("values");
  4. info formValues;
  5. actions = list();
  6. if(targetName == "module")
  7. {
  8.  modulesList = {"task","description","date","module","priority","status"};
  9.  allKeys = formValues.keys();
  10.  for each  key in allKeys
  11.  {
  12.   if(!modulesList.contains(key))
  13.   {
  14.    actions.add({"type":"remove","name":key});
  15.   }
  16.  }
  17.  fieldValue = formValues.get("module").keys();
  18.  if(fieldValue.size() > 0)
  19.  {
  20.   label = formValues.get("module").get("label");
  21.   if(label == "Lead")
  22.   {
  23.    leadsList = list();
  24.    getAllLeads = invokeurl
  25.    [
  26.     url :"https://www.zohoapis.com/crm/v2/leads"
  27.     type :GET
  28.     connection:"CONNECTION LINK NAME"
  29.    ];
  30.    leads = getAllLeads.get("data");
  31.    leadlist = List();
  32.    i = 0;
  33.    for each  lead in leads
  34.    {
  35.     if(i == 10)
  36.     {
  37.      break;
  38.     }
  39.     leadName = lead.get("Full_Name");
  40.     leadId = lead.get("id");
  41.     leadsList.add({"label":leadName,"value":leadId});
  42.     i = i + 1;
  43.    }
  44.    actions.add({"type":"add_after","name":"module","input":{"type":"dynamic_select","name":"lead","label":"Lead","hint":"Choose a lead","placeholder":"","mandatory":true,"options":leadsList}});
  45.   }
  46.   else if(label == "Contact")
  47.   {
  48.    contactsList = list();
  49.    getContacts = invokeurl
  50.    [
  51.     url :"https://www.zohoapis.com/crm/v2/Contacts"
  52.     type :GET
  53.     connection:"CONNECTION LINK NAME"
  54.    ];
  55.    info getContacts;
  56.    contacts = getContacts.get("data");
  57.    i = 0;
  58.    for each  contact in contacts
  59.    {
  60.     if(i == 10)
  61.     {
  62.      break;
  63.     }
  64.     contactName = contact.get("Full_Name");
  65.     contactID = contact.get("id");
  66.     contactsList.add({"label":contactName,"value":contactID});
  67.     i = i + 1;
  68.    }
  69.    actions.add({"type":"add_after","name":"module","input":{"type":"select","name":"contact","label":"Contact","hint":"Choose a contact","placeholder":"","mandatory":false,"options":contactsList,"trigger_on_change":true}});
  70.    contactModuleList = list();
  71.    contactModuleList.add({"label":"Account","value":"account"});
  72.    contactModuleList.add({"label":"Deal","value":"deal"});
  73.    actions.add({"type":"add_after","name":"contact","input":{"type":"select","name":"contactModule","label":"Associated Module","hint":"Choose a module","placeholder":"","mandatory":true,"options":contactModuleList,"trigger_on_change":true}});
  74.   }
  75.  }
  76. }
  77. else if(targetName == "contact")
  78. {
  79.  contactsList = {"task","description","date","module","contact","contactModule","priority","status"};
  80.  allKeys = formValues.keys();
  81.  for each  key in allKeys
  82.  {
  83.   if(!contactsList.contains(key))
  84.   {
  85.    actions.add({"type":"remove","name":key});
  86.   }
  87.  }
  88.  actions.add({"type":"clear","name":"contactModule"});
  89.  actions.add({"type":"clear","name":"deal"});
  90.  actions.add({"type":"clear","name":"account"});
  91. }
  92. else if(targetName == "contactModule")
  93. {
  94.  contactsList = {"task","description","date","module","contact","contactModule","priority","status"};
  95.  allKeys = formValues.keys();
  96.  for each  key in allKeys
  97.  {
  98.   if(!contactsList.contains(key))
  99.   {
  100.    actions.add({"type":"remove","name":key});
  101.   }
  102.  }
  103.  label = formValues.get("contactModule").keys();
  104.  if(label.size() > 0)
  105.  {
  106.   labelValue = formValues.get("contactModule").get("label");
  107.   if(labelValue == "Deal")
  108.   {
  109.    moduleName = "deals";
  110.   }
  111.   else if(labelValue == "Account")
  112.   {
  113.    moduleName = "accounts";
  114.   }
  115.   contactsKeys = formValues.get("contact").keys();
  116.   if(contactsKeys.size() > 0)
  117.   {
  118.    contactId = formValues.get("contact").get("value");
  119.    url = "https://www.zohoapis.com/crm/v2/Contacts/" + contactId + "/" + moduleName;
  120.   }
  121.   else
  122.   {
  123.    url = "https://www.zohoapis.com/crm/v2/" + moduleName;
  124.   }
  125.   getAllDetails = invokeurl
  126.   [
  127.    url :url
  128.    type :GET
  129.    connection:"CONNECTION LINK NAME"
  130.   ];
  131.   info getAllDetails;
  132.   details = getAllDetails.get("data");
  133.   if(!details.size() > 0)
  134.   {
  135.    url = "https://www.zohoapis.com/crm/v2/" + moduleName;
  136.    getAllDetails = invokeurl
  137.    [
  138.     url :url
  139.     type :GET
  140.     connection:"CONNECTION LINK NAME"
  141.    ];
  142.    info getAllDetails;
  143.    details = getAllDetails.get("data");
  144.   }
  145.   detailsList = list();
  146.   i = 0;
  147.   for each  detail in details
  148.   {
  149.    if(i == 10)
  150.    {
  151.     break;
  152.    }
  153.    if(labelValue == "Deal")
  154.    {
  155.     dealName = detail.get("Deal_Name");
  156.     dealID = detail.get("id");
  157.     detailsList.add({"label":dealName,"value":dealID});
  158.    }
  159.    else if(labelValue == "Account")
  160.    {
  161.     AccountName = detail.get("Account_Name");
  162.     AccountID = detail.get("id");
  163.     detailsList.add({"label":AccountName,"value":AccountID});
  164.    }
  165.    i = i + 1;
  166.   }
  167.   actions.add({"type":"add_after","name":"contactModule","input":{"type":"dynamic_select","name":labelValue.toLowerCase(),"label":labelValue.proper(),"hint":"","placeholder":"Select a " + labelValue,"mandatory":true,"options":detailsList}});
  168.  }
  169. }
  170. return {"type":"form_modification","actions":actions};

Step 4: Dynamic Handler

Now navigate to the Dynamic Handler and paste this code:

  1. info target;
  2. typeList = list();
  3. searchValue = target.get("query");
  4. formValues = form.get("values");
  5. if(target.get("name") == "lead")
  6. {
  7.  getLeads = invokeurl
  8.  [
  9.   url :"https://www.zohoapis.com/crm/v2/leads"
  10.   type :GET
  11.   connection:"CONNECTION LINK NAME"
  12.  ];
  13.  //info getLeads;
  14.  leads = getLeads.get("data");
  15.  for each  lead in leads
  16.  {
  17.   if(lead.containsIgnoreCase(searchValue))
  18.   {
  19.    if(typeList == 100)
  20.    {
  21.     break;
  22.    }
  23.    leadName = lead.get("Full_Name");
  24.    leadId = lead.get("id");
  25.    lead = {"label":leadName,"value":leadId};
  26.    typeList.add(lead);
  27.   }
  28.  }
  29. }
  30. else if(target.get("name") == "account")
  31. {
  32.  contactsKeys = formValues.get("contact").keys();
  33.  if(contactsKeys.size() > 0)
  34.  {
  35.   contactId = formValues.get("contact").get("value");
  36.   url = "https://www.zohoapis.com/crm/v2/Contacts/" + contactId + "/accounts";
  37.  }
  38.  else
  39.  {
  40.   url = "https://www.zohoapis.com/crm/v2/accounts";
  41.  }
  42.  getAccounts = invokeurl
  43.  [
  44.   url :url
  45.   type :GET
  46.   connection:"CONNECTION LINK NAME"
  47.  ];
  48.  //info getLeads;
  49.  accounts = getAccounts.get("data");
  50.  if(!accounts.size() > 0)
  51.  {
  52.   url = "https://www.zohoapis.com/crm/v2/accounts";
  53.   getAccounts = invokeurl
  54.   [
  55.    url :url
  56.    type :GET
  57.    connection:"CONNECTION LINK NAME"
  58.   ];
  59.  }
  60.  for each  account in accounts
  61.  {
  62.   if(account.containsIgnoreCase(searchValue))
  63.   {
  64.    if(typeList == 100)
  65.    {
  66.     break;
  67.    }
  68.    AccountName = account.get("Account_Name");
  69.    AccountID = account.get("id");
  70.    typeList.add({"label":AccountName,"value":AccountID});
  71.   }
  72.  }
  73. }
  74. else if(target.get("name") == "deal")
  75. {
  76.  contactsKeys = formValues.get("contact").keys();
  77.  if(contactsKeys.size() > 0)
  78.  {
  79.   contactId = formValues.get("contact").get("value");
  80.   url = "https://www.zohoapis.com/crm/v2/Contacts/" + contactId + "/deals";
  81.  }
  82.  else
  83.  {
  84.   url = "https://www.zohoapis.com/crm/v2/deals";
  85.  }
  86.  getDeals = invokeurl
  87.  [
  88.   url :url
  89.   type :GET
  90.   connection:"CONNECTION LINK NAME"
  91.  ];
  92.  deals = getDeals.get("data");
  93.  if(!deals.size() > 0)
  94.  {
  95.   url = "https://www.zohoapis.com/crm/v2/deals";
  96.   getDeals = invokeurl
  97.   [
  98.    url :url
  99.    type :GET
  100.    connection:"CONNECTION LINK NAME"
  101.   ];
  102.   deals = getDeals.get("data");
  103.  }
  104.  for each  deal in deals
  105.  {
  106.   if(deal.containsIgnoreCase(searchValue))
  107.   {
  108.    if(typeList == 100)
  109.    {
  110.     break;
  111.    }
  112.    dealName = deal.get("Deal_Name");
  113.    dealID = deal.get("id");
  114.    typeList.add({"label":dealName,"value":dealID});
  115.   }
  116.  }
  117. }
  118. return {"options":typeList};

Message Action

Besides the Command method, you can also use Message Actions to create a task in Zoho CRM directly from a chat. To do this, navigate to  Bots & Tools > Integrations > Message Action > Create , and create a new message action.

In the message action creation window, you will need to enter a name, description, and choose the access level. Then, paste the provided code in the script editor.

  1. description = message.get("text");
  2. if(description.length() >= 1000)
  3. {
  4.  description = description.subString(0,1000);
  5. }
  6. fetchFields = invokeurl
  7. [
  8.  url :"https://www.zohoapis.com/crm/v2/settings/fields?module=Tasks"
  9.  type :GET
  10.  connection:"CONNECTION LINK NAME"
  11. ];
  12. //info fetchFields;
  13. allFields = fetchFields.get("fields");
  14. priorityList = list();
  15. statusList = list();
  16. for each  field in allFields
  17. {
  18.  if(field.get("api_name") == "Priority")
  19.  {
  20.   pickListValues = field.get("pick_list_values");
  21.   for each  pickList in pickListValues
  22.   {
  23.    displayName = pickList.get("display_value");
  24.    priorityList.add({"label":displayName,"value":displayName.replaceAll(" ","_")});
  25.   }
  26.  }
  27.  else if(field.get("api_name") == "Status")
  28.  {
  29.   pickListValues = field.get("pick_list_values");
  30.   for each  pickList in pickListValues
  31.   {
  32.    displayName = pickList.get("display_value");
  33.    statusList.add({"label":displayName,"value":displayName.replaceAll(" ","_")});
  34.   }
  35.  }
  36. }
  37. inputs = list();
  38. inputs.add({"type":"text","name":"task","label":"Task Name","hint":"Enter a subject","placeholder":"","min_length":8,"max_length":100,"mandatory":true});
  39. inputs.add({"type":"textarea","name":"description","label":"Description","hint":"Enter description","placeholder":"","min_length":5,"max_length":1000,"mandatory":false,"value":description});
  40. inputs.add({"type":"date","name":"date","label":"Due Date","placeholder":"Choose a due date","mandatory":false});
  41. modulesList = list();
  42. modulesList.add({"label":"Lead","value":"lead"});
  43. modulesList.add({"label":"Contact","value":"contacts"});
  44. inputs.add({"type":"select","name":"module","label":"Type of module","placeholder":"Choose a module","trigger_on_change":true,"options":modulesList});
  45. inputs.add({"type":"select","name":"priority","label":"Priority","placeholder":"Choose a priority","mandatory":false,"options":priorityList});
  46. inputs.add({"type":"select","name":"status","label":"Status","placeholder":"Choose a status","mandatory":false,"options":statusList});
  47. return {"type":"form","title":"Create a task","hint":"Name the task and assign a user","name":"createTask","button_label":"Create","actions":{"submit":{"type":"invoke.function","name":"createTask"}},"inputs":inputs};

Note : Make sure to replace the connection link name
This code will create a message action that you can use to create a task in Zoho CRM. Once used on a message, the createTask function created earlier will handle the task creation process (and the message will automatically be entered as the task description).

In summary, by following these steps, users can create a task in Zoho CRM directly from a chat in Zoho Cliq using either Command or Message Action. This can save time and streamline the workflow for teams that use both Zoho Cliq and Zoho CRM.



      • Sticky Posts

      • Automating Employee Birthday Notifications in Zoho Cliq

        Have you ever missed a birthday and felt like the office Grinch? Fear not, the Cliq Developer Platform has got your back! With Zoho Cliq's Schedulers, you can be the office party-cipant who never forgets a single cake, balloon, or awkward rendition of
      • Accelerate Github code reviews with Zoho Cliq Platform's link handlers

        Code reviews are critical, and they can get buried in conversations or lost when using multiple tools. With the Cliq Platform's link handlers, let's transform shared Github pull request links into interactive, real-time code reviews on channels. Share
      • App Spotlight : PagerDuty for Zoho Cliq

        App Spotlight brings you hand-picked apps to enhance the power of your Zoho apps and tools. Visit the Zoho Marketplace to explore all of our apps, integrations, and extensions. In today's fast-paced world, seizing every moment is essential for operational
      • Automate your status with Cliq Schedulers

        Imagine enjoying your favorite homemade meal during a peaceful lunch break, when suddenly there's a PING! A notification pops up and ruins your moment of zen. Even worse, you might be in a vital product development sprint, only to be derailed by a "quick
      • Bulk user onboarding for Cliq Channels in a jiffy

        As developers, we frequently switch between coding, debugging, and optimizing tasks. The last thing we want is to be burdened by manual user management. Adding users one by one to a channel is tedious and prone to errors, taking up more time than we could

        • Recent Topics

        • Table Errors

          Hello, I'm new to Zoho Notebook and using it on several Mac/Apple devices. My question is regarding tables: Why do they become broken, and how to fix the error without retyping all my data? (Please see the screenshot attached.)
        • Aggregating the First Value in the Group By of a dataset

          Hi I am trying to get the following Aggregate Formula to work in my chart, but cannot seem to get the right format. I have a series of data that I am running an include_groupby and want to SUM only a column in the first row of each group. So for example.
        • Online Calculator with Zoho Forms?

          I'd like to build a custom calculator on my website. Zoho Forms seems to offer all the fields for basic calculations performed live without pressing any "Calculate" buttons. Unfortunately, there is still that "Submit" button at the bottom. There is nothing
        • Zoho Tables instead of Zoho Creator Spreadsheet reports <3

          That would make my day for sure. Zoho Creator is create, but miss data entering as AirTable/Spreadsheet can. Seeing Zoho putting effort in this makes me think maybe one day we could see a similar interface for Zoho Creator spreadsheet reports. B.
        • Zoho Sheet - Desktop App or Offline

          Since Zoho Docs is now available as a desktop app and offline, when is a realistic ETA for Sheet to have the same functionality?I am surprised this was not laucned at the same time as Docs.
        • Notebook Stack

          Hi Everyone I Hope you´re fine, I´m sorry if this idea was posted before (I made a search but I haven´t find anything related). So, Having the possibility of stacking notebooks would be an interesting way to order notebooks that correspond to the same
        • Writing on sketch cards is bugged when zoomed in

          When zoomed in, it writes a noticeable distance above or to the side of where you're actually trying to write. The further you're zoomed in, the more noticeable it is. Zooming is also entirely absent on the desktop version.
        • Swipe between notes on iPhone

          It'd be convenient if I could move from one note to the next in a notebook simply by swiping left to right.
        • Sales IQ chat is not working in signed android apk

          I have integrated ZOHO sales IQ support chat and i have followed each step and its working fine in my development build but when i create signed APK for it. Chat does not work in it and showing awaiting for detail. I previously asked the same query but
        • COQL order by COUNT not working

          Dear community, I am trying to get a list of deal amounts per planner working on it and sorted to get see who has the least amount of deals. For some reason, I am unable to use sort by in combination with a COUNT. My original code was: query = "select
        • I want to duplicate a report and name it something else

          Hi, I have created a report, and now want to reproduce it and call it something else. so that I will end up with TWO separate reports with different titles. Please tell me how do I copy / reproduce a report please
        • Zoho CRM: Sales Rep Professional Certification Program on Coursera

          We are happy to share that we have published the Zoho Sales Representative Professional Certificate in partnership with Coursera, a leading platform for online learning and career development that offers access to courses and degrees from leading universities
        • OS X Notebook quits immediately upon launch

          NoteBook for OS X (Sequoia, but also under Sonoma) always quits immediately upon launch (so I cannot use the "Attach user log" option). I've restarted my MacBook but the problem persists. If it helps, attached is a diagnostic report from Library>Log
        • Can External users upload files or images to WorkDrive?

          I want to know if it is possible for someone externally through a link and PW be able to upload files and images onto WorkDrive?
        • Multi-line fields character limits

          Is there a way to set the character limit higher on multi-line fields so that we are not losing information pasted into the field? When the text is entered or pasted, there is no error to say that the text is too large. After saving and going back to view most of the text is gone.   Also, when viewing the resume, the text is not wrapped in the multi line fields and can t be read without scrolling across the page.
        • Taz bot not working — What should I do to resolve this issue?

          I am experiencing issues with the Taz bot in Zoho Cliq—not receiving responses or it does not seem to work as expected. Could you please explain why the Taz bot might not be functioning and what steps I should take to resolve this issue? Thank you!
        • 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
        • OneNote Migration

          I am trying to migrate two notebooks from OneNote. For five days now I have had no notification that migration has completed and the migration page show 50% complete - one notebook completed one not finished. It just stays like this. I am unable to cancel
        • Set various time slot reminders for task and event

          Hi I would like known if there is possibility to set various time reminders for a task or event like we have the possibility to do in google calendar or google task. For example I'am creating an event or task and I want to be alerted before 30min and
        • Zoho Calendar not functioning---cannot edit, add attendees, etc.

          Hello, My calendar is acting strange. I'm using Chrome as my browser and pop ups are not blocked (the calendar worked fine yesterday). When creating an event, I'm not able to "edit" the event and add attendees, etc. The link is non-responsive. I cannot
        • Spilt Axis for stacked column and line graph

          Each month around this time I prepare a business review deck. One of the biggest annoyances I have with Zoho, also happens to be something that most other platforms have provided for a long time now, and that is being able to create a chart with stacked
        • Pin a note on top

          Dear Zoho Notebook Team, Please highly consider adding ability to pin a note on top and arrange pinned notes. I have a lot of notes that I want to pin important ones on top and this feature is missing badly. Thank you.
        • Windows 11 app ver 2.2.8

          I have been trialing Zoho Notes syncing between my PC and iphone. No problems with iphone but the Windows 64 bit app ver 2.2.8 was very buggy and would lock up completely, needing a Control Alt Delete etc to close it down. It seemed to be connected to
        • Deluge Script: Onboarding → Access Form

          Hello everyone, Edit: Sorry, I think I put this topic in the wrong section. I’ve recently run into an issue that’s been giving me a bit of a headache for the past few weeks. Context: This is my first time using Deluge to create a script, but it’s not
        • Windows Device Authentication

          We have recently started using ManageEngine, and my boss saw a device management feature in the Zoho One directory. We thought it would either help give us more intergration into Zoho one through bringing ManageEngine services through Zoho one. Or, it
        • How can I change spell check language?

          I cannot find the way to change spell check language. My "display language" is English, and I want to have the same one for Spell Check, but it is Russian!!! How can I change it? In one of your explanations you mentioned that I have to choose it from
        • Mail is so slow - doesn't even work!

          Mail has been getting slower and slower - and today it's not even pulling up emails in either Inbox or Unread. This is beyond frustrating since email is a big part of business. Sent a request through the useless help portal - no response. Called the useless
        • User marked as SPAMMER. Mail Fetch has also been disabled for any active POP accounts.

          I am the administrator for joelles.com One of our accounts has been blocked saying this: User marked as SPAMMER. Mail Fetch has also been disabled for any active POP accounts. I cannot change the disabled account in the control panel as it says that it
        • My domain did not activate

          Hi, my domain (apsaindustrial.com.ar) did not activate, and the phone verification message never arrived. Please would you solve this problem? Thanks.
        • ME SALE ESTE ERROR: No fue posible enviar el mensaje;Motivo:554 5.1.8 Email Outgoing Blocked

          Ayuda!! Me sale este error al intentar enviar mensajes desde mi correo electronico de Zoho! Tampoco recibo correos pues cuando me envia rebotan. Ayuda, Me urge enviar unos correo importantes!! Quedo atenta MAGDA HERNANDEZ +5731120888408
        • Is there a way to sync Tags between CRM and Campaigns/Marketing Hub?

          I wonder if there is a way to synch the tags between CRM and Marketing-Hub / Campaigns?
        • how to see if a specific contact opened an email in zoho campaign?

          how to see if a specific contact opened an email in zoho campaign?
        • Revenue Management: #8 Revenue Recognition in Educational & Training Institutions

          Educational Institutions and training centres typically collect course fees at the time of enrolment, sometimes for a one-day workshop and sometimes for a year-long certification course. You might also charge separately for course materials or evaluation.
        • How to Customize Task Creation to Send a Custom Alert Using JavaScript in Zoho CRM?

          Hello Zoho CRM Community, I’m looking to customize Zoho CRM to send a custom alert whenever a task is created. I understand that Zoho CRM supports client scripts using JavaScript, and I would like to leverage this feature to implement the alert functionality.
        • 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")
        • Using files from Zoho CRM in Gemini/ChatGPT/Claude

          Hi all, I’ve got subscriptions to Gemini and a few other AI tools which I use for tasks like data enrichment, email composition, etc. In our workflow, we often receive various documents from clients — such as process workflows, BRDs/requirement documents
        • Enhancements to the formula field in Zoho CRM: Auto-refresh formulas with the "Now" function, stop formula executions based on criteria, and include formulas within formulas

          Dear Customers, We hope you're well! By their nature, modern businesses rely every day on computations, whether it's to calculate the price of a product, assess ROI, evaluate the lifetime value of a customer, or even determine the age of a record. With
        • Maximum file limit in zoho people LMS

          Dear Team, I am having approximately 4.9 GB of material, including PPTs and videos for uploading in zoho people LMS course. May I know what is the maximum limit limit for the course files Thanking you, With regards, Logeswar V Executive _ Operations
        • Dynamically prefill ticket fields

          Hello, I am using Zoho Desk to collect tickets of our clients about orders they placed on our website. I would like to be able to prefill two tickets fields dynamically, in this case a readonly field for the order id, and a hidden field for the seller
        • Optimize your Knowledge Base for better visibility by allowing search engine crawling and indexing

          All you need to know about no-follow and no-index in KB. What are article crawlability and indexability? Crawlability and indexability are vital for making an article visible and accessible to search engines. When a search engine crawls an article, it
        • Next Page