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.
- Select multiple records in the Leads module.
- Click Broadcast (custom widget button) to open a streamlined interface (we have used Twilio for this demo).
- Select the Phone Fields to which you need to send the message / pre-recorded call.
- Choose SMS or Voice Call in the tab based on your requirement.
- 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.
Recent Topics
How to add image to items list in Invoice or Estimate?
Hello! I have just started using Zoho Invoice to create estimates and, possibly to switch from our current CRM/ERP Vendor to Zoho. I have a small company that is installing CCTV systems and Alarm systems. My question is, can I add images of my "items" to item list in Zoho Invoice and Estimates and their description? I would like to show my clients the image of items in our estimates so they can decide if they like these items. And I tell you, often they choose more expensive products just because
Issue with the Permission to Zoho Form
I am getting an error by signing in to zoho form as it is stated that i don't have permission to access this is admin account
CRM templates
Hello everyone, In my company we use Zoho campaigns where we set up all newsletters and we use Zoho CRM for transactional emails. I have created some templates in Zoho campaigns but from my understanding i cannot use those in Zoho CRM, right?
Meet Canvas' Grid component: Your easiest way to build responsive record templates
Visual design can be exciting—until you're knee-deep in the details. Whether it's aligning text boxes to prevent overlaps, fixing negative space, or simply making sure the right data stands out, just ironing out inconsistencies takes a lot of moving parts.
Addin Support in Zoho Sheet
Is there any addin support available in zoho sheet as like google marketplace to enhance productivity by connecting with other apps, providing AI data analysis, streamlining business processes, and more?
Where to integrate Price Book and Product List Price
Hello, We sync zoho crm all modules with all data to zoho analytics. In zoho crm, we have "Price Books" and "Products" modules, where each product is assigned to a few price books with different list prices. From zoho crm, I am able to export a dataset
Pending Sales Order Reports
Pending sale order report is available for any single customer, Individual report is available after 3-4 clicks but consolidated list is needed to know the status each item. please help me.
Zoho Mail SMTP IP addresses
We are using Zoho Mail and needs to whitelist IP for some redirections from your service to another e-mails. You can provide IP address list for Zohomail SMTP servers?
Migrate Your Notes from OneNote to Zoho Notebook Today
Greetings Notebook Users, We’re excited to introduce a powerful new feature that lets you migrate your notes from Microsoft OneNote to Zoho Notebook—making your transition faster and more seamless than ever. ✨ What’s New One-click migration: Easily import
Zoho Campaigns - Why do contacts have owners?
When searching for contacts in Zoho Campaigns I am sometimes caught out when I don't select the filter option "Inactive users". So it appears that I have some contacts missing, until I realise that I need to select that option. Campaigns Support have
One Contact with Multiple Accounts with Portal enabled
I have a contact that manages different accounts, so he needs to see the invoices of all the companies he manage in Portal but I found it not possible.. any idea? I tried to set different customers with the same email contact with the portal enabled and
End Date in Zoho Bookings
When I give my appointments a 30 minutes time I would expect the software not to even show the End Time. But it actually makes the user pick an End Time. Did I just miss a setting?
Zoho Commerce
Hi, I have zoho one and use Zoho Books. I am very interested in Zoho Commerce , especially with how all is integrated but have a question. I do not want my store to show prices for customers that are not log in. Is there a way to hide the prices if not
email forwarding not working
Your email forwarding service does not work. I received the confirmation email and completed the confirmation, after that nothing and nothing since no matter what I have tried. Shame as everything else was smooth. I spose it's harder to run one of these web based internet mail services than you guys thought!!! can you fix the email forwarding asap PLEASE!
Google Ads Conversions Not Being Tracked in Zoho CRM
We have 3 different conversions created in our Google Ads Account. Only one of the 3 conversion types is tracking in Zoho CRM. Our forms are Elementor Forms that are mapped into Zoho CRM. It apprears to me that all leads are showing up in Zoho CRM, but
Enable Locations for Expense
Hi, please enable Locations (ex Branches) for Zoho Expense so that there is consistency between this app and Zoho Books. Thanks in advance.
Currency abbreviations
Hello, Im stuck, and need help. I need the currency fields for example, opportunity value, or total revenue, to be abbreviated, lets say for 1,000 - 1K, 1,000,000 - 1M, and so on, how should I do this?
in the Zoho Creator i have File Upload field get the file on submission of the form Get the File and upload to Zoho Books
in the Zoho Creator i have File Upload field get the file on submission of the form Get the File and upload to Zoho Books . how I get the file From zoho creator and upload to Zoho Books . using Api response = invokeUrl [ url: "https://www.zohoapis.com/creator/v2.1/data/hh/l130/report/All_Customer_Payments/"+input.ID
Generate a link for Zoho Sign we can copy and use in a separate email
Please consider adding functionality that would all a user to copy a reminder link so that we can include it in a personalized email instead of sending a Zoho reminder. Or, allow us to customize the reminder email. Use Case: We have clients we need to
Syntax for URLs in HTML Snippets
What are some best practices for inserting a URL in an HTML snippet? I've looked at Zoho Help articles on navigation-based and functional-based URLs, but I'm still unclear on how to incorporate them in an HTML snippet. For example, 1. How do I link to
Rate Limiting in Zoho Flow (OpenAI API)
Hi Everyone, We are facing some issues when using Zoho Flow as we have a deluge script running which is making external calls to OpenAI endpoint. Sometimes the response takes more than 30 seconds meaning the script will timeout. We want to implement a
Placing a condition before converting the LEAD
Hi, I need some assistance with Lead conversion. I need to place certain conditions before allowing the user to convert the lead. For example: up until the certain status's doesn't equal "green" don't allow to convert lead. I tried creating this using
it is possible to open a widget via deluge script function
I have one function that is workflow action I call my fucntion I need to call the internal widget it is possible to open or it have to please tell me the solution
Creator - Portal Custom Domain
I will pay $100 in crypto to anyone who can actually get my Creator Custom Domain to function (actually tell me how you got yours to). Domain verifies, Nothing. I've been fighting it a week, multiple chats to customer service. Clearly I'm doing something wrong. Some datapoints Domain name itself unimportant, can be a string of numbers. I need to know what registrars are working for you because GoDaddy does NOT. Do I need hosting? I've tried both ways and nothing works. I pushed through Cloudflare
steps and options to change Domain DNS/Nameservers settings
Please share the options or steps to change Domain DNS/Nameservers settings
Employees in Leave Policy exceptions
In the Leave Policies we should be able to add specific employees to the exception list So it will be like All Employees except A,B,C in the exception list, currently we can only add departments etc
Searching customer field
Hello, When entering a receipt, we select customer information. The customer information is synced with Zoho CRM. However, we can't find the customer information because it searches for words that begin with the entered value. It needs to search for words
How I set default email addresses for Sales Orders and Invoices
I have customers that have different departments that handle Sales Orders and Invoices. How can i set a default email for Sales Orders that's different than the default email for Invoices? Is there a way I can automate this using the Contact Persons Departments
Modular Permission Levels
We need more modular Permissions per module in Books we have 2 use cases that are creating problems We need per module export permission we have a use case where users should be able to view the sales orders but not export it, but they can export other
Kaizen #157: Flyouts in Client Script
Hello everyone! Welcome back to another exciting edition of our Kaizen series, where we explore fresh insights and innovative ideas to help you discover more and expand your knowledge!In this post, we'll walk through how to display Flyouts in Client Script
How get stock name from other column ?
How get stock name from other column ? e.g. =STOCK(C12;"price") where C12 is the code of the stock
Adding a developer for editing the client application with a single user license
Hi, I want to know that I as a developer I developed one application and handed over to the customer who is using the application on a single user license. Now after6 months customer came back to me and needs some changes in the application. Can a customer
Download an email template in html code
Hello everyone, I have created an email template and I want to download it as html. How can i do that? I know you can do it via the campaigns-first create a campaign add the template and download it as html from there. But what if i don't want to create
Attachment is not included in e-mails sent through Wordpress
I have a Wordpress site with Zeptomail Wordpress plugin installed and configured. E-mails are sent ok through Zeptomail but without the included attachment (.pdf file) Zeptomail is used to send tickets to customers through Zeptomail. E-Mails are generated
Upcoming Changes to the Timesheet Module
The Timesheet module will undergo a significant change in the upcoming weeks. To start with, we will be renaming Timesheet module to Time Logs. This update will go live early next week. Significance of this change This change will facilitate our next
Best way to schedule bill payments to vendors
I've integrated Forte so that I can convert POs to bills and make payments to my vendors all through Books. Is there a way to schedule the bill payments as some of my vendors are net 30, net 60 and even net 90 days. If I can't get this to work, I'll have
Cant update image field after uploading image to ZFS
Hello i recently made an application in zoho creator for customer service where customers could upload their complaints every field has been mapped from creator into crm and works fine except for the image upload field i have tried every method to make
Billing Management: #4 Negate Risk Free with Advances
In the last post, we explored how unbilled charges accumulate before being invoiced. But what happens when businesses need money before service begins? Picture this: A construction company takes on a $500,000 commercial building project expected to last
Is there an equivalent to the radius search in RECRUIT available in the CRM
We have a need to find all Leads and/or Contacts within a given radius of a given location (most likely postcode) but also possibly an address. I was wondering whether anyone has found a way to achieve this in the CRM much as the radius search in RECRUIT
Zoho CRM Inventory Management
What’s the difference between Zoho CRM’s inventory management features and Zoho Inventory? When is it better to use each one?
Next Page