Zoho CRM Note @Mention → Zoho Cliq Notification

Zoho CRM Note @Mention → Zoho Cliq Notification

Hi all,

Just sharing a custom function that I created in case it's useful to others. I wanted a way for users to receive a Zoho Cliq notification whenever they are @mentioned in a CRM note, while keeping all communication inside CRM. Users are already notified via email but this provides a second notification layer that our team generally prefers. This setup uses a custom Deluge function and a Cliq bot to send notifications dynamically to the mentioned users.

What this does:

  • Detects @mentions in CRM Notes
  • Identifies the mentioned users automatically (no mapping required)
  • Sends each mentioned user a direct Cliq notification
  • Message includes:
    • Who mentioned them
    • Deal name
    • Direct link to the Deal
  • Messages are sent from a Cliq bot (not a user)

Step 1: Create a Cliq Bot

In Zoho Cliq:

  • Go to Developer Space → Bots
  • Create a new bot (example name: crmnotifier)
  • Make sure users can receive messages from this bot

Step 2: Create a Cliq Connection in CRM

In Zoho CRM:

  • Go to Setup → Developer Space → Connections
  • Create a new connection for Zoho Cliq
  • Give it a name (example: cliq_connection)
  • Authorize it

Step 3: Create the Deluge Function

In CRM:

  • Go to Setup → Developer Space → Functions
  • Create a new function and paste the following:
void automation.cliqMentionFromDealNote(String dealId)
{
dealUrlBase = "https://crm.zoho.com/crm/orgXXXXXXXXXXXX/tab/Deals/";
botName = "crmnotifier";

deal = zoho.crm.getRecordById("Deals",dealId);
dealName = ifnull(deal.get("Deal_Name"),"Deal");
dealUrl = dealUrlBase + dealId;

notes = zoho.crm.getRelatedRecords("Notes","Deals",dealId);

if(notes != null && notes.size() > 0)
{
note = notes.get(0);
noteContent = ifnull(note.get("Note_Content"),"");

createdBy = "Unknown";
if(note.get("Created_By") != null)
{
createdBy = ifnull(note.get("Created_By").get("name"),"Unknown");
}

nl = hextotext("0A");

parts = noteContent.toList("user#");
alreadySent = List();

for each part in parts
{
if(part.contains("#"))
{
idParts = part.toList("#");

if(idParts.size() > 1)
{
cliqPart = idParts.get(1);
cliqId = cliqPart.toList("]").get(0);

if(cliqId != null && cliqId != "" && !alreadySent.contains(cliqId))
{
msg = "*CRM Mention*" + nl + nl;
msg = msg + "From: " + createdBy + nl;
msg = msg + "Deal: " + dealName + nl;
msg = msg + dealUrl;

message_data = Map();
message_data.put("text",msg);
message_data.put("userids",cliqId);

response = zoho.cliq.postToBot(botName,message_data,"cliq_connection");

alreadySent.add(cliqId);
}
}
}
}
}
}

Replace orgXXXXXXXXXXXX with your actual CRM org ID.


Step 4: Create a Workflow Rule

In CRM:

  • Go to Setup → Automation → Workflow Rules
  • Module: Deals
  • Trigger: On Note Create or Edit
  • Condition (optional): Note Content contains "user#"
  • Action: Function
    • Select the function you created
    • Map: dealId = Deals.Id

How it works:

When someone writes a note and tags users, CRM stores the mention internally like:
crm[user#CRM_USER_ID#CLIQ_USER_ID]crm

The function parses this, extracts the Cliq user IDs, and sends each mentioned user a notification via the bot.


Example notification in Cliq:

CRM Mention

From: John Doe
Deal: Example Deal
https://crm.zoho.com/


Notes:

  • No user mapping is required
  • Works dynamically for all users
  • Messages come from the bot, not a person
  • Cliq is used for notification only; users click into CRM to view/respond

    All the best,
    Sonny
    Jelinek Cork Group
    www.jelinek.com