Kaizen #105 - Functions, Integration Tasks, and API Credits - Part 1

Kaizen #105 - Functions, Integration Tasks, and API Credits - Part 1

Hello everyone!
Welcome back to another week of Kaizen!
In today's post, we will discuss functions, integration tasks, how they consume API and function credits.
In the next post, we will discuss connections, the difference between integration tasks and invoke URL in functions, how authentication happens for invoke URLs, and their credit consumption pattern.

What are functions in CRM?

A business involves multiple processes that cater to specific needs, like managing the sales pipeline, automating the flow of data between modules or different third-party systems, etc.
Zoho CRM gives you a wide range of options to achieve your business goals in the form of pre-defined functions under Setup > Developer Space > Functions. You can tweak these functions and associate them to workflows, blueprints, approval processes, circuits amongst many others, at just the click of a button.

While it is understandable that every business' needs are different, and the pre-defined functions, albeit very generic and most-commonly used, may not suit every business, Zoho CRM allows you to write your own functions specific to your needs.
More details on functions, here.
You can use Zoho's Deluge scripting language to write your own functions in a simple drag-and-drop function editor under Setup > Developer Space > Functions.

Integration tasks

We talked about how functions solve your business cases. How exactly do they do it?

Let's say you want to create a record in Zoho CRM using Functions. Instead of having to add values to every field the traditional way in web UI, functions have integration tasks that make working with records a lot easier as they act as API wrappers. These integration tasks help you make direct API calls without having to write code manually to handle API endpoints, HTTP methods, request parameters, or authentication mechanisms. What's more? They accept the input as function arguments in key-value pairs, much like JSON.

How are integration tasks beneficial to you?

When you use multiple Zoho products, data flow between them becomes much simpler and easier through integration tasks.
Your code becomes concise and easy to interpret.
As the integration tasks are essentially API wrappers, you do not have to worry about authorization as these integration tasks are considered as API calls triggered by the org's admin.

For today's post, let us discuss the function Converting a Sales Order to a Purchase Order, that uses integration tasks.
A gist of the code:
  1. Use the getRecordById integration tasks to get the ID of the Sales Order you want to convert to a Purchase Order
  2. Get the details of the product line items in the sales order, iterate through each of them, and add them to a map.
  3. Put these in another map to be used in the Purchase Order.
  4. Use the createRecord integration task and pass the new map to create a purchase order with the details from the sales order.

Here is the code:
Note that this function takes the soID(sales order ID) as the argument.

respMap = zoho.crm.getRecordById("Sales_Orders",input.soId.toLong());
productDet = ifnull(respMap.get("Product_Details"),"");
pdlist = List();
for each eachProd in productDet
{
productvalue = eachProd.get("product");
proid = productvalue.get("id");
proname = productvalue.get("name");
mp = Map();
mp.put("product",{"name":proname,"id":proid});
mp.put("quantity",ifnull(eachProd.get("quantity"),"0").toLong());
mp.put("list_price",ifnull(eachProd.get("list_price"),"0.0").toDecimal());
mp.put("discount",ifnull(eachProd.get("discount"),"0.0").toDecimal());
mp.put("total",ifnull(eachProd.get("total"),"0.0").toDecimal());
mp.put("net_total",ifnull(eachProd.get("net_total"),"0.0").toDecimal());
pdlist.add(mp);
}
paramap = Map();
paramap.put("Product_Details",pdlist);
paramap.put("Subject",ifnull(respMap.get("Subject"),""));
paramap.put("Contact_Name",ifnull(respMap.get("Contact_Name"),"").get("id"));
paramap.put("Account_Name",ifnull(respMap.get("Account_Name"),"").get("id"));
paramap.put("Owner",ifnull(respMap.get("Owner"),"").get("id"));
paramap.put("Sales_Order",ifnull(respMap.get("id"),""));
paramap.put("Terms_and_Conditions",ifnull(respMap.get("Terms_and_Conditions"),""));
paramap.put("Description",ifnull(respMap.get("Description"),""));
paramap.put("Adjustment",ifnull(respMap.get("Adjustment"),"0.0").toDecimal());
paramap.put("Discount",ifnull(respMap.get("Discount"),"0.0").toDecimal());
paramap.put("Tax",ifnull(respMap.get("Tax"),"0.0").toDecimal());
paramap.put("Shipping_Cuty",ifnull(respMap.get("Shipping_Cuty"),""));
paramap.put("Shipping_Code",ifnull(respMap.get("Shipping_Code"),""));
paramap.put("Shipping_Method",ifnull(respMap.get("Shipping_Method"),""));
paramap.put("Shipping_State",ifnull(respMap.get("Shipping_State"),""));
paramap.put("Shipping_Street",ifnull(respMap.get("Shipping_Street"),""));
paramap.put("Status",ifnull(respMap.get("Status"),""));
createResp = zoho.crm.createRecord("Purchase_Orders",paramap);
info paramap;
info createResp;


Here is the response:


This is the Purchase order created from the sales order.



I have associated this function to a workflow that converts a sales order to a purchase order, every time a sales order is created or updated.


How is authentication handled for integration tasks?

Functions with integration tasks are triggered by actions like workflows, blueprints etc. These triggers are org-wide and not restricted to specific sets of users. So, the integration tasks are executed as if the actions are done by the org’s admin.

API and Function Credits

Just like how APIs consume credits, integration tasks consume API credits, too.
The number of credits depends on the integration task you have used. For example, if you use the createRecord integration task, it consumes the same credits as the create records API. Similarly, the getRecordById integration task consumes the same credits as the Get Records API.
This is in addition to the function credits.
So, for the above function, the following are the various limits applied:
  • API credits - 2 - one each for getRecordById and createRecords integration tasks.
  • Function credits - 1

Where can you find the usage stats?


API Dashboard

Apart from API credit consumption, the API dashboard also gives you the details of the credits consumed by integration tasks.
The "Credits Usage" section shows you the credits specific to integration tasks. As you can see, out of the total available 56000 credits, 36 credits are consumed. Out of these 36 credits, 32 are from integration tasks.


The "Credits by Applications/Functions" pie chart gives you the credit consumption by each function or app.


When you click on one of them, you will see the details.


Functions Dashboard

The "Most Credits Consumed Functions" chart gives you the details of the functions that have consumed credits higher than most.


We hope you found this post useful. Next week, we will discuss Connections, invoke URLs and more.
Let us know what you think in the comments, or drop us an email at support@zohocrm.com.
Cheers!

    • Sticky Posts

    • Kaizen #198: Using Client Script for Custom Validation in Blueprint

      Nearing 200th Kaizen Post – 1 More to the Big Two-Oh-Oh! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
    • Kaizen #226: Using ZRC in Client Script

      Hello everyone! Welcome to another week of Kaizen. In today's post, lets see what is ZRC (Zoho Request Client) and how we can use ZRC methods in Client Script to get inputs from a Salesperson and update the Lead status with a single button click. In this
    • Kaizen #222 - Client Script Support for Notes Related List

      Hello everyone! Welcome to another week of Kaizen. The final Kaizen post of the year 2025 is here! With the new Client Script support for the Notes Related List, you can validate, enrich, and manage notes across modules. In this post, we’ll explore how
    • Kaizen #217 - Actions APIs : Tasks

      Welcome to another week of Kaizen! In last week's post we discussed Email Notifications APIs which act as the link between your Workflow automations and you. We have discussed how Zylker Cloud Services uses Email Notifications API in their custom dashboard.
    • Kaizen #216 - Actions APIs : Email Notifications

      Welcome to another week of Kaizen! For the last three weeks, we have been discussing Zylker's workflows. We successfully updated a dormant workflow, built a new one from the ground up and more. But our work is not finished—these automated processes are
    • Recent Topics

    • Assign Income to Project Without Invoice

      Hello, Fairly new user here so apologies if there is a really obvious solution here that I am just missing... I have hundreds of small deposits into a bank account that I want to assign to a project but do not want to have to create an invoice every time
    • How to Print the Data Model Zoho CRM

      I have created the data model in Zoho CRM and I want the ability to Print this. How do we do this please? I want the diagram exported to a PDF. There doesnt appear to be an option to do this. Thanks Andrew
    • our customers have difficult to understand the Statements

      our costumers have big problems to understand Zohos Statements. we need a text box after the payment number to explain what the payments are for. Is it possible to develop a version of the Statement with that kind of box and if so whu can do it
    • How to track a list of ALL the items that ONE customer bought?

      Hello, I am interested in getting a list of all the items that only ONE of my customers bought, and the invoices are what show up instead. It's very tedious to go through every single invoice when we sell a lot of items to this customer. Surely there
    • Exchange Rate Updates

      Hi, It would be great that when you work with multiple currencies, the exchange rate updates automagically every day (as seen on Zoho Books) or at least that when you create/update an opportunity the exchange rate could be manually updated, or maybe both!
    • Locked Out of Super Admin Account

      I'm locked out of my Super Admin account and the external e-mail is no longer associated with it. There seems to be a problem during set up, the system ought to ask to assign a new password instead of using Google accounts. Please help me get back access.
    • Emails are going to notification folder and not in inbox

      emails are going to notification folder and not into inbox
    • 550 5.4.6 Unusual sending activity detected. Please try after sometime

      Hi, I am receiving this error message when trying to send my emails. The only reason I can think why this is happening is my previous two emails were bounced back to me due to a non working mailbox error. I have followed the online links for unblocking
    • Projects Home Customization

      Hello! We've been in Zoho One since July of last year, and my team has started providing feedback on what they'd like to do. Their latest wish is that they could have more control over the Projects Home content. For example, they want a card that shows
    • IMAP search support

      Does Zoho Mail support IMAP search? https://www.rfc-editor.org/rfc/rfc9051.html#name-search-command TEXT <string> Messages that contain the specified string in the header (including MIME header fields) or body of the message. Servers are allowed to implement
    • Performance is degrading

      We have used Mail and Cliq for about three years now. I used to use both on the browser. Both have, over the past 6 months, had a severe degradation in performance. I switched to desktop email, which appeared to improve things somewhat, although initial
    • Cannot reorder fields in Page Layout in Expenses and Purchase Requests

      It is very inconvenient that the custom fields in Page Layout cannot be re-ordered. The only way is to remove the fields and re-create them; however, it is impractical. This would affect the reports and dashboards we are having. Not able to re-order the
    • bouncing emails

      My recurring invoices have bounced back
    • Probable Scam / Phising attempt from email pretending to be Zoho

      I think this is a scam email right? It says "zohCworkplace.com". I'm on the Mail Free plan The link in the CTA button seems to go to a redirect. Just wanted to bring it up to the security team.
    • Feature Request: Ability to set Default Custom Filters and apply them via URL/Deluge

      I've discovered a significant gap in how Zoho Creator handles Custom Filters for reports, and I'm hoping the Zoho team can address this in a future update. This limitation has been raised before and continues to be requested, but remains unresolved. The
    • Email Address Search in "To" Field Search is broken, Zoho refuses to fix it

      Typing a part of the email address string other than the beginning of the string does NOT work, I kindly urge Zoho to fix this. Let's say you remember writing an email so someone called "smith" from company "corp.com", but can't remember their first name,
    • Emails not being received by @hotmail.com, @outlook.com and a few others

      When I try to send emails from zoho mail to people with email addresses ending @outlook.com and @hotmail.com (and a few others), I get a 'delayed' automatic email and then a few hours later, an 'undelivered' automatic email. This has started a few months
    • scroll bar for far left of screen

      I am unable to even see the scroll bar to the right of "inbox" etc on the left; it is stuck at "streams" and I can't get to inbox or anything else. It would help if it could be made a lighter color as the black or dark grey can't bee seen.
    • OUt of office every friday

      Hi, I tryed to configure my out of office, because i'm not working or emailing on fridays. But when i select only friday as unavailable day, the out of office still sets for the whole week. What am I doing wrong?
    • Signature line

      How do I set signature line in email
    • Zoho email

      I cannot send email to mail.ru
    • 【参加無料】東京 Zoho ユーザ交流会 NEXUS ー CRMで始めるマーケティング事例 / AI活用法(Zia Agents)

      ユーザーの皆さま、こんにちは。コミュニティチームの藤澤です。 3月27日(金)に東京、新橋で東京 Zoho ユーザー交流会 NEXUS を開催します! 昨年度までより、さらにパワーアップして戻ってきました! ユーザー活用事例は、2人のユーザーさんからお話しいただきます。Zoho サービスの活用の幅を広げたい方や、他のユーザーの利用法を気軽に知りたい方など、多くの方にとって学びのあるセッションになること間違いなしです✨ また今年は、これまで以上に、AI機能にも焦点を当てて行く予定です。 初回として、Zoho社員からZoho
    • Issue Exporting Data – CSRF Token Invalid Error

      Dear Zoho Team, We are experiencing an issue when exporting data from our Analytics workspace. Whenever we attempt to export data from our analytical pool, the system displays the following alert message: Alert Message: The CSRF token is invalid. It could
    • Deluge Learning Series – Client functions in Deluge | January 2026

      We’re excited to kick-start the first session of the 2026 Deluge Learning Series (DLS) with Client functions in Deluge. For those who are new to DLS, here’s a quick overview of what the series is all about: The Deluge Learning Series takes place on the
    • Zoho Mail 505 error I can not send email

      Hi, I’m having issues sending emails from my custom domain email address. When I send emails to Outlook addresses, I receive an “Undeliverable 505” error. However, emails send and receive correctly when I use Gmail. This is important for my business,
    • Multiple MFA Methods

      With SMS-based MFA methods being discontinued, there is now no way to have mutliple MFA methods. I'd like to add my zoho account on two seperate phones using the Google Authenticator app. In the https://accounts.zoho.com/home#multiTFA/modes you can only
    • Reuse Standalone Function

      I noticed that there's a missing information in documentation to reuse a standalone function and it is because the parameters require an argument. Here is my code and it is working. response = invokeurl [ url: "https://people.zoho.com/api/v3/function/sample/execute"
    • Domain renewals

      Need to know how hoe to renew the domain
    • MX shopify problem

      hello, i added all MX values in my shopify DNS - it shows those values on the shopify panel + your toolkit. I tried to send some email and it works, however on my gmail it says they cant verify this email. When i try to answer into my domain's email -
    • Best Way to Manage Email Notifications While Running a Strategy Website

      I am currently managing a content-based website, and I use Zoho Mail for handling contact forms, user queries, and collaboration emails. One challenge I am facing is organizing incoming emails efficiently, especially when messages come from different
    • What is the maximum email domains ?

      I help manage about 20 associations and I'm looking for a way to centralize them in one place. Does Zoho Mail pro or enterprise support 20-30 domains for 3-5 users each?
    • Add to Workdrive filter

      I'm trying to create a filter that will upload attachments in emails and the e-mail body to a folder in workdrive. I am able to do one or the other (attachment, or e-mail content), but not both. I first tried it using the "Email (EML) + attachment" option.
    • Forgot my admin Panel Id and password

      Sir, I have an account , where a domain mycityestate.in is added for Zoho email , now it is hard for me to manage email because i have forgotten the Email account and password registered with Admin Panel of Zoho. Just need email name which is registered
    • MCP no longer works with Claude

      Anyone else notice Zoho MCP no longer works with Claude? I'm unable to turn this on in the claude chat. When I try to toggle it on, it just does nothing at all. I've tried in incognito, new browsers, etc. - nothing seems to work.
    • Image Compression Options

      Much better if we have level of options to compress the image [20%, 40%...] We are dealing with service reports daily that has before and after photos (image field)- the file size too large and one thing, the current limit is 10mb or 15mb for report
    • Blocklist candidates in Zoho Recruit

      We’re introducing Block Candidate, which helps recruiters to permanently restrict a candidate from applying to current/future job openings. Once the candidate is blocked, they will no longer be able to participate in the recruitment process. This will
    • Pass shipping info to payment gateway Zoho Books to Authorize.net

      For some reason the integration from Zoho books to Authorize.net does not pass the shipping address. Authorize.net is ready to receive it, but zoho books does not send it
    • Knowledgebase SEO

      We have a custom-domain mapped help center that is not restricted via login. I have some questions: a) will a robots.txt file still allow us to control indexing? b) do we have the ability to edit the sitemap? c) do category URLs get indexed by search
    • Problem with CRM Connection not Refreshing Token

      I've setup a connection with Zoom in the CRM. I'm using this connection to automate some registrations, so my team doesn't have to manually create them in both the CRM and Zoom. Connection works great in my function until the token expires. It does not refresh and I have to manually revoke the connection and connect it again. I've chatted with Zoho about this and after emailing me that it couldn't be done I asked for specifics on why and they responded. "The connection is CRM is not a feature to
    • New Features: Repeat Last Action, Insert Cut/Copied Rows/Columns and Hyperlink

      You might have noticed the constant updates to Zoho Sheet of late. Here are 3 more features that have been added to Zoho Sheet recently: F4 - Repeat Last Action Insert Cut/Copied Rows and Columns Insert Hyperlink Here is a screen cast demonstrating each of these features. Read further below to learn more about these new features. F4 - Repeat Last Action: You can now repeat the last action you made on your spreadsheet by using the keyboard shortcut, F4. It is quite handy and helps you get your work
    • Next Page