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

        • Blueprint transitions on locked records

          We use the ability to automatically lock records (quotes, sales orders, etc.) based on criteria, such as stage. For instance, if a quote has been sent to a client, the quote is then locked for further edits. Our ideal quote stage process is: Draft>Sent>Won.
        • Enhance productivity with the revamped Zoho Sheet View

          Hello folks, For some time now, you've been able to use the Zoho Sheet View to quickly edit multiple records or to insert a batch of new records. Its tabular interface allows users to engage in these tasks productively. Despite this, the existing Sheet
        • No OR Filter for Views with a Related Modules Criteria

          We would like to create a Deal View where the User can see all their deals. For that, we would need an OR to connect the criteria. One of the Fields is a "multiselect User", these (Related Modules Criteria) can only be Filter with an AND. Even between
        • Good news! Calendar in Zoho CRM gets a face lift

          Dear Customers, We are delighted to unveil the revamped calendar UI in Zoho CRM. With a complete visual overhaul aligned with CRM for Everyone, the calendar now offers a more intuitive and flexible scheduling experience. What’s new? Distinguish activities
        • Limit maximum entries for subform - depending on fields entry

          Hi Zoho! I have a form with a subform in it. I'd like to have limitation for the row number depending on an entry in a drop-down field in the main form (If the field in the main form is marked "Answer1" - Limit the entries to 1 row, if the field is "Answer2" to have 2 rows limitation, "Answer3" = no limitation at all) Can this be done? Thanks Ravid
        • Save HTML Snippet Page as PDF with Dynamic Data in Zoho Creator (Working Solution)

          Hi Zoho Creator Community 👋, I faced a common challenge while working with HTML Snippet Pages — I needed to generate a PDF with dynamic data and save it back into the record automatically. Here’s the working solution that might help others. Use Case
        • Make Camera Overlay & Recording Controls Visible in All Screen-Sharing Options

          Hi Zoho WorkDrive Team, Hope you are doing well. We would like to request an improvement to the screen-recording experience in Zoho WorkDrive. Current Limitation: At the moment the recording controls are visible only inside the Zoho WorkDrive tab. When
        • Cannot connect to imap.zoho.eu on iOS26

          Hey, I recently migrated to another iPhone and since then use iOS26. Every since then, I was not able to connect to "imap.zoho.eu" from Apple Mail. I tried deleting the account and adding it again, did not work. I tried creating an app password, didn't
        • Rebranding Options for Zoho One

          We need the addition of rebranding and white-labeling settings directly within the Zoho One Admin Panel. This feature should allow organizations to customize the unified portal with their own logo, brand colors, and custom domain mapping (e.g., portal.company.com).
        • Tip #57- Accessibility Controls in Zoho Assist: Mobility- 'Insider Insights'

          Remote support should be easy to navigate for everyone. For users with mobility-related accessibility needs, long sessions and complex navigation can be challenging. Zoho Assist’s Mobility Accessibility Controls simplify interaction through keyboard-based
        • To print Multiple delivery notes in batches

          In Zoho Books, we can print a Delivery Note from an Invoice using the Print Delivery Note option, but it is non-editable and always prints all line items from the invoice. Our requirement is to deliver invoiced items in batches and print delivery notes
        • UPLOAD A CREATED PDF AUTOMATICALLY

          Using the html header pdf+print button, I have managed to find a way to have a user create a pdf using entered form data. Using the schedule button, I can have a "file uploaded" pdf mailed to someone as an attachment. The missing piece is to be able to add the pdf, created in that html page to a file upload field automatically? Right now one has to save it to computer and then upload it in a FILE UPLOAD FIELD. Any help would appreciated !  
        • Consolidated Department-wise Payroll Cost Summary Report

          Hello Zoho Payroll Team and Community, I am writing to discuss a reporting requirement regarding department-level expense tracking within Zoho Payroll. As we scale and manage salary distribution for employees across multiple departments, such as Accounts,
        • Write-Off multiple invoices and tax calculation

          Good evening, I have many invoices which are long overdue and I do not expect them to be paid. I believe I should write them off. I did some tests and I have some questions:  - I cannot find a way to write off several invoices together. How can I do that,
        • How to remove chat icon from knowledge base?

          I have set up a knowledge base to hold FAQs and documentation. It is currently standalone, and not integrated into our website. On every page there is a chat button in the bottom left corner that says "We're offline, please leave a message." How can I
        • [ZohoDesk] Improve Status View with a new editeble kanban view

          A kanban view with more information about the ticket and the contact who created the ticket would be valueble. I would like to edit the fields with the ones i like to see at one glance. Like in CRM where you can edit the canvas view, i would like to edit
        • Automated Dismissal of Specific Notifications and Centralized Control of Toast Notification Settings

          Dear Zoho Team, I hope this message finds you well. We would like to request two enhancements related to notification handling within Zoho Desk: Automatic Dismissal of Specific Notifications: Currently, when certain actions are taken in the ticket list
        • Show field in spreadsheet view depending on other field value

          Hello. Not sure if this is possible but let's say i have spreadsheet view in Creator with four different fields Field A, B, C and D Then i have a field named Response which for one record could contain only one of the pre-definde choices below A, B, C
        • Intergrating multi location Square account with Zoho Books

          Hi, I have one Square account but has multiple locations. I would like to integrate that account and show aggregated sales in zoho books. How can I do that? thanks.
        • Zoho Learn Zapier Integration

          Hello all, Is there any plan to integrate Zoho Learn with Zapier? It seems almost all Zoho products are in Zapier, with the exception of Learn and Marketing Automation.
        • Notice: SalesIQ integration paused on Zoho Sites

          I have this notice on my Zoho Sites in the SalesIQ integration setup. Can someone assist? "This integration has been temporarily paused for users. Reconnecting SalesIQ after disconnection will not be possible until we provide further updates." thank
        • Differences between Zoho Books and Zoho Billing

          Without a long drawn out process to compare these. If you were looking at these Books and Billing, what made you opt for one and not the other. Thanks
        • New Feature : Copying tickets with all the contents such as conversations/history/attachments etc

          Sometimes our customers and distributors do create tickets (or send emails) which contain more than one incident in them and then also some of the further conversations which are either created by incorrect new tickets or replies to old tickets are being created as combined tickets. In such cases we require to "COPY" the contents of the tickets into separate tickets and merge them into their corresponding original tickets. The "CLONE" feature doesn't copy the contents (especially the conversations
        • Como se agregan los empleados

          Necesito saber si para agregar empleados los mismos necesitan tener licencias
        • Deluge Error Code 1002 - "Resource does not exist."

          I am using the following script in a Custom Button on a Sales Return. Basically, the function takes the information in the sales return (plus the arguments that are entered by the user when the button is pushed) and creates a return shipping label via
        • Adding multiple Attendee email addresses when adding a Zoho Calendar event in Zoho Flow

          I am trying to integrate Notion and Zoho Calendar via Zoho Flow. However, the Attendee email address supported by Zoho Calendar - Create event only supports one email address, so I am having difficulty implementing automation to automatically register
        • Graceful Handling of Exceeded Option Limits

          Hi Zoho SalesIQ team. I would like to submit a feature request to deal with a bug in salesIQ Current Behavior (Bug): When a dynamic list passed to the Single Select Option Card contains more than 20 options, the Zobot stops responding (freezes/hangs)
        • System default SLA descriptions can't be modified

          The system default SLAs have identical descriptions for all SLA levels, but their settings differ. However, I am facing an issue where I cannot modify these descriptions and save the changes. The content of the description box can be edited but the changes
        • Adding non-Indian billing address for my Zoho subscription

          Hey Need help with adding a non-Indian billing address for my Zoho subscription, trying to edit the address to my Singapore registered company. Won't let me change the country. Would appreciate the help. Regards, Rishabh
        • How to create one ZohoCRM organisation out of a multi-organization?

          Hi, we have a multi-org including two different Zoho CRM organizations for two companies using respectively EUR and USD as default currency. I was wondering if there is any easy way to merge the two organizations into just one, so that users may access
        • Gray screen while signing documents

          We are all getting a "gray" screen when trying to sign documents in Zoho sign. Anyone else having issues?
        • Designing a practical Zoho setup for a small business: lessons from a real implementation

          I recently finished setting up a Zoho-based operating system for a small but growing consumer beauty business (GlowAtHomeBeauty), and I wanted to share a practical takeaway for other founders and implementers. The business wasn’t failing because of lack
        • Link Purchase Order to Deal

          Zoho Books directly syncs with contacts, vendors and products in Zoho CRM including field mapping. Is there any way to associate vendor purchase orders with deals, so that we can calculate our profit margin for each deal with connected sales invoices
        • Projects custom colors replaced by default orange

          Since yesterday, projects uploaded to Zoho, to which I had assigned a custom color, have lost the customization and reverted to the default color (orange). Has anyone else had the same problem? If so, how did you resolve it?
        • Interview booked through Invite but no Notifications

          We have a workflow that was developed through a developer/partner that was tested and worked. Today, we pushed a candidate through the process and invited them to an in-office interview. They were sent the booking link (as usual and as tested before successfully)
        • WebDAV support

          I need WebDAV support so that I can upload/download (and modify) documents from my local file system. Is anything planned in his direction?
        • Automatiser la gestion des SLA dans Zoho Desk avec Zoho Contracts

          Les équipes du service client s’efforcent d’assurer un support rapide, régulier et fiable pour garantir la satisfaction de chaque client. Les accords de niveau de service (SLA) permettent de clarifier les engagements en définissant les termes et conditions
        • iOS App doesn't refresh for Document Creation

          Hello Zoho team, I have created a workflow to be used on a mobile iOS device which starts in Zoho Creater and ends with a murge and store function that then opens the newly created document within the Zoho Writer app. This process is working great however
        • Uploading a signed template from Sign to Creator

          Good day, Please help me on how to load a signed document back into Creator after the process has been completed in Sign. Below is the code that I am trying, pdfFile = response.toFile("SignedDocument_4901354000000372029.pdf"); info pdfFile; // Attach
        • Zoho DataPrep and File Pattern configuration

          I'm using Zoho data prep to ingest data from One Drive into Zoho Analytics... The pipeline is super simple but I can't any way to get all the files that I need. Basically I need to bring all the files with a certain pattern and for that I'm using a regex
        • Next Page