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




                                          • Desk Community Learning Series


                                          • Digest


                                          • Functions


                                          • Meetups


                                          • Kbase


                                          • Resources


                                          • Glossary


                                          • Desk Marketplace


                                          • MVP Corner


                                          • Word of the Day


                                          • Ask the Experts





                                                    Manage your brands on social media



                                                          Zoho TeamInbox Resources



                                                              Zoho CRM Plus Resources

                                                                Zoho Books Resources


                                                                  Zoho Subscriptions Resources

                                                                    Zoho Projects Resources


                                                                      Zoho Sprints Resources


                                                                        Qntrl Resources


                                                                          Zoho Creator 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

                                                                                                    • Using Linkedin as 'Unique Identifier ' for Duplicate Management for Candidates and Contacts in Zoho Recruit

                                                                                                      Quick hats off to Zoho Recruit on the functionality of Unique Identifier ' for Duplicate Management for Candidates and Contacts in Zoho Recruit. I recently added the ability to manage duplicates based on Linkedin profile. Candidates' and Contacts' email
                                                                                                    • Ability to re-order Workflow Rules

                                                                                                      We really need the ability to re-order workflow rules within departments.  Either the ability to drag/drop them into a different order or something.
                                                                                                    • Sales Returns - Repairand Return

                                                                                                      Hi Inventory Team, I'm working with a client on an Inventory implementation project and they have shared this use case with me. Some items may be returned by the customer, then returned to the vendor for repairs, received from the vendor and shipped back
                                                                                                    • Inserted Records not showing in Kanban view

                                                                                                      When insert a new record into a report from a workflow, it doesnt show in KANBAN view. When i view the report in a regular list view, the records are there. If i edit the record (while in list view) and then update it at all (even if i dont change anything,
                                                                                                    • Client scripts for Zoho Books ?

                                                                                                      Good day everyone, I am looking for a way to be able to interact with the Quotes and Invoices as they are being created. Think of it like Zoho client script in Zoho CRM. But for the life of me I dont see a way to do this. The issue with having function
                                                                                                    • Multiple Admin accounts

                                                                                                      We recently moved Admin access to our original recruiter (who left) and owner ship of the admin account is set to our CEO. I've asked to also be given admin access so he is not a limiting resource but he/we can't seem to find that out. He recently upgraded
                                                                                                    • Zoho Desk Invite

                                                                                                      I'm trying to send an invite via Zoho Desk to the email nwc.hd@telecare.com.sa using my account in Zoho desk rmsh7777.rs@gmail.com but the invitation or email is no received. I need your kindness to activate the account, please.
                                                                                                    • Forwarding email into Desk - DMARC errors

                                                                                                      Hi, Our email domain is hosted through Exchange Online (Office 365). Customers email support@ourdomain.xyz which is delivered to Exchange. Exchange rewrites the TO email header to the email address associated with our Zoho Desk (support@ourdomain.zoho.xyz).
                                                                                                    • Cannot read properties of null (reading 'className')

                                                                                                      Hello, I'm attempting to integrate the Zoho desk chat widget. It loads visually on most pages, but at some point, it throws this error and it never appears: Cannot read properties of null (reading 'className') Here is the full trace: floatbutton1_hXdnKUp…f6FPihRNT_T47_.js:1
                                                                                                    • Permission Update Failed

                                                                                                      Dear Sir, I have downgraded from the trial paid plan to Free Plan. I am logged in as CEO - Administrator and trying to change the profile permission but getting error - Permission Update Failed. Please see the screenshot. In most of the pages I am getting
                                                                                                    • Zoho Support / Microsoft Outlook integration

                                                                                                      Is there integration between Microsoft Outlook and Zoho Support? If so, can you point me to the related documentation? I'm trying to understand how that would work.
                                                                                                    • Unable to Send Ticket Reply as a Contact in Zoho Desk?

                                                                                                      Hi Zoho Desk Team, I am trying to send a reply to a ticket on behalf of a contact using the Zoho Desk API. My goal is to have the contact's response reflected in the ticket conversation, but I am facing an issue where only the ticket author can comment.
                                                                                                    • MA 2.0 Email Footer

                                                                                                      Good day, I recently went through the nightmare of upgrading from MA 1.0 to MA 2.0 and continue to experience more problems or missing features and settings. In this particular case, I am trying to find where and how to edit the Email Footer in MA 2.0.
                                                                                                    • How Can Integrate Zoho Recruit in a Laravel Website like Danvast.com?

                                                                                                      What are the initial steps to integrate Zoho Recruit with a Laravel website? What API endpoints are necessary to begin the integration process? How can you set up Zoho Recruit API credentials in your Laravel environment? How do you manage API authentication
                                                                                                    • Not receiving New Ticket Emails

                                                                                                      Hello! The company I work for uses the Zoho ticketing system, however, I've noticed I'm not receiving email notifications when new tickets are published. I have admin rights to see these tickets on Zoho Desk and respond to them, but am not receiving the
                                                                                                    • Is there a way to show contact emails in the Account?

                                                                                                      I know I can see the emails I have sent and received on a Contact detail view, but I want to be able to see all the emails that have been sent and received between all an Accounts Contacts on the Account Detail view. That way when I see the Account detail
                                                                                                    • Unified WhatsApp Number Management in Zoho Desk and SalesIQ

                                                                                                      Dear Zoho Desk Support Team, We are currently utilizing both Zoho Desk and Zoho SalesIQ for our customer support operations. While both platforms offer WhatsApp integration, we are facing challenges due to the requirement of separate WhatsApp numbers
                                                                                                    • Paste Screenshot in Ticket

                                                                                                      We love Zoho Desk, but we miss the ability to paste screenshots directly into a ticket.  I know that others have requested this functionality, but I thought it would be good to add it here as well.
                                                                                                    • Refreshing screen collapses Starred Views and Expands All Views

                                                                                                      Just in the past few weeks I've noticed that when I refresh my screen, it now collapses my Starred Views section and Expands the All Views section. This is not how it used to work in the past. It is frustrating.
                                                                                                    • ZOHO DESK ヘルプセンターの言語選択メニューの表示方法

                                                                                                      ZOHO DESK のヘルプセンターを構築し、多言語化設定をしました。 顧客のヘルプセンター画面右上に言語選択メニューが表示されないため、弊社の契約先会社に問い合わせましたが、「通常は多言語化をオンにすると表示するためCSS を触り過ぎではないか」 という指摘のみでした。 試行中ですが表示できません。 何か要因となる情報をお持ちの方がいましたらご教授いただけますと幸いです。 ↓の赤枠を表示したいのですが、表示できません。
                                                                                                    • CRM email sync with 365 - app passwords

                                                                                                      Hi We have synced users crm account with hosted 365 email accounts. 365 has MFA enforced across the tenant. Now encountering issues with 365 sync failing due to password errors after some time. Advised that will need to use app passwords from 365 in order
                                                                                                    • how to Add a TXT record in the DNS

                                                                                                      hi everyone, i am using https://pradairways.weebly.com domain for practice purpose, now a Domain Verification - pradairways.weebly.com is required ,how to add txt reocrd in dns and complete the process. thanks in advanced
                                                                                                    • How can I reduce the size of the lightbox?

                                                                                                      Hello - I want to reduce the size of the lightbox overlay function on my site. Currently it occupies the WHOLE screen when activated, which I'm not a huge fan of. Is there anyway I can reduce the size of the lightbox overlay? Say, it only takes up 75%
                                                                                                    • Items attribute questions

                                                                                                      Many of my items have attributes, such as size and color. How can I add new fields to the "New Items" screen to capture that in my Purchase Orders, Items, and Sales Order pages? I only see these attribute fields when adding an Item Group. Also, on the
                                                                                                    • Update multi-select lookup via API? Or allow for import of multi-select Lookups?

                                                                                                      When will the ability to update a multi-select lookup via API be available? Also when will we be able to import a record with multi-select lookups? I understand a linking module can help with this, but linking modules in our scenario would only be used
                                                                                                    • Would like to create a bounce-back for incoming emails

                                                                                                      Hi all, I have a catch-all address, now from this I would like Zohomail to bounce back specific email addresses to the sender. Would like the server to send back an email from zoho servers stating that the intended addresse is no longer valid. while retaining
                                                                                                    • Cambiar nombre de usuario

                                                                                                      Hola. Tengo una cuenta en zoho, por ejemplo Minombre @ midominio.es Y quiero cambiarlo a Miotronombre @ midominio.es Se puede cambiar??? Con la cuenta gratuita de zoho, cuantos nombres puedo tener en un dominio??? Gracias y buen dia
                                                                                                    • Circuite fail because www.zohoapis.com:443 refuse conection

                                                                                                      Is anyone else experiencing this issue? A few weeks ago, I started having issues with circuits failing due to www.zohoapis.com:443 refusing the connection. The error message is quite clear and points to a problem on Zoho's API server, rather than with
                                                                                                    • Error in connecting to WorkDrive

                                                                                                      I'm trying to write a script to look in a specific WorkDrive folder and if there is a csv or xslx file, copy it to a different folder with a modified filename. That gave me the error: {"errors":[{"id":"F6016","title":"URL Rule is not configured"}]} So
                                                                                                    • Help with Zoho Books Deluge code error

                                                                                                      I have this deluge code im writing for Zoho Books button, it throws an error: Check and update the code in line 12 as there is a Exception : Error at line :14 Improper Statement Error might be due to missing ';' at end of the line or incomplete expression
                                                                                                    • Add additional field to quick search results

                                                                                                      IN the advanced search, we can add any field to the columns. In the regular search results (before you press enter, there is no option to modify the results. It would be super useful to include a custom field where it currently displays the pipleine
                                                                                                    • Problem - cant add Users (i.e. Zoho one / CRM Users) to BCC or CC in email, i.e. Sales orders or Retainers

                                                                                                      I can go to zoho books email templates, and select any email template, and automatically include any Zoho One user, i.e. member of staff. However in the context of sending an email, it will not let us add a member of staff from the user list, instead
                                                                                                    • Referring to Zoho user groups in Deluge?

                                                                                                      Hello, I am wondering whether it is possible to refer to Zoho user groups (with whom the application is shared) in Deluge. I currently restrict records to be viewable only if the login user created the record, but I would also like to make all records viewable if the login user belongs to group X. Thank you.
                                                                                                    • Zoho Books CREDIT LIMIT is completely USELESS due to a BUG!!! Please fix it ASAP!!

                                                                                                      Credit Limit should not be taken into account if payment terms on the Invoice are without credit. If selected Credit 0 days (Prepayment) why in this world would a notification pop up saying credit limit is exceeded and not allowing to create an invoice?
                                                                                                    • Mail Merge - unable to send more than 50 email

                                                                                                      Hi, I've subscribed to the pay email service because of the Mail Merge feature. However, I've found that this feature only allow to send up to 50 emails. I've to attach a screenshot for your reference. This limitation is not mentioned anywhere in service.
                                                                                                    • Auto-sync field of lookup value

                                                                                                      This feature has been requested many times in the discussion Field of Lookup Announcement and this post aims to track it separately. At the moment the value of a 'field of lookup' is a snapshot but once the parent lookup field is updated the values diverge.
                                                                                                    • Records not showing immediately.

                                                                                                      Hi, I keep coming across a problem when records are inserted, updated or deleted via deluge, the changes / new records or deletions aren't visible in the form's report. (Even after refreshing and clearing browser cache). I am experiencing this issue in both Google Chrome and Firefox. The records will eventually show up, but the delay can vary wildly. Below screenshot shows the report still showing a record which has been deleted via deluge.  When clicking "edit" on the record, Zoho displays a single
                                                                                                    • Email signature duplicate

                                                                                                      Hi, For a few weeks, opening the email writer would show an error. After clicking ok, the signature would change slighty (font size, I believe). After that it worked fine, so we thought nothing of it. However, now it no longer shows the error puts the
                                                                                                    • I can't auto-scheduling calls down - the code does not change anything

                                                                                                      Hi, I was trying to set a function that auto-schedules calls based on their call result; i.e "Requested more info". I had also included a reminder to send an email in the code. I logged a test call and nothing changed. Is there anything wrong with the
                                                                                                    • Generate a Zoho Sign link

                                                                                                      From time to time I get a response "I never received your you e-document for electronic signature" is there a way to generate a Zoho Sign link to share.
                                                                                                    • Next Page