From our earlier post on custom actions, we know that we can create templated actions, share them with end users, and allow them to reuse those actions to achieve personalized outcomes. In this post, we'll look at how custom actions make it easy for users to carry out these templated tasks to get customized results.
Consider the following scenario: a hardware company that already uses Zoho CRM then utilizes Zoho Projects to implement and work on the deals they've won. Assume that the Zoho Projects portal has two projects: one for handling smaller revenue deals that require minimum development and less time, and the other for managing larger revenue dealsthat will eventually demand more time and resources for execution.
As an end user processing deals in Zoho CRM, it would be extremely convenient for the company to have the deals automatically fall into the appropriate projects, such as a task based on the expected revenue. Furthermore, it would be ideal to send emails to the customer with whom they have made the deal to request anything needed from their end in order to move forward with the implementation of the deal. Let's see how we can achieve this with the help of custom actions.
Developer activities
1. Create a connector for Zoho Projects.
2. Create a custom user interface (widget-connected app) that allows the user to select the project where the deal should be created as a task, as well as add the personalized email subject and body that will be sent to the user.
3. Create a custom action in the Zoho Developer console.
- Associate the custom user interface to the custom action.
- Define an action that creates a task in the selected project and also sends an email to the customer based on the values entered by the end user in the custom UI.
Extension/end-user activities
4. Create workflows as an end-user (i.e., set criteria on expected revenue; provide personalized values for email subject and body, and choose the project in which the deal fulfilling the set criteria should be created as a task) and assign a custom action to them.
Developer activities
1. Creating a connector
- Create a new connector in your extension for Zoho Projects using the Connectors feature under Utilities in the left panel of the Zoho Developer console.
Note: Zoho Projects follows the OAuth 2.0 protocol for its authentication mechanism. You can refer to this post to learn more about the steps to register Zoho Projects and retrieve your client credentials.
- Add the necessary connector APIs for your functionality.
- The Zoho Projects REST APIs added for our example are mentioned below.
Connector API Name
| Method type
| URL
|
Get Projects
| GET
| https://projectsapi.zoho.com/restapi/portal/${portalid}/projects/
|
Create project task
| POST
| https://projectsapi.zoho.com/restapi/portal/${portalid}/projects/${projectid}/tasks/?name=${name}&description=${description}
|
2. Create a custom user interface:
1. Create a custom user interface that allows the end user to select the project in which they want to create the deal as a task, as well as enter the email subject and body that should be sent to the contact associated with the deal.
2. You can find the HTML code for the custom UI as an attachment to the post.
- In the HTML code, we have two text fields to get the user inputs for the email subject and body.
- We have also invoked the connector API to get projects from a portal. The response is then populated and displayed as a dropdown list to allow the user to select the project in which they want the deal to be created as a task.
- In the HTML code snippet, we have hard coded a static value for the Zoho Projects portal.
Note: Depending on your business use case requirements, you can create custom variables to prompt the user to input their Zoho Project portal ID, or you can create a setting widget that displays the user's portals, allowing the user to choose the portal in which they want to have the deals created as tasks as well.
- ZOHO.CRM.ACTION.setConfig - In this example, we have utilized the setConfig method. This method can be used to set values to variables which can be retrieved later through the widget's page load response.
➤ For our example, we have used the setConfig method to set various Zoho CRM deal and email (subject and body) user input values to variables. We have later obtained these saved values through the widget's page load response, which contains a configdata key with these set data as its values.
➤ Sample page load response when ZOHO.CRM.ACTION.setConfig is used in our example:
"module": "Deals",
"configdata": {
DealTest: "Sample Digital Marketing Project"
Dealdescription: "${!Deals.Description}"
Dealname: "${!Deals.Deal_Name}"
Message: "Sample Message"
Subject: "Deal Won!"
To: "${!Deals.Contact_Name.Email}" |
➤ We have then used the preset saved values available in the configdata key to prepopulate the widget UI every time it loads.
3. Create a custom action
- Go to the Zoho Developer console and select the extension in which you want to create the custom action.
- Create a custom action by navigating through Automate - > Custom Actions, under the Build section in the left panel. Click Create Action.
- Enter the Custom Action Name and Description. Click Next.
- Provide the location of the html file (widget UI) to complete the resource path. Click Next, then click Create Function.
- Enter the Deluge function to perform our use case functionality.
- Click Save & Close, then click Save.
Deluge function code snippet:
dynamic_map = Map();
dynamic_map.put("portalid","xxxxxx");
dynamic_map.put("projectid",input.config.get("Dealproject"));
dynamic_map.put("name",input.config.get("Dealname"));
dynamic_map.put("description",input.config.get("Dealdescription"));
response = zoho.crm.invokeConnector("xxxxx.zohoprojects.createprojecttask",dynamic_map);
sendmail
[
from :zoho.adminuserid
to :input.config.get("To")
subject :input.config.get("Subject")
message :input.config.get("Message")
] |
- In the above Deluge code, we have performed the functionality of creating the deal as a task in Projects and sending an email to the deal's contact with the input provided by the end user in their CRM account while associating the custom action to a workflow.
Custom action in effect (End-user):
Create workflows:
- As an end user who has the extension which features the custom action installed in the Zoho CRM account, go ahead and create workflows to define criteria and associate the custom action.
- In our case, we have two workflows:
➤ One for smaller deals where the expected revenue is less than 1000 USD
➤ One for larger deals where the expected revenue is greater than or equal to 1000USD
- Upon choosing the custom action, the custom UI appears where-in you can provide user specific input for email body and subject and also choose the project where you want deal to be created as a task in Zoho Projects.
Smaller revenue deals:
Larger revenue deals:
- When a deal with the necessary criteria is satisfied, an email is sent out to the deal's contact with the subject and body provided by the end user. A task is also created in Zoho Projects with some specific deal details.
This is one business case where you can use custom action. As a parallel use case to the above example itself, say you have multiple projects in Zoho Projects, each used to work on different case categories (bugs, issues, feature request, etc.). You could develop the same kind of template and allow end users to configure the criteria and outcomes accordingly.
You could also use custom actions feature to perform templated actions to obtain personalized outcomes depending on your business needs. We hope you found this information helpful. Keep following this space for more information!
SEE ALSO:
Recent Topics
When Email is sent, automatically have information be stored inside.
Hi there, I just wanted to know if it was feasible to make it so that when i receive an email to a specific email, all of the information or contents would be filled up inside of leads. This will help me with another side of the process that im working
Shopify to Zoho Books Integration
I have had to go ahead and disable my Shopify integration entirely. When a Sales Order comes in from Shopify, it lists the shipping charge as a line item with no SKU attached to it. As you are not able to edit a Sales Orders that comes in from a Marketplace,
Enhancing Answer Bot's Capabilities
Wouldn't it be amazing if the answer bot could directly search for answers in our database, FAQs, articles, etc., without needing to display the entire article? without relying on external tools like ChatGPT This way, it could provide concise and relevant
Comment gérer un logo d'entreprise par webinaire ?
J'organise une série de webinaires avec plusieurs partenaires. Je voudrais que chaque landing page présente le logo de mon entreprise et celui du partenaire avec lequel j'organise ce webinaire. Or je n'ai vu que la possibilité de définir le logo de l'entreprise.
Audit Log Export via API
Hello, Based on the documentation here https://www.zoho.com/crm/developer/docs/api/v7/create-export-audit-log.html I need to specify the scope ZohoCRM.settings.audit_logs.CREATE to create a log export. I've created a Self Client app but when I specify
Create custom rollup summary fields in Zoho CRM
Hello everyone, In Zoho CRM, rollup summary fields have been essential tools for summarizing data across related records and enabling users to gain quick insights without having to jump across modules. Previously, only predefined summary functions were
Useful enhancements to Mail Merge in Zoho CRM
Dear Customers, We hope you're well! We're here with a set of highly anticipated enhancements to the Mail Merge feature in Zoho CRM. Let's go! Mail Merge in Zoho CRM integrates with Zoho Writer to simplify the process of customizing and sharing documents
Prevent carriage returns / line breaks in multi line fields
I'm trying to connect Zoho Sheets with Zoho Creator however because some people are using carriage returns in multi-line fields the rows are not being created correctly : The values in A4 and A6 are part of a multi line field that looks to have been split
Function went from fine to nonfunctioning without change
url = "https://www.zohoapis.com/crm/v7/Accounts/" + id + "/Attachments/" + attach_id; file_engage = invokeurl [ url :url type :GET connection:"zoho_attachments" ]; The attach id is grabbed from a file upload field account = zoho.crm.getRecordById("Accounts",id);
How to get NSE/BSE Stock Prices in Zoho sheets?
I've been looking for a function that provides me with the NSE/BSE listed stocks price in Zoho Sheets like GOOGLEFINANCE in Google sheets, but I found none. Please help if there is any way to het stock prices?
Setting Up Direct Mail Campaigns
If I need to set up a 5 step direct mail campaign is that possible? Basically every week I upload names from a CSV to Zoho and then would need to mail them every 45 days for about 6 months. I would want to be able to take names off the list when they say their house is sold or that they don't want to be contacted. I don't necessarily need to have it integrated with click2mail or anything but would at least need to be able to export the file in a CSV/excel for each mailing. Does anyone know if that's
Add and Remove Agents from Departments and Groups in Zoho One
Hi Zoho Flow Team, We hope you're doing well. Currently, Zoho Flow provides an action to add an agent to a group in zoho one, but there is no action to remove an agent from a group or a department. Another action that we find missing is the option to
Convert a message on Cliq into a task on Zoho Connect
Message actions in Cliq are a great way to transform messages in a conversation into actionable work items. In this post, we'll see how to build a custom message action that'll let you add a message as a task to board on Zoho Connect. If you haven't created
Zoho Creator HTML Snippet - Can't get list to iterate
Hi! I'm trying to create an HTML Snippet on a page in Zoho Creator and would like to create an HTML table pulled from a list of time entries that I have in a form. I have successfully pulled the collection of time entries, but the code that I have built
How can I create individual records from a subform
Hi, I am collecting subform data into a Lead record and I need to create individual records for each row associated to the account when it is converted. How can I do this?
Custom Extension, create a trigger button in custom module to launch the app, or any workaround
Hello Have created a custom extension , publish as private, all working But I'm facing an issue For my test I create a button in accounts or Contacts module to launch the app. But how I can handle to create same button in a custom module (not created
How do I filter contacts by account parameters?
Need to filter a contact view according to account parameter, eg account type. Without this filter users are overwhelmed with irrelevant contacts. Workaround is to create a custom 'Contact Type' field but this unbearable duplicity as the information already
Connecting Zoho Inventory to ShipStation
we are looking for someone to help connect via API shipStation with Zoho inventory. Any ideas? Thanks. Uri
Moving contacts from one folder to different folder
I set up two folders. Uploaded CSVs and build my fields according to what I needed. My boss wanted more fields and changed the categories wants different fields added and contacts in one folder moved to the other due to reclassification. How can I do
Zoho Projects Currency fields in Deluge script
I have several functions I've written in Zoho Projects that take one or more currency fields as input parameters (arguments). These functions have been working just fine for months, and I made no changes to any of them. Today (Jan 21, 2025) I noticed
How do you handle existing customers/contacts?
Hi, We just integrated MA 2.0 with our CRM and we chose to only import our existing customers contacts. In MA they are all "Raw leads" by default and we would like to mass update these to a stage called "already customers" but the last default stage "Sales
Quick Create popup for Lookup fields, Mailchimp related list and User lookup field!
Hello everyone, We have recently introduced some most-requested enhancements. Here are the details: Quick Create popup for Lookup fields When we create a new deal in Bigin, there is an option to create a contact/company right from the Create Deal page.
Webinar - Getting Started with Landing Page Marketing | Zoho LandingPage
Ready to build your first landing page that actually converts? Landing pages are a powerful marketing tool—but only if you know how to use them correctly. In this webinar we’ll dive into everything you need to know about creating landing pages that capture
Making the Resolution Tab Mandatory
Hello Everyone! This edition is here to show you how to make the Resolution mandatory when closing a ticket. The Ticket Resolution tab helps keep a record of the solution provided for the ticket query. The resolution can serve as a quick reference to
Automation #6 - Prevent Re-opening of Closed Tickets
This is a monthly series where we pick some common use cases that have been either discussed or most asked about in our community and explain how they can be achieved using one of the automation capabilities in Zoho Desk. Typically when a customer submits
🔍 How to effectively organize data in a CRM? – My approach and questions for you
Dear ZOHOssians! While working on organizing data in a CRM, I decided to use the native modules: Leads, Deals, Contacts, and Accounts as a solid foundation for managing processes. However, I’m now exploring the next steps and considering various options
Gravity Forms, JSON, Webhooks and Zoho Flow
I have form that I use to populate a Module in Zoho CRM. When the data is sent back from Gravity Forms, it's sent back in this format (I've cleansed the data for privacy): {
4 : "email@email.com",
5 : "+61999999999",
6 : "emai2l@email.com",
Introducing Bot Filtering for Accurate Email Campaign Analytics
Dear Marketers, We're excited to announce a new feature designed to enhance the accuracy of your email campaign analytics: bot filtering. This feature helps you filter out bot-generated opens and clicks, ensuring your campaign reports reflect genuine
Report to see committed stock vs quantities on order with suppliers
Hello Zoho Community, I am looking for a report in Zoho Books / Inventory that will show the committed stock from sales orders, and show what quantities of the same part are on order from purchase orders. I have found the committed stock details report,
Account
I need to know how the maximum contact records available in my subscription. Also pleas advise the process to increase Contact Records. Also I need someone to contact me, I may need to add users, but need to workout a package that would fit my budge
Getter error message Number of statement execution limit exceed Line:(216)
Hi, this script is giving me error message "Number of statement execution limit exceed Line:(216)". Please advise htmlpage Pay_Period_Details(PayPeriodID,AgentID,ShowPrint,start_range,end_range) displayname = "Pay Period Details" content <%{ /* Get The current Pay Period Record */ Int_Pay_Period_ID = PayPeriodID.toLong(); Current_Pay_Period_Record = Pay_Period[ID == Int_Pay_Period_ID]; Previous_Pay_Period_ID = thisapp.Application.GetPreviousPayPeriodID(Current_Pay_Period_Record.ID); /* Checking Agent
API Casing needs consistency in names
The JSON for an account record looks like this: {"Name": "Name of the Account", "id": "id of the account", "Address": "address of the account" "Owner":{ "name": "Name of Owner", "id": "id of owner", } } It makes no sense that "name" is capitalized in
How Can I Easily Access and Manage My GEPCO Online Bill Using Zoho Sheets?
Hello everyone, I'm looking for an efficient way to access and manage my GEPCO online bills. I've heard that Zoho Sheets can be a powerful tool for organizing and tracking bills, but I'm not sure how to set it up for this specific purpose. Does anyone
Newspaper template
Is there a template that looks like a newspaper or magazine?
New in Writer: Enhanced Content Generation and Formatting features
We are excited to unveil these features that can enhance your content creation and formatting experience. These additions are carefully tailored to boost your productivity and unlock your full content creation potential. Get the scoop on all the fresh
Webhook when estimate is refused is not firing
Hello, I use a workflow through make that sends estimate with zoho books (I paid books and sign). -Those estimates when accepted are firing the webhook that I create in zoho sign (photo 1) -However when refused they are not firing the webhook that I created
Transfer contact to a lead.
Is there a way to transfer a contact from CRM to a lead without having to re enter everything.
Form to update a CRM contact field
Hello I need an help as I am going crazy. I need to create a form where there is a dropdown field with the contacts of Zoho crm (if possible filtered on the base of a field) and where other fields will be be automatically fetched with zoho crm data as
Zoho Recruit - Blueprint and ZIA
If I activate the Blueprint for Jobs in Zoho Recruit, Zia disappears for matching canddiates, why is that?
Where is the customization and extendibility of zoho inventory?
After delving into zoho one subscription to test out systems we need for our business, I'm really disappointed after working in Zoho Inventory. Its features and customizability are extremely lacking compared to the other tools like CRM. In our case we
Next Page