Kaizen #156 - Enhancing Mass Communication in Zoho CRM with a Custom Button Widget

Kaizen #156 - Enhancing Mass Communication in Zoho CRM with a Custom Button Widget




Hello code enthusiasts! 

Welcome to a fresh week of Kaizen! In this post, you will learn how to build a custom button widget to boost mass communication of your business using SMS notifications and pre-recorded calls within Zoho CRM. 

Business Scenario

Timely communication with customers is crucial in any business to send important updates, reminders, and promotional messages. 

Imagine you are managing a sales team, and your business regularly sends promotional offers to hundreds of customers. Typically, you would need to export customer details to a separate broadcasting system, create the messages, and send them manually. 

Instead of manually making individual calls and messages about the offer, you can now leverage this custom button widget placed in the mass menu within Zoho CRM to send personalized SMS notifications or even recorded voice calls to your customers. 

Creating a Custom Button Widget

Let us look at the steps to create a widget for the above-mentioned functionality. 

1. Log in to your Zoho CRM, go to Setup>Customization>Modules and Fields and select your desired Module. For this demo, we will choose the Leads module.
2. In the Leads module, switch to the Buttons tab and click Create New Button.
3. Follow the steps outlined in this help page and create a new button in the Mass Action Menu with its action defined by a widget



4. A pop-up appears for you to choose either from the available local widgets or create a new widget. 
5. Follow the steps provided in this kaizen to create a new widget for this use case.


Code Logic for Mass Communication

6. Here is the code logic to send broadcast SMS notifications and pre-recorded calls to the selected leads. 
  • Build the widget HTML page with the following elements shown in the GIF for obtaining user input like phone fields, sms/voice call preference, and the message content.


For voice calls, the entered text message will be converted to speech using Twilio's services.
  • The current module (Leads) and the selected record IDs are passed to the widget through the on PageLoad callback function.
  • For the current module, we used the Zoho CRM Meta JS SDK to get fields that have phone data type in it. These fields are listed in the Phone Fields dropdown, allowing the user to select the desired phone numbers that Twilio should use to send SMS or make calls. 
  • The COQL API SDK helps fetch values from the selected Phone fields in the dropdown for the selected record IDs. 
  • Depending on the selected action SMS or Voice Call tab, the corresponding Twilio Message or Call API will be triggered for communication. 
For this demo, we used the Twilio APIs for sending SMS and making pre-recorded calls, but you can use any cloud communication platform of your choice.

    const context = { };
    async function getPhoneNumbers() {
const phoneFieldsDropdown = document.getElementById('phone-fields-dropdown');
const selectedValues = Array.from(phoneFieldsDropdown.options).filter(option => option.selected).map(option => option.value);
    if (!selectedValues.length) {
return showAlert('error', 'Please select atleast one phone field');
}
const ids = context.recordIds.map(x => `'${x}'`).join(', ');
    const select_query = `SELECT ${selectedValues.join(', ')} FROM ${context.module} WHERE id in (${ids})`;
    const {data} = await ZOHO.CRM.API.coql({select_query});
    const phoneNumbers = [];
data.forEach(x => {
        Object.keys(x).forEach(key => {
            if (key !== 'id' && x[key]) {
                phoneNumbers.push(x[key]);
            }
        });
});
    return phoneNumbers;
}
    ZOHO.embeddedApp.on("PageLoad", function (data) {
// Get the current module name and selected record ids
const {Entity, EntityId} = data;
    context.module = Entity;
    context.recordIds = EntityId;
    // Get the phone fields for current module
    ZOHO.CRM.META.getFields({Entity}).then(
    function (response) {
const {fields} = response;
const phoneFields = fields.filter(x => x.data_type === 'phone').map(x => ({value: x.api_name, label: x.display_label }));
    new Choices('#phone-fields-dropdown', {
        removeItemButton: true,
    choices: phoneFields,
    placeholder: true,
    placeholderValue: 'Select Phone Fields to be used'
});
    ZOHO.CRM.UI.Resize({height:"400", width:"700"});
});
    // Initialize twilio credentials
    twilio.init("$YOUR_ACCOUNT_SID", "$YOUR_AUTH_TOKEN", "+YOUR_TWILIO_NUMBER");
})
    ZOHO.embeddedApp.init();

Try It Out!

To try this out, a fully functional code sample is attached to this post. All you have to do is replace your Twilio credentials on line 185 and everything else is already setup for you.

Widget in Action
  1. Select multiple records in the Leads module. 
  2. Click Broadcast (custom widget button) to open a streamlined interface (we have used Twilio for this demo).
  3. Select the Phone Fields to which you need to send the message / pre-recorded call. 
  4. Choose SMS or Voice Call in the tab based on your requirement.
  5. Enter your message and hit Send. 




                                    


Ta-daa! The messages go out to all the selected records immediately. You can also use any other third-party cloud communication platform of your choice instead of Twilio. 

Caution!

Since the Twilio Message and Call APIs are triggered from the UI, the Twilio authentication will be accessible to anyone with access to the Zoho CRM organization where this widget is deployed.

Similar Scenarios

  • Sales Teams can send follow-up reminders in bulk to multiple leads after an event. 
  • Support Teams can inform customers about system maintenance or updates by sending bulk notifications. 
  • Operation Teams can send updates on deliveries or service schedules to relevant contacts.  
We hope you found this post useful and engaging!

If you have any queries reach out to us at support@zohocrm.com or let us know in the comments section. 

Cheers! 

--------------------------------------------------------------------------------------------------------------------------------------

Additional Reading

  1. Zoho CRM Widget - An Overview, Installation and Creation, Mobile Compatibility, other Kaizens
  2. Zoho CRM - Custom Button, COQL API, Fields Metadata API, JS SDK for Widgets
  3. Twilio - Message API, Call API, Twiml(Twilio Markup Language)
--------------------------------------------------------------------------------------------------------------------------------------



      • Sticky Posts

      • Kaizen #226: Using ZRC in Client Script

        Hello everyone! Welcome to another week of Kaizen. In today's post, lets see what is ZRC (Zoho Request Client) and how we can use ZRC methods in Client Script to get inputs from a Salesperson and update the Lead status with a single button click. In this
      • Kaizen #222 - Client Script Support for Notes Related List

        Hello everyone! Welcome to another week of Kaizen. The final Kaizen post of the year 2025 is here! With the new Client Script support for the Notes Related List, you can validate, enrich, and manage notes across modules. In this post, we’ll explore how
      • Kaizen #217 - Actions APIs : Tasks

        Welcome to another week of Kaizen! In last week's post we discussed Email Notifications APIs which act as the link between your Workflow automations and you. We have discussed how Zylker Cloud Services uses Email Notifications API in their custom dashboard.
      • Kaizen #216 - Actions APIs : Email Notifications

        Welcome to another week of Kaizen! For the last three weeks, we have been discussing Zylker's workflows. We successfully updated a dormant workflow, built a new one from the ground up and more. But our work is not finished—these automated processes are
      • Kaizen #152 - Client Script Support for the new Canvas Record Forms

        Hello everyone! Have you ever wanted to trigger actions on click of a canvas button, icon, or text mandatory forms in Create/Edit and Clone Pages? Have you ever wanted to control how elements behave on the new Canvas Record Forms? This can be achieved

        • Recent Topics

        • Marketer's Space: Proven tips to improve open rates – Part II

          Hello Marketers! Welcome back to another post in Marketer's Space! We're continuing from where we left off a fortnight ago. We ended the previous post discussing the subject line, and we'll continue from there. Let's dive right in. Pre-header Pre-header
        • SQL Table slowed to a crawl

          Hi all - I seem to have noticed an update. Now whenever I am typing in the script field for the SQL tables there is a huge delay and it is all very slow. This has never been the case for me in over 5 years of using Analytics - I really hope it's fixed
        • Deluge Events/search API works in user environment but not in sandbox – why?

          I am creating an Extension for Zoho CRM using Zoho Sigma Platform I’m using the following Deluge code to search Events in Zoho CRM based on Start_DateTime: criteria = "(Start_DateTime:greater_than:2025-12-20T00:00:00+00:00)"; url = "crm/v8/Events/search?criteria="
        • Ensure Consistent Service Delivery with Comprehensive Job Sheets

          We are elated to announce that one of the most requested features is now live: Job Sheets. They are customizable, reusable forms that serve as a checklist for the services that technicians need to carry out and as a tool for data collection. While on
        • What are Zoho Meeting capabilities included in Zoho Workplace Standard?

          I am evaluating using Zoho Meeting for my organization, but it is not clear what Zoho Meeting capabilities are already included in Zoho Workplace Standard. - Are meeting recordings included in Workplace Standard? - Can we invite external meeting participants
        • How can I get the participant list of a reoccurring meeting afterwards?

          I'm trying to use the Meeting Participant Report from the API docs but when I call it on a reoccurring meeting it returns that there are no participants because it thinks I'm talking about the meeting in the future. Is there a way to use webhooks or some
        • Function #50: Send Mass emails to your customers

          Hello everyone, and welcome back to our series! We have reached a milestone of 50 Functions, which means that we have automated 50 different tasks in Zoho Books. Every Friday, we have shared a nifty function aimed at either automating a task or streamlining
        • Full Hebrew Language Support for Client-Side Zoho Assist Interface

          Dear Zoho Assist Team, We would like to request an enhancement to Zoho Assist's client-side interface to support full Hebrew language customization, including all popups, notifications, and session-related messages. Current Limitation The Join page allows
        • Add Hebrew & RTL Support to Feedback Widget

          Hello Zoho Desk Team, How are you? We are using Zoho Desk and would like to utilize the Feedback Widget. While Zoho Desk itself supports Hebrew and RTL, the Feedback Widget unfortunately does not. We kindly request that Hebrew and full RTL support be
        • Merge Tickets Directly from Contact Page in Zoho Desk

          Dear Zoho Desk Support Team, We are writing to request a new feature that would allow users to easily merge tickets directly from the contact page in Zoho Desk. Currently, the only option to merge tickets is from the Tickets list view page, which can
        • Different languages for users

          Hello, Do you plan to enable individual users to select their languages for interface? Currently language can be changed for everyone - it looks like a settings for a whole portal, which is not good when you are working internationally. Best regards,
        • Kaizen #222 - Client Script Support for Notes Related List

          Hello everyone! Welcome to another week of Kaizen. The final Kaizen post of the year 2025 is here! With the new Client Script support for the Notes Related List, you can validate, enrich, and manage notes across modules. In this post, we’ll explore how
        • 2025年 Zoho コミュニティ 活動の振り返り 🎉

          ユーザーの皆さん、こんにちは!コミュニティチームの中野です。 2025年も多くの学びと出会いがあったZoho コミュニティ。 本記事では今年の活動を振り返りながら、フォーラムの投稿・参加者の皆さん・イベントのハイライトをご紹介していきます。 目次 フォーラム:注目の投稿 フォーラム:多くの貢献をしてくださった方々 ユーザー交流会振り返り ワークアウト振り返り その他のトピックス 1. フォーラム:注目の投稿 本フォーラムでは様々な議論と知識の共有が行われました。 ユーザーの皆さんが日々の業務で直面する課題を投稿し、経験豊富なユーザーさん達が実践的な解決策を提供してくださいました。
        • Customer Management: #3 Giving Customers Control & Privilege

          Rio, the founder of RenoTech Solutions, a fast-growing digital service company, found itself juggling a dozen different services for its clients. They handled one-time setup fees, recurring monthly invoices, and custom milestone-based billing for projects.
        • Can I use a Standalone CRM Function as the Callback URL For Async Export Data API?

          I am creating an export job using this API https://www.zoho.com/analytics/api/v2/bulk-api/export-data-async/create-export/view-id.html There is a "callbackUrl" key in the CONFIG object. I tried copying the URL for a standalone function in CRM which can
        • Add RTL (Right-to-Left) Text Direction Support Across All Zoho Learn Editing Interfaces

          Hi Zoho Learn Team, Hope you're doing well. We would like to request an important enhancement to Zoho Learn regarding support for right-to-left (RTL) languages such as Hebrew and Arabic. 🔹 Current Issue While the Knowledge Base Article editor provides
        • Add Hebrew Support for Meeting Transcripts Provided by ZIA in Zoho Cliq

          Hi Zoho Cliq Team, Hope you're doing well. We would like to request the addition of Hebrew language support for the Meeting Transcript and Summary feature in Zoho Cliq. Currently the transcript and summary feature is available for recorded meetings and
        • Remote Control Functionality During Screen Sharing in Zoho Cliq

          Hello Zoho Cliq Team, We would like to request the addition of remote control functionality during screen sharing sessions in Zoho Cliq. Currently, while screen sharing in Cliq is very useful, it lacks the ability for another participant to take control
        • Centralized Organization Information Management in Zoho One

          Dear Zoho One Support, I'm writing to propose a feature that would significantly improve the user experience and streamline data management within Zoho One. Current Challenge: Currently, managing organization information across various Zoho One apps requires
        • Enhance Zoho One Conditional Assignment to Fully Reassign App Settings When Changing Departments

          Hi Zoho Team, We’d like to submit a feature request regarding the current behavior of Zoho One’s conditional assignment logic when moving a user between departments. 🔧 Current Limitation As it stands, Zoho One’s conditional assignment does not remove
        • Ability to Filter Alias Mailboxes in Zoho Recruit

          Dear Zoho Recruit Team, I hope you are doing well. We would like to request a feature enhancement regarding the handling of alias mailboxes in Zoho Recruit. Currently, when we connect an alias mailbox (e.g., jobs@domain.com) from our Zoho One account
        • Automatic Department and Employee Sync Between Zoho One and Zoho People

          Dear Zoho Support, I'm writing to propose a valuable feature request that would streamline data management and improve user experience within the Zoho ecosystem: automatic synchronization between departments and employees in Zoho One and Zoho People.
        • Prefered Bin Missing in android APP

          Andoroid app dosent show preferred bin in the picklist. The workaround support reccomend is to use the computre to create the picklist. it shuld be information to be shown aas basic for the pciker.
        • Open Sans Font in Zoho Books is not Open Sans.

          Font choice in customising PDF Templates is very limited, we cannot upload custom fonts, and to make things worse, the font names are not accurate. I selected Open Sans, and thought the system was bugging, but no, Open Sans is not Open Sans. The real
        • Function #1: Convert an accepted Estimate to Sales Order automatically in Zoho Books

          As you’re aware, Zoho Books provides a default option to have the estimates automatically converted to invoices once your customer accepts them. Many of you wanted a similar option for sales orders, so here’s a workflow that converts accepted estimates
        • Reusable Jira Connection for Multiple Zoho Projects Imports

          Hello Zoho Projects Team, We would like to raise a concern and submit a feature request regarding the Jira → Zoho Projects migration process, specifically around how Jira connections are handled. Current Behavior: When setting up a Jira connection for
        • Zoho invoice doesn't support Arabic language

          I added a clause in the terms & conditions section in Arabic but it doesn't appear when I sent or print it.
        • Recurring Invoice Placeholder Not Updating Billing Period

          Hi, I’m using Zoho Invoice Free and want the billing period to update automatically in recurring invoices. In Item Description I tried: Billing Period: %(m-6)% %(y)% to %(m-1)% %(y)% but even if the invoice date is in 2026, it still shows the period based
        • Related list Mobile Device

          Hello, We use an the Zoho creator application to make reports linked to Accounts. On the computer: it's easy to go the Account and see all the created reports in the related list below On iPad/Phone ZOHO CRM APP: we cannot see the reports on those accounts
        • Can't update the company address in zoho invoice

          Dear Sir/Madam, I want to update the company address in Zoho Invoice but failed. It popped out a sentence "Invalid value passed for Website". Please advice how to solve this problem. Thank you.
        • Is there a plan to allow for the hierarchical organization of Customers / Companies in Zoho Billing?

          We have a few customers who have organizational structures that we haven't quite found a way to deal with in Zoho Billing. In CRM, these sub-companies (or subsidiaries or whatever you want to call them) all have another CRM account as the parent account.
        • 【Zoho CRM】作業リスト機能リリースのお知らせ

          ユーザーの皆さま、こんにちは。コミュニティチームの藤澤です。 今回は「Zoho CRM アップデート情報」の中から、作業リスト機能リリースのお知らせ情報をご紹介します。 目次 作業リスト機能 概要 機能① 自分の未完了の活動 機能② 処理待ち 機能③ 自分の作業リスト 作業リスト機能 概要 営業チームでは、CRM内に業務やデータが分散しているため、管理が煩雑になりがちです。この断片化は、機会の見逃しや生産性の低下につながります。 作業リスト機能は、タブを横断する業務項目をひとつのカスタマイズ可能なダッシュボードに集約し、業務を効率的に管理できるようにします。
        • SalesIQとPageSenseの利用について

          初めての投稿で場違いだったらすいません。 弊社ではSalesIQを運用しているのですが、追加でPageSenseの導入もしたいと現場からの声があります。 両サービスともクッキー同意バナーが必要なサービスなのですが 弊社では同意無しに情報はとりませんという方針なので 2つ入れると2つバナーを出す必要がでてきます・・・ 両サービスを運用されてる方があれば運用状況とか教えてほしいです。 PageSenseについては詳細まで機能を理解してないなかでの質問です。
        • Parent-Child Tickets using API or Deluge

          Hi Everyone, We are looking at the parent-child ticketing features in Zoho Desk. We want to be able to create a parent ticket at customer level and nest child tickets underneath. The issue we are facing is to be able to automate this. I'm checking the
        • Closing connected ticket after closing WA conversation

          Hi, At the moment, once someone sends a message to our WA number, a corresponding ticket is automatically created. After the question is answered, our support department closes the chat/conversation. However, after that, the connected ticket is still
        • Note sync turn off

          Hi, Is it possible to turn off notes sync between task notes and the parent module? (Account/Deal)
        • Basic Plan Active but Survey Creation Still Limited to 3 Surveys

          I have an active Basic (Monthly) subscription (valid period: Dec 24, 2025 – Jan 24, 2026), but the system still limits survey creation to only 3 surveys, which matches Free plan behavior. The subscription appears active in Portal Information, however
        • 2025 in Review: Powering Field Services Forward—One Feature at a Time

          As 2025 draws to a close, it’s time to pause and reflect on a year of meaningful progress at Zoho FSM. This year was all about listening closely to our customers and partners, building with purpose, and continuously improving the way field service teams
        • API Support for Creating Invoices with Batch-Tracked Items

          Hi Zoho Community, I am working on an integration where we create invoices in ERPNext and push them to Zoho Books. I need to send batch-tracked items (batch numbers) when creating invoices. I could not find any reference in the Zoho Books API documentation.
        • New to automation - please help

          Hi there! We are new to automations in Zoho. We built out one automation campaign and it seems to be firing off for some people but others not. Please advise what's the best practice or if anything we should tweak. Thank you so much!
        • Next Page