Kaizen #21 - Functions in Zoho CRM

Kaizen #21 - Functions in Zoho CRM

Hello everyone!

Welcome back to another week in the Kaizen series!
This week, we will discuss Functions in detail.

What will you learn from this post?
  1. What are Functions in Zoho CRM?
  2. Creating a function
    1. Choosing a function category
    2. Function body
  3. Integration Tasks
  4. Triggering Functions
    1. From Zoho CRM functionalities
    2. From third-party applications
  5. Limits of Functions

1. What are Functions in Zoho CRM?
  • Functions help you accomplish the tasks that are not available by default in Zoho CRM. 
  • You must write custom functions using DELUGE [Data Enriched Language for the Universal Grid Environment]—An online scripting language.
  • Using custom functions, you can automate actions within Zoho CRM, across Zoho products, or between Zoho CRM and any other third-party application.
Note:
Functions are supported only in the enterprise and ultimate editions.

2. Creating a function

To create a function:

Step 1: Go to Setup > Developer Space > Functions


Step 2: Click +New Function


Step 3: Enter details like the Function Name, Display Name, Description, and choose the function category.


2a. Choosing a function category

Functions can fall under five categories:
  • Button: The function gets executed when the user clicks the custom button.
  • Automation: The function gets executed based on workflow rules.
  • Schedule: The function gets executed based on a schedule.
  • Related List: The function gets invoked from a related list.
  • Standalone: A stand-alone function that can be triggered externally.
  • Validation Rule: The function gets executed based on a validation rule.

Step 4: Write the function logic in the console. To know more about DELUGE, refer to Deluge.
Here is an example of a function that automatically generates a quote from a deal on just the click of a button. In DealToQuote() function, the input values are extracted from deals. You can also choose to get them from the users as arguments or JSON request body.


2b. Function Body
potDetails = zoho.crm.getRecordById("Deals",potId.toLong());//integration task
/*Extracting details from the deal*/
quotesubject = ifnull(potDetails.get("Deal_Name"),""); 
contact = ifnull(potDetails.get("Contact_Name").get("id"),""); 
account = ifnull(potDetails.get("Account_Name").get("id"),"");
description = ifnull(potDetails.get("Description"),"");
RelatedProducts = zoho.crm.getRelatedRecords("Products","Potentials",potId.toLong());
product_items = List();
sub = 0.0;
/*Extracting product details from the deal and adding it to quote*/
for each product in RelatedProducts
{
proid = product.get("id");
proname = product.get("Product_Name");
productDesc = ifnull(product.get("Description"),"Manque Description Produit !!!");
quantity = 1;
price = ifnull(product.get("Unit_Price"),"0.0").toDecimal();
listprice = price * quantity;
lineitem = Map();
lineitem.put("product",{"name":proname,"id":proid});
lineitem.put("product_description",productDesc);
lineitem.put("quantity",quantity);
lineitem.put("net_total",listprice);
lineitem.put("total",listprice);
lineitem.put("list_price",listprice);
sub = sub + listprice;
product_items.add(lineitem);
}
/*Storing quote details*/
paramap = Map();
paramap.put("Product_Details",product_items);
paramap.put("Subject",quotesubject);
paramap.put("Contact_Name",contact);
paramap.put("Account_Name",account);
paramap.put("Deal_Name",potId.toLong());
paramap.put("Sub_Total",sub);
paramap.put("Grand_Total",sub);
paramap.put("Description",description);
createResp = zoho.crm.createRecord("Quotes",paramap);
info paramap;
info createResp;
newid = createResp.get("id");
return "Success";

Step 5: Once you have written your logic, click save and execute.


Step 6: Enter the argument values, if any.


Step 7: If your function gets executed successfully, you will get a success message.

Step 7: Click Save.

3. Integration Tasks
Integration tasks are pre-defined functions that allow you to get, create, and update records in Zoho CRM. You can simply use these method names in your Deluge script along with the required data to make API calls. 
In the above example, we have used the getRecordById() integration task that retrieves the details of the deal. For instance, the Deal Name, Contact Name, Account Name, and so on.

Syntax:
<response>=zoho.crm.getRecordById(<module_name>, <record_ID>, <connections>);

Parameters:
Parameter
Description
response
The response with the list of records matching the criteria.
module_name
string, mandatory
The API name of the module you want to fetch the records from.
record_ID
string, mandatory
The unique ID of the record.
connections
string, optional
The connectors that are associated with the function.

Example:
potDetails = zoho.crm.getRecordById("Deals",potId.toLong());

Some of the other available integration tasks are:
To know more about integration tasks, click here.

4. Triggering functions

A function needs a trigger to get executed. You can trigger a function in two ways:
      4a. From Zoho CRM functionality
      4b. From third-party applications

Scenario:
Functions are primarily used to write custom business logic in Zoho CRM. Consider a scenario, where you want your sales representatives to create a quote after reviewing the deal. Instead of letting them create each quote manually, you can add a custom button in the Edit Deal page, which when clicked upon, triggers a function that creates a quote. 

Also, you can configure a third-party system to automatically create a quote in Zoho CRM when the deal amount is less than 1000 OR the deal stage is closed-won. Thus, avoiding manual intervention and enabling them to emphasise on substantial deals. 

Let us discuss how to trigger the DealToQuote() function via a custom button and a third-party application. You can also trigger the same function from a third-party application as a REST API webhook

4a. From Zoho CRM functionality (Custom Button)
  1. Go to Setup > Customization > Modules and Fields.
  2. From the List of Modules, select the required module.
  3. In the Links & Buttons tab, click Create New Button.
  4. In the Create Your Button page, do the following:
    1. Enter the name of the button. The button name should not exceed 30 characters.
    2. Click the Add Description link and specify the details of your custom button. The description should not exceed 250 characters.
    3. Choose the location of your custom button from the drop-down list.
    4. Custom buttons can be placed in 6 different places in your CRM account - Create/Clone page, Edit page, View page, List View page, a button to each record in the list view and Related Lists Page. Note that you can create up to 50 buttons for each module.
  5. Choose an action to be executed when a user clicks the custom button. You can either choose a predefined action from the gallery or the existing functions that were already created by the users in your organization. Also, define your own action by writing a custom function, open a new web tab or invoke a URL based on your needs. It is mandatory to choose the button action. In our case, From Existing Actions in Functions. Choose the function and click Configure.


6. Map the input values to the fields in that module and click Save.


Once the custom button is associated with an action, CRM Administrators can manage permissions by assigning only specific profiles to view and access the custom button.

Similarly, you can associate functions with SchedulesWorkflowsValidation Rules, and Related Lists.

To know more, click here.

4b. From third-party applications

Here, we are going to configure a third-party system to automatically create a quote in Zoho CRM when the deal amount is less than 1000 OR the deal stage is closed-won, thus avoiding manual intervention. 

To achieve this, we are going to trigger the DealToQuote() function from a third-party application (automate.io), whenever the above conditions are met. 



If you want to trigger a function from a third-party application, you must make it available as REST API. 

1. Go to SetupDeveloper SpaceFunctions
2. Choose the function > Click more options > Click REST API


3.Enter the API name for the function. 
4. Enable OAuth 2.0 to share the function as an API within your organization and enable API key to share the function as a webhook with any third-party user.
Click Save.


You must make the API call from the third-party application using the request URL received here.

The DealToQuote() function is triggered from a third-party application (automate.io). You can achieve the same using:
  • Zoho Flow
  • Zoho CRM workflow rule that is triggered whenever a deal is updated
Sample bot configuration in automate.io:


We have triggered the DealToQuote() function using custom button as well as a third-party application. 



5. Limits of Functions
Function calls in Zoho CRM are associated with credits. Each function call results in reduction of one credit from your account. 
Maximum credit limit based on your edition
Edition
Allowed Credits
Maximum credits that can be availed in a 24 hour window
Starter
5,000 credits + (Number of User licenses x 200)
10,000 credits
Standard
5,000 credits + (Number of User licenses x 200)
15,000 credits
Professional
5,000 credits + (Number of User licenses x 200)
20,000 credits
Enterprise/Zoho One/CRM Plus
20,000 credits + (Number of User licenses x 500)
1,00,000 credits
Ultimate
20,000 credits + (Number of User licenses X 1000)
2,00,000 credits

Limits based on properties of a function
Functionality
Description
Limits
Execution Time
Function should be executed within the specified time.
1 minute
Response Limit
Function should return the response within a particular size.
10 MB
Lines of execution
The number of lines in a function code has a limit.
200,000
Send Mail
The number of emails that you can using the send mail syntax has a limit.
1000 per day
Webhooks
GET and POST URLs
50,000 requests per day

For more tips, refer to function tips.

We hope you found this post useful. Stay tuned for more!

Cheers!

Previous 'Kaizen' - Node JS SDK
Next 'Kaizen' - Connections in Zoho CRM

    Access your files securely from anywhere

          Zoho Developer Community




                                    Zoho Desk Resources

                                    • Desk Community Learning Series


                                    • Digest


                                    • Functions


                                    • Meetups


                                    • Kbase


                                    • Resources


                                    • Glossary


                                    • Desk Marketplace


                                    • MVP Corner


                                    • Word of the Day



                                        Zoho Marketing Automation


                                                Manage your brands on social media



                                                      Zoho TeamInbox Resources

                                                        Zoho DataPrep Resources



                                                          Zoho CRM Plus Resources

                                                            Zoho Books Resources


                                                              Zoho Subscriptions Resources

                                                                Zoho Projects Resources


                                                                  Zoho Sprints Resources


                                                                    Qntrl Resources


                                                                      Zoho Creator Resources



                                                                          Zoho Campaigns Resources


                                                                            Zoho CRM Resources

                                                                            • CRM Community Learning Series

                                                                              CRM Community Learning Series


                                                                            • Kaizen

                                                                              Kaizen

                                                                            • Functions

                                                                              Functions

                                                                            • Meetups

                                                                              Meetups

                                                                            • Kbase

                                                                              Kbase

                                                                            • Resources

                                                                              Resources

                                                                            • Digest

                                                                              Digest

                                                                            • CRM Marketplace

                                                                              CRM Marketplace

                                                                            • MVP Corner

                                                                              MVP Corner





                                                                                Design. Discuss. Deliver.

                                                                                Create visually engaging stories with Zoho Show.

                                                                                Get Started Now


                                                                                  Zoho Show Resources


                                                                                    Zoho Writer Writer

                                                                                    Get Started. Write Away!

                                                                                    Writer is a powerful online word processor, designed for collaborative work.

                                                                                      Zoho CRM コンテンツ






                                                                                        Nederlandse Hulpbronnen


                                                                                            ご検討中の方





                                                                                                  • Recent Topics

                                                                                                  • Load form in iframe without header

                                                                                                    I am trying to load a form into an iframe without the header, but I am not having any luck. I am using openUrl() to load the iframe with the form URL and zc_Header set to false, e.g. #Form:Add_Case?zc_Header=false but it is still loading the header. Any
                                                                                                  • Filter embedded report

                                                                                                    How to filter embedded report in a page, below code is not working. dateField => startDate & dateField=< endDate The report should print on page containing records from startDate to endDate. params='zc_Header=true&amp;Service_Date__gte=<%=startDate%>&amp;Service_Date__lte=<%=endDate%>'
                                                                                                  • Creator Simplified #5: Set file upload restrictions in Zoho Creator

                                                                                                    Hey Creators, Welcome to the next post in the Creator Simplified series. Today, we’ll explore how to implement file upload restrictions to limit user submissions to specific file types. By implementing an allowed list for file uploads, you can optimize
                                                                                                  • Field Type: Address, Change District/State to Dropdown with picklist??

                                                                                                    Using the Address Field type, is there a way to make the District/State field be a dropdown with a picklist so the users can select rather than type the state name every time? I know this can be done if I use a drowdown field for the State (or entire address information), but that isn't as tidy as using the address field type. I apologize if this is a duplicate. I posted this question the other day, or so I though. Can't find that post.
                                                                                                  • cutomized fields are not showing up in zoho creator from zoho crm

                                                                                                    We have customized fields in zoho crm under accounts module like "Last production upgrade" --> This field is a date. When created a solution in zoho creator i couldn't find any of the customized fields. Would you please help me on this matter? Thanks
                                                                                                  • How to Add Bulk Data in Zoho Creator Forms Using Deluge Without Exceeding Execution Time Limit

                                                                                                    I have a database form with a column named 'Product Name' containing 8000 values in a Zoho Creator form. In another form named 'Returns Data,' I have a column with the same name, 'Product Name.' How do I add these 8000 values to the 'Returns Data' form
                                                                                                  • Open New Free Zoho Account

                                                                                                    Hi Team, Do you guys offer a free email hosting? I do have a domain already. If yes, what is the process to open the new account? Thanks,
                                                                                                  • 554 5.7.1 : Recipient address rejected: user info@intimspace.de does not exist

                                                                                                    554 5.7.1 : Адрес получателя отклонен: пользователь info@intimspace.de не существует I can't send an email to Google at info@intimspace.de. An error comes. I entered everything correctly in DNS https://zohomail.tools/#domainDetails/intimspace.de/ALL
                                                                                                  • Emails going back unread

                                                                                                    Hi all, When in Zoho mail - when I recieve a new mail it puts back all emails read that day back to unread - I then have to go back through and open all emails I have already read! Gets very annoying... Any idea on the bug fix?
                                                                                                  • Been getting this error, every now and then "Get count limit exceeded, please try again after 3 mins"

                                                                                                    it is really annoying.
                                                                                                  • Constraints on Tasks

                                                                                                    We have a use case where we have certain fixed date tasks and need to schedule predecessor tasks around these. Predecessor tasks need to be completed with a lag before the fixed date. We should be able to schedule the start and end date for predecessor
                                                                                                  • Moving Project Dependencies Not Moving Precedessors

                                                                                                    Most of the time we want to base our start dates around an event that is in the middle of the project template. If I set a bar up at the date we want it, it doesn't move the predecessors up. Is there a way to change this? eg. there is no point starting
                                                                                                  • Can you set task due dates to be "x" days before the milestone?

                                                                                                    We have a milestone set as the date of our first event. All of the tasks need to happen in increments prior to the milestone event. Is there a way to configure this without having to set up each task due date? Thanks!
                                                                                                  • Default ticket template in helpcenter

                                                                                                    Hello, I have a web form and a ticket template created. How can I make that my default ticket template? If an user clicks New ticket or create a ticket, I want that template to be the default one. Thank you for the time and info.
                                                                                                  • Expanded data-capturing capabilities with enhanced tabular sections

                                                                                                    We are thrilled to announce an update to Zoho Recruit that brings even more flexibility and customization to your recruiting process. With the addition of 10 new field types to the tabular sections, you now have the power to enhance your tabular sections
                                                                                                  • Integration of Business Hours in Email Templates

                                                                                                    Dear Zoho Desk Team, We would like to propose a feature enhancement to Zoho Desk that would greatly improve the utility of the Business Hours settings and streamline communication with our clients. Feature Request: Integration of Business Hours in Email
                                                                                                  • Add Owner to deluge-created module record note

                                                                                                    Is it possible to include the "owner" aka "creator", of a Note when creating it via delulge? This sets "superadmin" as the Note creator. I need to override it. notemap = Map(); notemap.put("Parent_Id",program_contact_id); notemap.put("Note_Content",program_contact_data.get('Note'));
                                                                                                  • Blueprint - Field Validation Criteria (During)

                                                                                                    When setting validation criteria elsewhere in Zoho, or even workflow criteria etc., there are Is Empty and Isn't Empty options.  Within the Field Validation Criteria within Blueprint, those options aren't available.  Is there a particular reason for this? 
                                                                                                  • Delete Field that is used in a Zoho Flow connection

                                                                                                    I'm trying to delete a Field used in a Webhook created by Zoho Flow with CRM Connection and i get the following alert: When going to the alert i get to the following issue, can't edit it since its been deployed by a pluggin But yes i have here the prompted
                                                                                                  • Use image on img HTML tag

                                                                                                    Hi how could I do to use my image saved in Workdrive to use it in an HTML img tag ? I need to display it on my website without having to use iframes. Regards,
                                                                                                  • ZOHO Compain emails going to spam after authentication is successful

                                                                                                    Hello, I am frustrated right now. I have recently setup the zoho email compaign, The auto responder email went to receipient spam folder. then, I researched a lot and completed authentication (SPF, DKIM) in email deliverability, email relay in zoho crm.
                                                                                                  • Security Policies

                                                                                                    To protect against cyber threats and attacks, organizations need to set up security policies for their employees' accounts. Security policies are rules and regulations for every individual or group using the organization's assets and resources. Enabling
                                                                                                  • Zoho CRM functions editor is not in the programming language deluge

                                                                                                    I am trying to write a function for a button. I helped someone before in deluge and I'm using this new editor I'm not familiar with - I guess it is new. Why is the default code statically typed? The editor will not let me create a variable without a type.
                                                                                                  • "Age in Days" calculation in Advanced Analytics

                                                                                                    Hi Can someone advise how this is calculated? I am getting values on this report which I cannot understand. Thank you
                                                                                                  • Automatically set quotes to "lost" if deal is set to lost

                                                                                                    Hi, Is there a way to automate that if a deal (opportunity) is lost the related quotes are also set to lost? Thanks!
                                                                                                  • Subdomain

                                                                                                    How can i make subdomain in my zoho website
                                                                                                  • A/R Aging Details shows wrong aging days

                                                                                                    In the A/R Summary Report all of the invoices are in the right aging buckets. When I run the A/R Aging Details report I get aged dates of +300 days when they should be in the 0-90 day range.
                                                                                                  • Global Choice List share ownership

                                                                                                    I have created several forms that use one or more Global Choice Lists. These lists have been published to Org. I would like to allow one or more admins to edit the choices in these lists. Any help appreciated. Geoff
                                                                                                  • Domain Transfer

                                                                                                    I have a Godaddy domain, how i can transfer it to Zoha? and how i can move my website to Zoho server? With my best wishes.
                                                                                                  • Project Templates & Reminders

                                                                                                    I am getting projects all set up to work for our company and am running into a problem that I'm hoping is easily fixable. I have created a project template and within that project, there are reminders set on certain tasks. When I create a project from
                                                                                                  • Kaizen #126 - Circuits in Zoho CRM - Part 1

                                                                                                    Hello everyone! Welcome back to another week of Kaizen! Today, we will discuss an exciting topic—Circuits in Zoho CRM. For starters, we will discuss what Circuits are, how beneficial they are for businesses, different views of a Circuit, and the different
                                                                                                  • Create customized SLAs for your customer base with support plans

                                                                                                    Managing customer expectations, prioritizing critical issues, and resolving customer inquiries on time is quite a juggle. Without a clear timelines or defined priorities, a support team may struggle with delays in response, SLA violations, and pending
                                                                                                  • Zoho Flow or Schedules

                                                                                                    I have a process where we text our leads 7 times over a 14 day with different content for each text. I created one flow in Zoho Flow to do this, but wondering if there is a more efficient way to accomplish this via Schedules. It goes on for 6 more times
                                                                                                  • Free webinar: Zoho Sign 2024 wrap-up - Everything that is new and has changed

                                                                                                    Hello, Are you looking up to catch up on all the updates made to Zoho Sign in 2024? Or are you still figuring out how you can use Zoho Sign better to get business paperwork done more efficiently? If so, we invite you to join us this Thursday, December
                                                                                                  • How to Customize Task Creation to Send a Custom Alert Using JavaScript in Zoho CRM?

                                                                                                    Hello Zoho CRM Community, I’m looking to customize Zoho CRM to send a custom alert whenever a task is created. I understand that Zoho CRM supports client scripts using JavaScript, and I would like to leverage this feature to implement the alert functionality.
                                                                                                  • Workflow - Execute Based on Date

                                                                                                    Hello, I have trouble understanding the documentation for Execute Based on Date or Date Time Field's Value. I want to send an email every time I have a Case opened for more than three days with its status unchanged. I set : This rule will be executed 3 days after [date].  Condition : Status is [New]. Instant Action : Send an email notification. However, I'm not sure I follow this part of the documentation: "For all the records matching the rule criteria, rule will be triggered either monthly or yearly
                                                                                                  • Can we set a BCC address as default to show while sending emails?

                                                                                                    Two things inside ZohoCRM are annoying me because it's a repeated work. First one is that I always need to click manually to add the BCC field while sending an email to a lead. Can we set a default address so when I click to send a new email the BCC address
                                                                                                  • Make collecting payments from your customers in Bigin easier with payment links

                                                                                                    Greetings, Efficient payment collection is crucial for business success. Bigin already helps your businesses manage and sell products effectively, but we can further enhance this by making payment collection easier. This integrated payment feature lets
                                                                                                  • Send email is not authenticated

                                                                                                    Hi, I’m getting an error in Gmail, when receiving an email from my account in zoho, my email is already authenticated in my domain, and I don't know why I keep receiving this message... also testing in outlook, the message goes directly to "junk".
                                                                                                  • Inbox Preference - Saved replies based on message repsonse with specific word

                                                                                                    Hi There, Can one create a workflow where the Save Reply will be generic for all messages that contains a specific word, various channels,. The saved reply should contain a link for download etc. that is a response to the word entered in the message contained
                                                                                                  • Next Page