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

    • Customer payment alerts in Zoho Cliq

      For businesses that depend on cash flow, payment updates are essential for operational decision-making and go beyond simple accounting entries. The sales team needs to be notified when invoices are cleared so that upcoming orders can be released. In contrast,
    • 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
      • Recent Topics

      • Email address for forwarding is not saving and there's no confirmation ema

        Steps to reproduce: 1. Enter my forward email in the email forward section of the account 2. Click save 3. See a notification stating saved successfully 4. Refresh the page, no forward email is saved 5. No email confirmation received at the forwarding
      • This domain is not allowed to add in Zoho. Please contact support-as@zohocorp.com for further details

        This is the error i keep getting when trying to use my Zoho Domain Mail. This domain is not allowed to add in Zoho. Please contact support-as@zohocorp.com for further details Find attached. I hope this can be resolved very quickly so i can go on and make
      • Auto CC - Moving Departments

        We have Auto CC e-mail replies to your support mailbox enabled. We have two departments: Helpdesk (helpdesk@domain.com) Delivery (delivery@domain.com) If we create a Helpdesk ticket, and reply, replies are CC'd to helpdesk@domain.com (OK) We then move
      • unable to send message reason 554 5.1.8 Email outgoing blocked

        unable to send message reason 554 5.1.8 Email outgoing blocked
      • Mailk got blocked / Inquiry About Email Sending Limits and Upgrade Options

        Dear Zoho Support Team, My name is Kamr Elsayed I created this account to use for applying for vocational training in Germany. As part of this process, I send multiple emails to different companies. However, after sending only 8 emails today, I received
      • SMTP email sending problem

        Hello, I've sent emails before, but you haven't responded. Please respond. My work is being disrupted. I can't send emails via SMTP. Initially, there were no problems, but now I'm constantly receiving 550 bounce errors. I can't use the service I paid
      • unblock my zoho mail account. outlines@zoho.com

        please unblock my zoho mail account, outlines@zoho.com
      • Unable to see free plan option

        Hello Zoho Support Team, I hope you are doing well. I am trying to sign up for Zoho Mail, but I am unable to see the option for the free plan. Could you please guide me on how I can access or activate the free plan? Thank you for your assistance.
      • Outgoing blocked: Unusual activity detected.

        I just made payment for my Zohomail Today and have been debited so i will like to be Unblocked because this is what it says (Outgoing blocked: Unusual activity detected) Thank you i await your swift responses
      • How to remove some users in zoho accounts

        How to remove some users in Zoho accounts.
      • Forwarder

        Hi, I tried to add a forwarder from which emails are sent to my main zoho account email . However, it asks me for a code that should be received at the forwarder email, which is still not activated to send to my zoho emial account. So how can I get the
      • Forwarder

        Hi, I tried to add a forwarder from which emails are sent to my main zoho account email . However, it asks me for a code that should be received at the forwarder email, which is still not activated to send to my zoho emial account. So how can I get the
      • DKIM cannot be enabled for the domain as no verified default selector present

        Hi Support Team, For Domain DKIM record trying to enable status. but showing error "DKIM cannot be enabled for the domain as no verified default selector present" So, please resolve the issue. Thank you.
      • I can't log in to my account on Thunderbird

        I've just had to rebuild my PC (calamitous mess from Microsoft with Win10/Win 11 'upgrade' - they confirmed I had to start with a new build). I have used Zoho mail for years via Mozilla Thunderbird, but now I've had to download the latest version of TBird,
      • Sorten the domain of zoho mail ids

        I recently created zoho mail id and am quite excited with the features. But one issue ig nobody wanna type this big zohoaccounts.com I mean silly bold Suggestion zmail.com (sound gmail) (attraction) or some genz words looks cool
      • Weekly Tips : Customize your Zoho Mail Notifications

        In a professional context, email communication remains one of the most crucial channels for staying connected and managing workflows. Keeping track of your emails, task updates, or important announcements can be overwhelming—especially if you are juggling
      • How to move emails to Shared Mailbox?

        Hello, I created a Shred Mailbox instead of using a distribution group. But I cannot move previous emails to certain shared mailbox. Is it possible move some emails from inbox to shared mailbox?
      • Email task creator when task is updated/marked complete

        I am looking for a way to notify the creator of a task in zoho todo when - Task is updated Task is closed Comments entered 1 and 2 are critical, and I cannot find a zoho flow to do this. There is no way that as a manager I will know when someone has completed
      • The attendees will now be redirected to the landing webpage when they exit the webinar, set by the organizer.

        Hello All, In the latest version of the Zoho Meeting iOS mobile app (v1.3.16), we have brought in the below enhancements:   Post Webinar Re-direction Revamped exit UI for Webinar Post Webinar Re-direction:  The attendees will now be redirected to the
      • Download API file contents from browser

        Hi Team - is there something being planned to be able to trigger file downloads from the browser via a deluge script? i.e. retrieve a file via API, trigger the file download directly from the browser. Or... using the convertToPdf function (https://www.zoho.com/deluge/help/functions/file/convert-to-pdf.html)
      • When using "locations" in zoho books, can you keep the two locations totally separate from each other?

        I am looking to add a location but I don't want to intermingle the banking or other accounts. I want that to be like two separate independent branches that use different banking accounts, accounts payable, and accounts receivable. The people who are in
      • Adding a Channel to SalesIQ

        I have a client that currently uses Zoho CRM and Zoho Desk. They would like a live chat to place on their website that has a mobile app and chat bots (something like SalesIQ). However, they would also like to have all this work over SMS as well. Does the SalesIQ API allow this? Can I add visitors without them being a visitor on a website? Thanks! Bryan Redeagle
      • How Do I Refund a Customer Directly to Their Credit Card?

        Hi, I use books to auto-charge my customers credit card. But when I create a credit note there doesn't seem to be a way to directly refund the amount back to their credit card. Is the only way to refund a credit note by doing it "offline" - or manually-
      • Zoho Flow Needs to Embrace AI Agent Protocols to Stay Competitive

        Zoho Flow has long been a reliable platform for automating workflows and integrating various applications. However, in the rapidly evolving landscape of AI-driven automation, it risks falling behind competitors like n8n, which are pioneering advancements
      • Important Features Missing

        Hey all I love linkthread, but i am missing some important features. I want to be able to include my Google Tag Manager. I have all the important stuff in my GTM Container: Facebook Pixel, LinkIn Pixel, Zoho Pagesense and so on. So i am able to do retargeting
      • Zoho SignForms: Prefill parameters with spaces render as “+” in the document (even when using %20)

        Hello Zoho Sign team, we are using SignForms with prefill parameters passed via URL. Spaces in parameter values are being rendered as “+” in the finalized document—even when we URL-encode spaces as %20. This is critical for us because we prefill addresses
      • Currency selector (based on variable) usage in comparsion

        Hi, I've developed a currency selector based on the following topic, and it's working well in pivot tables and charts: https://help.zoho.com/portal/en/community/topic/how-can-i-allow-my-users-to-choose-a-currency-for-the-dashboard I also have a comparison
      • Customize Column in Projects - Default View for Template?

        Is there a way to have the columns you'd like to see added to a template? I want my customized columns to show up every single time I create a project from that template. It appears I can customize them in the template but when I create the project they do not transfer over.  Template: See below how the columns in order are : Task, Owner, Status, Assigned, Website URL, Blog H1..etc. When I create a project from that same template it comes out as: Task, Owner, Status, Tags, Start Date, End Date, etc
      • Ask the Experts 24: Analytics, data administration, and mobile experience with Zoho Desk

        Hello Everyone! Welcome back to the Ask the Experts(ATE) series! We were so focused on our Autumn 2025 release that we didn't host an ATE session last month. In this month's ATE, we'd like to expand our areas for discussion: we'd like to listen to your
      • Multi-Page Forms in Zoho Creator!

        Let’s make long applications easier to handle by dividing them into pages, adding a progress bar, and guiding users step by step through complex data entry. This would be a total game-changer for the user experience and could significantly boost completion
      • Email login error

        Login successfully but email page error
      • Shared Mailboxes Disappeared

        Zoho Mail users in our company haven't been able to see their Shared Mailboxes for the past few hours. I've checked with App and Web Access, but they can't access them. When I send emails to their addresses, I get no error messages. They're still visible
      • Remote Server is misconfigured

        Dear Team, I am unable to use email id as remote server is misconfigured. It would be really great if you could help on this and get this resolved. Thanks & Regard Rohit Gupta
      • why cant i access my email account. it keeps asking me for reverifiying my account by entering my password.

        I cant access my account. it keeps asking me for reverifcaton by entering my password. once its entered it asks for it over and over.
      • Free webinar alert on October 16 - Less Complexity, More Security: Workplace + Directory

        Hello Zoho Workplace Community! Security and productivity shouldn't be at odds—and with Zoho, they're not. Discover how Zoho Workplace + Directory delivers seamless collaboration with enterprise-grade security, all in one integrated ecosystem. Join our
      • Email Recall Feature In Zoho Mail Which Should Also Work For Outside Organisation Members

        Add a feature to recall or undo sending an email within a configurable short time window (e.g., 30 seconds to 2 minutes) after hitting send, similar to Gmail’s undo send. Currently the sent email can not be recall If the recipient is not from within your
      • Workdrive and ChatGPT Team Synced Connectors

        Hi, we want to be able to integrate Zoho Workdrive with OpenAI’s ChatGPT Team plan. Google Drive and OneDrive both offer this, zoho please catch up asap. We dont want to have to put our company files in google drive, we want to allow chatgpt Team edition
      • Alias Name (on items) use case in Zoho inventory

        Hey, Hope everyone is well. Wondering if anyone can shed some light on the use case of Alias Names on Products in Zoho Inventory? Cheers, Chris
      • Updating an Invoice Line Item's Discount Account via API Call / Deluge Custom Function

        I need help updating an invoice line item's discount account via API. Below is a screenshot of the line item field I am referring to. Now the field to the left of the highlighted field (discount account) is the sales income account. I am able to modify
      • Send e-mail with attachments

        Dear Zoho, How is that possible in Zoho Flow to send an e-mail with attachment?  Just a simple example: Zoho Flow checks my Zoho mails and if the conditions starts the trigger then I would like to send an email with the original email's attachment. Any idea? BR, Adam
      • Next Page