Add Claude in Zoho Cliq

Add Claude in Zoho Cliq



Let’s add a real AI assistant powered by Claude to your workspace this week, that your team can chat with, ask questions, and act on conversations to run AI actions on.

This guide walks you through exactly how to do it, step by step, with all the code you'll need.

Just copy, paste, replace the placeholders and you'll be good to go.


By the end of this guide, you’ll have:

  1. A Claude bot inside Zoho Cliq to have real back-and-forth conversations.
  2. The ability to @mention Claude in any channel and reply to a message and ask Claude to act on it.
  3. A message action to act on messages in Cliq by Claude. Additionally, pre-built actions to review code, generate mind maps, draft a reply for the selected message, or explain it like you’re new.
IdeaBefore you start:
1. A Zoho Cliq account with Developer access.
2. An Anthropic API key
3. Basic comfort with Deluge (optional — all code is provided
😉)

A. How to get an Anthropic API key?



1. To get an Anthropic API key, sign up at the Anthropic Console (console.anthropic.com).
2. Navigate to the API Keys tab, and click Create Key. 
3. You must add credits via the Billing section to activate the key. Copy the key immediately, as it cannot be viewed again.

Alert
Note: In this guide, the API key is pasted directly into the code for simplicity. But never, ever share your API key to others and double-check before sharing screenshots or code.

B. Create a Connection 

Claude needs permission to: Read chat messages and Fetch attachments (like PDFs) when prompted, for that let's create a connection for it.  ⓘ Learn more about connections

1. Go to the Connections module (in Bots & Tools) → Create Connection
2. Add a Connection name, for eg. "readmessageandfile"
3. Select:
ZohoCliq.Attachments.READ
ZohoCliq.Messages.READ
4. Create
Click Create, then authorize the connection. Copy the connection name, you'll paste it into the handlers in the next steps.

How to start

Go to Zoho Cliq → Settings → Bots & Tools 

Claude Bot:




  • Go to Bots → Create Bot.

  • Name it Claude and give it any description of choice.

  • First, let's create a Message handler to handle the conversations first.

  • Click edit code and copy paste the below code in it (follow along the comments to understand what each part does)

Idea

One API endpoint. That's all.


Both the bot and the message action use the same single Anthropic endpoint: POST /v1/messages. The only thing that changes between them is the system prompt and what you put in the messages array. Once you understand that, the rest is just assembly.
Explore API docs →


Message Handler:



What does this do: Fetches last 10 (customizable - but keep message limit small ( around 10–15 to avoid token overuse)) chat messages for additional context and enables natural chat conversations 


  1. info environment;
  2. botUniqueName = "BOT-UNIQUE-NAME";
  3. // Replace with your bot unique name
  4. cliqBaseUrl = environment.get("base_url");
  5. fetchRecentMessages = invokeurl
  6. [
  7. url :cliqBaseUrl + "/api/v2/chats/" + chat.get("id") + "/messages?limit=10"
  8. type :GET
  9. connection:"CONNECTION-NAME"
  10. //Read below how to create a connection, and paste here:
  11. ];
  12. info fetchRecentMessages;
  13. contentList = list();
  14. contentList.add({"role":"user","content":"Act as a conversational assistant. Reply to the message below in a friendly, informative, and well-organized way.\n\nGuidelines:\n- Respond only to the message provided.\n- Do not use memory or external context.\n- Be warm but professional.\n- Be clear and structured (use short paragraphs or bullet points if helpful).\n- Provide helpful details or clarification where useful.\n- If something is unclear, ask a polite follow-up question.\n- If action is needed, suggest a simple next step.\n- Do not include meta commentary.\n- Output only the reply.\n\n\nSTRICTLY USE * FOR BOLD, AND NEVER ** FOR BOLD MARKDOWN."});
  15. allMessages = fetchRecentMessages.get("data");
  16. for each  data in allMessages
  17. {
  18. type = data.get("type");
  19. if(type == "card" || type == "text")
  20. {
  21. getMessage = data.get("content").get("text").replaceAll("\n"," ");
  22. senderID = data.get("sender").get("id");
  23. if(senderID.startsWith("b-"))
  24. {
  25. contentList.add({"role":"assistant","content":getMessage});
  26. }
  27. else
  28. {
  29. contentList.add({"role":"user","content":getMessage});
  30. }
  31. }
  32. }
  33. info contentList;
  34. // Set up API headers
  35. apiHeaders = Map();
  36. apiHeaders.put("anthropic-version","2023-06-01");
  37. apiHeaders.put("Content-type","application/json");
  38. apiHeaders.put("X-Api-Key","INSERT-API-KEY-HERE");
  39. // Don't forget your API key!
  40. model = "claude-sonnet-4-5-20250929";
  41. requestPayload = {"max_tokens":1024,"messages":contentList,"model":model};
  42. // Make API call to Claude
  43. claudeApiResponse = invokeurl
  44. [
  45. url :"https://api.anthropic.com/v1/messages"
  46. type :POST
  47. parameters:requestPayload + ""
  48. headers:apiHeaders
  49. detailed:true
  50. ];
  51. info claudeApiResponse;
  52. if(claudeApiResponse.get("responseCode") == 200)
  53. {
  54. responseBody = claudeApiResponse.get("responseText");
  55. parsedResponse = responseBody.toMap();
  56. claudeMessage = parsedResponse.get("content").get(0).get("text").replaceAll("\n\n","\n").remove("---").remove("#");
  57. if(claudeMessage.length() > 4000)
  58. {
  59. claudeMessage = claudeMessage.subString(0,4000) + "...";
  60. }
  61. info "Claude's Response: " + claudeMessage;
  62. }
  63. else
  64. {
  65. responseBody = claudeApiResponse.get("responseText");
  66. parsedResponse = responseBody.toMap();
  67. claudeMessage = "*" + parsedResponse.get("error").get("type") + "* \n" + parsedResponse.get("error").get("message");
  68. info "API Error: " + claudeApiResponse;
  69. }
  70. responseContent = {"text":claudeMessage,"card":{"title":"Claude says...","icon":"https://uxwing.com/wp-content/themes/uxwing/download/brands-and-social-media/claude-ai-icon.png"}};
  71. info responseContent;
  72. info zoho.cliq.postToBot(botUniqueName,responseContent);
  73. return Map();


⚙️ Replace These Placeholders

BOT-UNIQUE-NAME (ⓘ How to find it?)
CONNECTION-NAME
INSERT-API-KEY-HERE



Mention Handler:



What does this do: This is to allow Claude to be @mentioned in any chat.
  1. userMessageText = "";
  2. fileAction = false;
  3. repliedMessage = false;
  4. if(message_details.get("message").containKey("replied_message"))
  5. {
  6. repliedMessage = true;
  7. replyMessageID = message_details.get("message").get("replied_message").get("id");
  8. messageType = message_details.get("message").get("replied_message").get("type");
  9. if(messageType == "text" || messageType == "card")
  10. {
  11. userMessageText = message_details.get("message").get("replied_message").get("text");
  12. }
  13. else
  14. {
  15. fileType = message_details.get("message").get("replied_message").get("file").get("type");
  16. if(fileType != "application/pdf")
  17. {
  18. return {"type":"banner","text":"Only PDF files are supported for this action","status":"failure"};
  19. }
  20. else
  21. {
  22. fileAction = true;
  23. }
  24. }
  25. }
  26. promptInstruction = "\"### Instructions ⓘ \nProvide a human-digestible, highly organized response (300-500 characters). Break down your output into bite-sized paragraphs and use bolding to guide the reader's eye. *Strictly avoid tables.* Use plenty of white space and only ### headings for a clean look. \n\n ### Formatting Protocol • \n - Bold: *text* \n - Italic: _text_ \n - Strike: ~text~ \n - Underline: __underline__ \n - Headers: ### Title \n - Quote: \"quote\" \n - Blockquote: > text \n - Bullets: Use • or → for lists \n - Emojis: Use ✨, 🚀, or 💡 to highlight key takeaways \n - Separator: --- \n\n ### and replace ** to *";
  27. userPrompt = "";
  28. if(message.trim().length() > 0)
  29. {
  30. userPrompt = "Action: " + message + "\n\n\n" + userMessageText + "\n\n\n" + promptInstruction;
  31. }
  32. else
  33. {
  34. userPrompt = "Action: " + userMessageText + "\n\n\n" + promptInstruction;
  35. }
  36. // Set up API headers
  37. apiHeaders = Map();
  38. apiHeaders.put("anthropic-version","2023-06-01");
  39. apiHeaders.put("Content-type","application/json");
  40. apiHeaders.put("ENTER-APIKEY-HERE");
  41. // Don't forget your API key!
  42. // Check if message is text-only or contains a file
  43. if(!fileAction)
  44. {
  45. // Handle text-only message
  46. requestPayload = {"max_tokens":1024,"messages":{{"content":userPrompt,"role":"user"}},"model":"claude-sonnet-4-5-20250929"};
  47. }
  48. else
  49. {
  50. // Handle message with file attachment
  51. uploadedFile = invokeurl
  52. [
  53. url :message_details.get("message").get("replied_message").get("file").get("url")
  54. type :GET
  55. connection:"ENTER-CONNECTION-NAME"
  56. ];
  57. info uploadedFile;
  58. // uploadedFile = message.get("content").get("file").get("name");
  59. base64EncodedFile = zoho.encryption.base64Encode(uploadedFile);
  60. if(message_details.get("message").get("replied_message").containKey("comment"))
  61. {
  62. comment = message_details.get("message").get("replied_message").get("comment");
  63. userPrompt = userPrompt + "\n" + comment;
  64. }
  65. else
  66. {
  67. userPrompt = userPrompt;
  68. }
  69. mediaType = "application/pdf";
  70. requestPayload = {"max_tokens":1024,"messages":{{"role":"user","content":{{"type":"document","source":{"type":"base64","media_type":mediaType,"data":base64EncodedFile}},{"type":"text","text":userPrompt}}}},"model":"claude-sonnet-4-5-20250929"};
  71. }
  72. info requestPayload;
  73. // Make API call to Claude
  74. claudeApiResponse = invokeurl
  75. [
  76. url :"https://api.anthropic.com/v1/messages"
  77. type :POST
  78. parameters:requestPayload + ""
  79. headers:apiHeaders
  80. detailed:true
  81. ];
  82. info claudeApiResponse;
  83. // Extract the actual text response
  84. if(claudeApiResponse.get("responseCode") == 200)
  85. {
  86. responseBody = claudeApiResponse.get("responseText");
  87. parsedResponse = responseBody.toMap();
  88. claudeMessage = parsedResponse.get("content").get(0).get("text").replaceAll("\n\n","\n").remove("---").remove("#");
  89. if(claudeMessage.length() > 4000)
  90. {
  91. claudeMessage = claudeMessage.subString(0,4000) + "...";
  92. }
  93. info "Claude's Response: " + claudeMessage;
  94. }
  95. else
  96. {
  97. responseBody = claudeApiResponse.get("responseText");
  98. parsedResponse = responseBody.toMap();
  99. claudeMessage = "*" + parsedResponse.get("error").get("type") + "* \n" + parsedResponse.get("error").get("message");
  100. info "API Error: " + claudeApiResponse;
  101. }
  102. responseContent = {"text":claudeMessage,"card":{"title":"Claude says...","icon":"https://uxwing.com/wp-content/themes/uxwing/download/brands-and-social-media/claude-ai-icon.png"}};
  103. info responseContent;
  104. if(repliedMessage)
  105. {
  106. responseContent.put("reply_to",replyMessageID);
  107. }
  108. info zoho.cliq.postToChat(chat.get("id"),responseContent);
  109. return Map();



Message Action
What does it do: Allow Claude to act on any message or file.

Quoteⓘ For files, we've extended this to only PDF file formats for now to keep implementation predictable and to avoid unsupported file formats

What we're adding:
1. When executed on any message, a form opens to prompt:

A. 🔍 Review code
Claude acts like a senior engineer who finds bugs, lists risks, suggest improvements, provides corrected code.



B. ✨ Explain like I'm new
Claude teaches you what it is, why it matters, how it works, an analogy or common mistakes for any concept.


C. 🧠 Make Mindmap

Converts content into a structured ASCII flow chart for explaining system designs, feature breakdowns or general product thinking.


D. 📌 Draft a reply
Give professional, concise business replies to address, asks clarifications, suggests next steps in a human tone. 


How to create:

1. Create a
Message Action, name it Ask Claude and give any description of your choice.



2. Message properties:  Text messages, Attachments, Links
3. Enter code as instructed below:
(Copy the function name and replace it in Line. 14)
  1. info message;
  2. returnForm = false;
  3. if(message.get("type") == "file")
  4. {
  5. fileType = message.get("content").get("file").get("type");
  6. if(fileType != "application/pdf")
  7. {
  8. return {"type":"banner","text":"Only PDF files are supported for this action","status":"failure"};
  9. }
  10. }
  11. inputs = list();
  12. inputs.add({"label":"Choose an action","name":"action","mandatory":true,"type":"radio","options":{{"value":"reviewcode","label":"🔍 Review Code"},{"value":"explainthis","label":"🧠 Make Mindmap"},{"value":"ExplainlikeImnew","label":"✨ Explain like I’m new"},{"value":"Draftreplyforthis","label":"📌 Draft reply for this"}}});
  13. inputs.add({"label":"More instructions","name":"additionalInstructions","placeholder":"You can provide additional instructions if needed.","min_length":"0","max_length":"500","mandatory":false,"type":"textarea"});
  14. return {"type":"form","title":"Ask Claude","hint":"What would you like Claude to do? Choose an action or write your own.","name":"INSERT-FUNCTION-NAME","button_label":"Submit","inputs":inputs,"action":{"type":"invoke.function","name":"INSERT-FUNCTION-NAME"}};
Next, let's create a function and then link it up to the built-Message action to open the form:



Form Function:



1.Go to Functions → Name your function (Eg. askclaude) and add description
2. Select Form function
3. Create



Once created, in the Form Submit Handler, paste this code:
  1. info form;
  2. info message;
  3. // Set up API headers
  4. apiHeaders = Map();
  5. apiHeaders.put("anthropic-version","2023-06-01");
  6. apiHeaders.put("Content-type","application/json");
  7. apiHeaders.put("ENTER-APIKEY-HERE");
  8. // Don't forget your API key!
  9. actionType = form.get("values").get("action").get("value");
  10. promptInstruction = "\"### Instructions ⓘ \nProvide a human-digestible, highly organized response (250-300 characters). Break down your output into bite-sized paragraphs and use bolding to guide the reader's eye. *Strictly avoid tables.* Use plenty of white space and only ### headings for a clean look. \n\n ### Formatting Protocol • \n - Bold: *text* \n - Italic: _text_ \n - Strike: ~text~ \n - Underline: __underline__ \n - Headers: ### Title \n - Quote: \"quote\" \n - Blockquote: > text \n - Bullets: Use • or → for lists \n - Emojis: Use ✨, 🚀, or 💡 to highlight key takeaways \n - Separator: --- \n\n ### and replace all ** to *";
  11. if(actionType == "reviewcode")
  12. {
  13. userPrompt = "🔍 You are a senior engineer. \nReview this code: \n• List bugs or logical errors \n• Note assumptions and risks \n• Suggest improvements \n• Provide corrected code \n• Explain why your version is better\n\n\n" + promptInstruction;
  14. }
  15. else if(actionType == "explainthis")
  16. {
  17. userPrompt = "🧠 You are a systems thinker. \n•Convert the input into a visual flow chart using plain text. \n•Strict Output Rules \n•Output ONLY inside a triple backtick code block \n•Do NOT use Mermaid \n•Do NOT write paragraphs \n•Do NOT explain anything \n•Do NOT use bullet lists outside structure \n•Use ASCII connectors to form a real flow chart \n•Use arrows (→, ↓, ↳, ├──, └──) to show relationships \n•Maintain clear hierarchy and spacing \n•One single root at the top \n•Logical directional flow (top → down) \n•Structure Requirements \n•Root node at top \n•First-level branches below \n•Subpoints indented \n•Cross-links if relevant \n•Clean spacing \n•No duplicated nodes \n•Required Format Example \n•MAIN IDEA \n•Branch 1 -> Subpoint -> Subpoint \n•Branch 2 -> Subpoint ->Subpoint \n•Branch 3 -> Subpoint -> Subpoint\n\n\n" + promptInstruction;
  18. }
  19. else if(actionType == "ExplainlikeImnew")
  20. {
  21. userPrompt = "✨ You are a teacher for beginners. \nExplain: \n• What it is \n• Why it matters \n• How it works (steps) \n• A simple analogy \n• One common beginner mistake\n\n\n" + promptInstruction;
  22. }
  23. else if(actionType == "Draftreplyforthis")
  24. {
  25. userPrompt = "📌 You are a professional responder. \nReply to this message: \n• Directly address main point \n• Ask for clarification if needed \n• Suggest next steps \n• Keep it concise and clear \n• Make sure message in a buisness casual tone, consise, human written.\n\n\n" + promptInstruction;
  26. }
  27. if(form.get("values").get("additionalInstructions").length() > 0)
  28. {
  29. userPrompt = userPrompt + "\n" + form.get("values").get("additionalInstructions");
  30. }
  31. // Check if message is text-only or contains a file
  32. if(message.get("type") == "text" || message.get("type") == "card")
  33. {
  34. // Handle text-only message
  35. userMessageText = message.get("text");
  36. requestPayload = {"max_tokens":1024,"messages":{{"content":userPrompt + "\n\n" + userMessageText,"role":"user"}},"model":"claude-sonnet-4-5-20250929"};
  37. }
  38. else
  39. {
  40. // Handle message with file attachment
  41. uploadedFile = invokeurl
  42. [
  43. url :"https://cliq.zoho" + environment.get("tld") + "/api/v2/files/" + message.get("content").get("file").get("id")
  44. type :GET
  45. connection:"ENTER-CONNECTION-NAME"
  46. ];
  47. info uploadedFile;
  48. base64EncodedFile = zoho.encryption.base64Encode(uploadedFile);
  49. if(message.get("content").containKey("comment"))
  50. {
  51. comment = message.get("content").get("comment");
  52. userPrompt = userPrompt + "\n" + comment;
  53. }
  54. else
  55. {
  56. userPrompt = userPrompt;
  57. }
  58. mediaType = message.get("content").get("file").get("type");
  59. mediaType = "application/pdf";
  60. requestPayload = {"max_tokens":1024,"messages":{{"role":"user","content":{{"type":"document","source":{"type":"base64","media_type":mediaType,"data":base64EncodedFile}},{"type":"text","text":userPrompt}}}},"model":"claude-sonnet-4-5-20250929"};
  61. }
  62. info requestPayload;
  63. // Make API call to Claude
  64. claudeApiResponse = invokeurl
  65. [
  66. url :"https://api.anthropic.com/v1/messages"
  67. type :POST
  68. parameters:requestPayload + ""
  69. headers:apiHeaders
  70. detailed:true
  71. ];
  72. // info claudeApiResponse;
  73. // Extract the actual text response
  74. if(claudeApiResponse.get("responseCode") == 200)
  75. {
  76. responseBody = claudeApiResponse.get("responseText");
  77. parsedResponse = responseBody.toMap();
  78. claudeMessage = parsedResponse.get("content").get(0).get("text").replaceAll("\n\n","\n").remove("---").remove("#");
  79. if(claudeMessage.length() > 4000)
  80. {
  81. claudeMessage = claudeMessage.subString(0,4000) + "...";
  82. }
  83. info "Claude's Response: " + claudeMessage;
  84. }
  85. else
  86. {
  87. responseBody = claudeApiResponse.get("responseText");
  88. parsedResponse = responseBody.toMap();
  89. claudeMessage = "*" + parsedResponse.get("error").get("type") + "* \n" + parsedResponse.get("error").get("message");
  90. info "API Error: " + claudeApiResponse;
  91. }
  92. responseContent = {"text":claudeMessage,"card":{"title":"Claude says...","icon":"https://uxwing.com/wp-content/themes/uxwing/download/brands-and-social-media/claude-ai-icon.png"},"reply_to":message.get("id")};
  93. info responseContent;
  94. info zoho.cliq.postToChat(chat.get("id"),responseContent);
  95. return Map();

When triggered: Opens a form → User selects an action → Adds additional instructions → Submits → Claude processes the selected message


And that's it. You're Claude integration is ready to be used. 



What's Next:

What you built today is just the foundation.

Shape it around how your team actually works. Extend it to turn discussions into action items, review PRs before they’re merged, generate standup updates, extract tasks automatically, or create knowledge snippets from resolved threads.

Start with one real pain point. Solve it well. Then layer more intelligence on top.

The structure is already there. The possibilities are yours.

🔗 Explore Zoho Cliq: Developer Platform
🔗 Explore Anthropic API Docs

Questions? Comments below. 
Looking forward how you'll build and go make it your own. 🚀
    • Sticky Posts

    • Add Claude in Zoho Cliq

      Let’s add a real AI assistant powered by Claude to your workspace this week, that your team can chat with, ask questions, and act on conversations to run AI actions on. This guide walks you through exactly how to do it, step by step, with all the code
    • 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
    • Zoho Cliq REST APIs v3 : A complete guide to what's changed and why 

      APIs are not just consumed by a developer with numerous automations and a series of open browser tabs. They are parsed by LLMs, fed into agent pipelines, and auto-completed by AI coding assistants that have zero tolerance for inconsistency. A verb tucked
    • Cliq Bots - Post message to a bot using the command line!

      If you had read our post on how to post a message to a channel in a simple one-line command, then this sure is a piece of cake for you guys! For those of you, who are reading this for the first time, don't worry! Just read on. This post is all about how
    • Automating Real-Time Zoho Bookings Alerts in Zoho Cliq

      Enable your teams to respond in seconds by bridging the gap between booking confirmation and team notification. No sticky notes, no calendar nudges and no follow-up frenzies. For businesses that rely on scheduled appointments, real-time visibility is
    • Recent Topics

    • The reason I switched away from Zoho Notebook

      My main reason for switching to Zoho was driven by three core principles: moving away from US-based products, keeping my data within India as much as possible, and supporting Indian companies. With that intent, I’ve been actively de-Googling my digital
    • I want to prefill CRM Account information using the GSTIN of the Customer

      Currently i need to add account details manually in zoho crm and when it syncs in zoho books manual working needs to be done. Whereas in zoho books i can prefill the customer details using the GSTIN which is great feature. Can the same be enabled for
    • #5 Is This Actually The Right Tool For Me?

      Day 5: Before Meera brought six months of business history into Zoho Invoice, she stopped and asked herself a very sensible question: Is this actually the right tool for me? It is much easier to ask that now than after moving all your data. The Usual
    • Timesheet entry and comment on the actual timesheet

      Dear madam/sir, It would be really helpful if we could add an option to comment on a specific timesheet entry, after the employee logs a time-log. Would that be possible in the future? Or can you suggest another way to do this?
    • OpenAI Is Moving to the Responses API: Here's What It Means for SalesIQ

      OpenAI has deprecated its Assistants API and is moving to the Responses API. If you're using OpenAI Assistants with SalesIQ, you may be wondering if you need to make any changes to your existing setup. You don't. SalesIQ has already taken care of the
    • Need Native Support for docx files in Zoho Writer

      Absolutely love Zoho Writer, but often need to share files by email with people who are in the Office ecosystem. Downloading a file as docx, then sending it by email, getting the comments back, converting it to Zoho format, editing it, then converting
    • CRM integration issues

      hi Just start testing Campaigns. Read up on up on these issues but can not find an answer. I am super admin. 1) its only showing 1002 contacts, I have a 2500 plan which is confirmed in dashboard. I says it sync'd 1400. I've looked at missing contacts,
    • What's New in Zoho Expense: Integrated Business Travel and AI-Powered Expense Management

      This release brings a wide range of updates across Zoho Expense, including new AI-powered capabilities, enhancements to corporate cards, expense management, audits, and more. Keep reading to know how the new updates can transform your travel and expense
    • ChatGPT Plugin / MCP Server auth error

      Hi all I'm trying to connect the ChatGPT plugin for Zoho CRM but after username stage of the auth process, I get this error from the URL https://mcp.zoho.eu/mcp-client/ {"error_description":"Invalid request url, Request is not as per defined in oauth
    • Project Management Platforms for AI Agents: What Matters Most?

      Zoho Projects is already going beyond basic AI assistance with MCP, AI Bridge, and integrations that let AI models access project data and perform actions. That raises an interesting question: what should a project management platform for AI agents actually
    • Cliq iOS can't see shared screen

      Hello, I had this morning a video call with a colleague. She is using Cliq Desktop MacOS and wanted to share her screen with me. I'm on iPad. I noticed, while she shared her screen, I could only see her video, but not the shared screen... Does Cliq iOS is able to display shared screen, or is it somewhere else to be found ? Regards
    • Sync workdrive feature inside ZohoCRM

      Hi, I'm exploring the new workdrive/ZohoCRM connector released by Zoho to replace the free extension workdriveforCRM which is decomissioned https://marketplace.zoho.com/app/crm/zoho-workdrive-for-zoho-crm I'm rather upset with this long awaited feature,
    • Adding Custom Status Options in Work Order Action Menu

      Hello FSM Team, We would like to inquire if it is possible to add more custom options in the Work Order action/status dropdown (e.g., Cancel, Terminate, Non-Billable, Void, etc.). Currently, the available options are limited, and we are unable to customize
    • Timesheet Task Icons

      In the image below which shows the task field drop down when creating a timesheet against a project and task. What do the icons mean the the right side column against each task? I can't find any documentation or guide that explains what the no entry sign,
    • Open Records in a New Browser Tab

      Hi FSM Team, Just a suggestion: It would be helpful to have a right-click → Open in New Tab option in FSM, similar to CRM. This should ideally work for any clickable record or module, allowing users to open multiple records in separate tabs without losing
    • Facturation électronique 2026 - obligation dès le 1er septembre 2026

      Bonjour, Je me permets de réagir à divers posts publiés ici et là concernant le projet de E-Invoicing, dans le cadre de la facturation électronique prévue très prochainement. Dans le cadre du passage à la facturation électronique pour les entreprises,
    • Marketing Tip #18: Make your online store mobile-friendly to improve traffic

      Most online shoppers browse on their phones first. If your store is hard to read, slow to load, or tricky to navigate on mobile, they’ll bounce fast. A mobile-friendly store doesn’t just look nice; it improves engagement, reduces drop-offs, and helps
    • Cannot add note to record on mobile

      In the latest version of the mobile app - if a record already has notes associated with it - you can add a note via the mobile app - if a record does not have previous notes there is no way to add a new one - it allows me only to send email
    • Admin Logging in as another User

      How can a Super Admin login as another user. For example, I have a sales rep that is having issues with their Accounts and I want to view their Zoho Account with out having to do a GTM and sharing screens. Latest Update (27th April 2026): With the early
    • Dashboards for Customers

      Is it possible to build dashboards for each customers in the community for their tickets?
    • Custom color coding for your entities

      Our brains are fine tuned to recognize colors before any text or shapes, making color coding a powerful tool to organize data and find items quickly. Color coding of our day-to-day work help with quickly processing the information, reducing cognitive
    • The Social Wall: August 2026

      Hello everyone. Welcome to the August 2026 edition of The Social Wall. This month, we're bringing you updates that make it easier to reach your audience, manage more channels, and streamline your publishing workflow. Here’s what’s new. WhatsApp bulk messaging
    • Check out in Meetings

      Why there is no check out in Meetings of Zoho CRM, very difficult to track
    • How do I get to "Admin Panel"

      I just started a Cliq account. I am the sole administrator. As I read the documentation, I keep seeing reference to an "Admin Panel". I see no way to access this from my Cliq account. How do I access this panel?
    • 【初開催! オンライン】Zoho Campaigns メール配信の基礎・活用勉強会を開催します! 10/15 参加無料

      ユーザーの皆さま、こんにちは。 Zoho コミュニティグループの中野です。 Zoho ユーザーコミュニティ初となる、メールマーケティングをテーマにしたオンライン勉強会を開催します! ▶︎イベント詳細・参加登録はこちら 今回取り上げるサービスは「Zoho Campaigns」です。 「Zoho CRMとZoho Campaignsのどちらからメールを配信すればよいか分からない」 「一斉配信はできるようになったけれど、現在のリスト管理や設定が正しいか不安」 「メールを送るだけで終わり、配信後の改善につなげられていない」
    • Lookups and Custom Modules

      I created a Custom Module that I'm calling "Item Purchasing Group". This module will store information for groups of Items that must be purchased together (including minimum overall quantities and/or values, etc.). This will have a one-to-many relationship
    • Marketing Tip #46: Run flash sales the right way

      A flash sale can do a lot for your store. It can clear slow-moving inventory, spike revenue on a slow day, or reward your most loyal customers. But if done carelessly, flash sales can backfire. Customers start expecting discounts, stop buying at full
    • Introducing Smart Fields in Zoho Forms

      Hello form builders! We are excited to introduce Smart Fields in Zoho Forms - a faster way to add calculations to your forms without writing formulas. Instead of creating multiple fields and configuring complex calculations yourself, you can now drag
    • Checkbox not displaying correctly in subform

      Greetings: I have shared my app (wv) with support.  I am having problems with a checkbox field not displaying correctly in a subform.  The main form is called volunteers and the subform is called volunteers_subform.  The field in question is called roles. When you access the subform by itself the checkbox lookup displays as checkboxes.  But when you view it in the main volunteers form, it displays as a multi-select dropdown instead.   I have attached jpegs showing the difference.   Any thoughts?
    • Unbundle feature for composite items

      We receive composite items from our vendors and sell them either individually or create other composite items out of them. So, there is a lot of bundling and unbundling involved with our composite items. Previously, this feature was supported in form
    • Valid characters for use in email addresses using Zoho's apps/APIs

      We have found an issue with the + sign character in zoho subs - we are allowed to create a customer with an email address that has a plus sign but the API doesn't allow the + so the billing portal is not created. We are going to prevent users from using
    • Expand Zoho Analytics Spatial Capabitlities

      Dear Analytics team Thanks for the great product - I'm a big fan on Analytics and the monthly release highlights is one of my favourite emails to receive. I'd like to request expansion and improvement of Zoho Analytics spatial data capabilities, namely:
    • Automate customer follow-ups with Sequences in Bigin

      Greetings, We hope you're all doing well! We're happy to announce a new feature that we've added to Bigin. Following up with every lead at the right time can be challenging, especially when your team is managing multiple conversations across emails, calls,
    • Displaying only unread tickets in ticket view

      Hello, I was wondering if someone might be able to help me with this one. We use filters to display our ticket list, typically using a saved filter which displays the tickets which are overdue or due today. What I'd really like is another filter that
    • Can we have an automated TDS Receivable Recon with Form 26AS of Income Tax Portal ?

      Can we have an automated TDS Receivable Recon with Form 26AS of Income Tax Portal ?
    • Customers would like to add tips when paying in Client Portal

      I am happy with the clean interface of the Client Portal. However, I am running into a challenge: my customers would like to be able to add tips/gratuities when making payments. Currently, this is very clunky because they have to 1) manually over-pay,
    • Tag Limi?

      is there any way to create more than 20 tags? 
    • prefill_data for Creator + Merge & Sign

      Hello, Is there an option to use prefill_data for signer fields from creator? I see the option for CRM but it will not work with creator? I have tried passing the value in the signer data, and that also does not work. Alternatively, is there a way to
    • Delug script

      I have been looking at auto-update a amount (home currency) field from another module. Zoho native multicurrency was used in the other module (we have 4 here). Custom script was input with no error, but the field was not updated on trigger. Script as
    • Can I Build a Gaming Website Using Zoho? Need a Quick Roadmap

      Hi Dear Members, I want to create a gaming website using Zoho. Is it possible? My goal is to build a sleek, unique, easy-to-navigate, and fast-loading website for a gaming project. I want the site to look professional, user-friendly, and optimized for
    • Next Page