Hello everyone!
We are as excited as you are with this topic! Let's dive right in!
As promised, in today's post, we will discuss a use case, see how execution happens, and associate that circuit with a workflow.
In our next post(Yes! There's going to be another one!), we will associate the circuit with a button and a blueprint, view logs, and debug issues.
Sample use case - Loan Verification Process
Consider that we have a module in CRM called Customers, where we have personal information of customers, tax-related details, tax and personal ID verification details and status. Our aim is to check the requested loan amount, check eligibility, and then grant or reject it.
Here is a screenshot of a record in the Customers module.
Our condition is that whenever the loan amount is less than Rs. 500,000, the circuit should directly proceed to document verification. When the requested loan amount is greater than Rs. 500,000, we must check a few eligibility criteria before proceeding to document verification.
We can automate this entire process using Circuits, and execute it through a button, associate it with a workflow or a blueprint.
Let's take a look at the Circuit's flow.
Here are the different states of the Circuit that explain the logic.
- Get the loan record.
- Check the loan amount.
- If the loan amount is less than Rs. 500,000, proceed to document verification.
- If the loan amount is greater than Rs. 500,000, check the tax filing status.
- If tax is not filed, update the record's Loan Eligibility field with the value "Tax not filed. Hence, not eligible for loan".
- If tax is filed, fetch the applicant's credit score and check the eligibility.
- If the credit score falls short, update the record's Loan Eligibility field with the value "Issue with credit score".
- If the credit score is up to the mark, proceed to document verification—Personal ID and Tax ID verification.
- Update the details of the record to sanction the requested loan.
Let's discuss each of these states in detail.
1. Get the loan record
Builder View
Type: Get Record from Zoho CRM's states.
Action: Gets the details of the loan record from the Customers module. The output is in the following format.
{ "ZohoCRM": { "record_id": "5575270000005762031", "user_id": "5575270000005379053", "module": { "api_name": "Customers", "tab_label": "Customers", "id": "5575270000001975002" } }, "record": { "data": [ { "Owner": { "name": "Patricia Boyle", "id": "5575270000001947001", }, "$currency_symbol": "$", "Tax_ID_Verification_Message": "Tax ID Verified Successfully", "$review_process": { "approve": false, "reject": false, "resubmit": false }, "$sharing_permission": "full_access", "Personal_ID_Number": "464694660655", "Personal_ID_Verification_Message": "Personal ID Verified Successfully", "Name": "Stephen Adams", "Manual_Approval": "Depends on score", "$state": "save", "$process_flow": false, "Tax_Score_Status": "Score is eligible for Loan", "$locked_for_me": false, "Tax_ID_Number": "GBHPS3618H", "id": "5575270000005762031", "Tax_ID_Verified_Date": "2024-02-26", "Loan_Eligibility": "Eligible for Loan", "$approval": { "delegate": false, "approve": false, "reject": false, "resubmit": false }, "Modified_Time": "2024-02-29T12:26:11+05:30", "Tax_ID_Verification_Status": "Verified", "Tax_Return_Availability": "Yes", "Tax_ID_Verified_Time": "2024-02-26 23:28:39.0", "Personal_ID_Verified_Time": "2024-02-26 23:28:39.0", "Created_Time": "2024-02-29T12:26:11+05:30", "Amount": 600000, "$editable": true, "Personal_ID_Reference": "6cefa3d4-b87b-46a6-8814-b21fb422a28d", "$orchestration": false, "Tax_ID_Reference": "f6697aa8-8efc-4ee9-8dcc-0bc838755cb4", "Tax_Score": 450, "Personal_ID_Verification_Status": "Verified", "Personal_ID_Verified_Date": "2024-02-26", "$in_merge": false, "Locked__s": false, "Tag": [], "$zia_owner_assignment": "owner_recommendation_unavailable", "$approval_state": "approved", "$pathfinder": false } ] } } |
You can use any part of this output as input to other states. You can achieve this by using the JSON Path expression in the “result path” to traverse the result JSON of the state.
Result path allows you to combine state result with state input to pass as output. You can add the result path in the "Input/Output" section in the Builder view as well as the JSON in Code view.
In our case, we want to use the data inside the “record” JSON object. So, the result path will be $.record.

Result path is mandatory when you use the Get Record Zoho CRM state.
Next state: Check Loan Amount
Code View
2. Check Loan Amount
Builder View
Type: Branch
Action: Checks for the condition specified in the branch—check if the loan amount < 500,000. If yes, and Go to Documents verification state, else go to Check tax filing status state.
Next state: Check Tax filing status(if loan amount > 500,000)
Code View
3. Check Tax Filing Status
Builder View
Type: Branch
Action: Checks for the condition specified in the branch—if the tax filing status is Yes, fetch the credit score. Else, update the record with "Tax not filed; not eligible for loan".
Next state: Fetch Applicant Credit Score
4. Fetch Applicant Credit Score
Builder View
Type: Function
Action: Executes the CRM function "Tax Score Check" that holds the logic to get the basic eligibility stored in the Org variable "eligibility", compare it with the tax score of the applicant, and update the record, accordingly. Here is the snippet of this function.
Next state: Check eligibility of Credit Score
Code View
5. Check eligibility of Credit Score
Builder View
Type: Branch
Action: Checks for multiple conditions—if Tax Score Status = Eligible, go to Document Verification.
If Tax Score Status = Not eligible & the value of the field "Manual Approval" = "Not approved", update the record with "Issue in Tax Score".
If Tax Score Status = Not Eligible & "Manual Approval" = "Approved", proceed to document verification.
Next state: Depends on the condition that is met in the "Check Tax Score Eligibility" state.
Code View
6. Documents Verification Process
Builder View
Type: Parallel
Action: Verifies the Tax ID and Personal ID of the applicant.
Next state: Verification Details - Update Record
Code View
7. Tax ID Verification
Builder View
Type: Function
Action: Executes the function "Tax ID Verification" that has the logic to verify the tax details of the applicant.
Here is the snippet of this function.
Next state: Verification Details - Update Record
Code View
8. Personal ID Verification
Builder View
Type: Function
Action: Executes the function "Personal ID Verification" that has the logic to check for the applicant's personal details.
Here is how the function looks.
Next state: Verification Details - Update Record
Code View
9. Verification Details - Update Record
Builder View
Type: Function
Action: Executes the function "Update Customer Record status" that uses the Deluge Update Record integration task to update the "Loan eligibility" field.
Here is how the function looks.
Next state: End
Code View
10. Update Record - Tax Not Filed, Not Eligible
Builder View
Input/Output
Type: Function
Action: When the requested loan is greater than Rs.500,000 and the Tax Filing Status in "Not Filed", this state executes the function "Update Customer Record status". This function uses the Deluge Update Record integration task to update the "Loan eligibility" field, and takes the parameters "rec_id" and "loan_eligibility" with the values "$.ZohoCRM.record_id" and "Tax Filing is missing, Hence not eligible for the loan.", respectively.
Next state: End
Code View
11. Update Record - Issue with Credit Score
Builder View
Type: Pass
Action: When the tax score eligibility does not meet the requirement, this state ends the circuit's execution.
Next state: End
Code View
Testing and Execution
Let us see the execution of this circuit with a sample record ID.
When you click each state, you can see the input and output of that state.
When you click "View Logs", you can see how execution has happened, the payload for each state, the response, etc.
Associating this Circuit with a Workflow
Follow the steps mentioned in this article to create a workflow.
The condition for this workflow to execute the circuit is when the requested loan is greater than Rs. 500,000.
The Action is to execute the circuit. Choose the option "Execute Circuit" from the Instant Actions and select the Verification Process Circuit.
Save the workflow.
Let's test this workflow by creating a record in the Customers module with the loan amount less than Rs. 500,000.
As you can see, the workflow is triggered and executes the circuit when the loan amount is less than Rs. 500,000.
You can view the circuit's execution and other details as a related list.
Summary
Circuits allow you to automate entire business processes by allowing you to orchestrate functions along with your business logic as you see fit.
As you witnessed in this example, we used multiple independent functions written in CRM to achieve our business case through utilizing them in a circuit. This gives you the benefit of writing functions that can be reused in multiple places while saving you from the grief of dealing with huge volumes of code that are hard to maintain and harder to debug when written as a single function.
We hope you liked this post. We'll see you next week with another post on Circuits.
Let us know if you have any questions or feedback. We are listening!
Cheers!
Shylaja S
Additional Reading:
Recent Topics
Delegate Access - Mobile iOS/iPad
We’re over the moon that delegate access is now available in Zoho Mail as we were nearly ready to switch platforms because of it! Is there a timeline on when delegate mailboxes will be accessible from the iOS and iPad OS applications? Thanks, Jake
Request For Quotation (RFQ) module
Hello, Do you have any plans to implement a RFQ module in to ZOHO Inventory? I would like to chose items that I require a price for, select a number of different suppliers to e-mail and have them submit there pricing online. I would then like to see a
Support for Developing Zoho Recruit Extensions via Zoho Sigma
Hi, I’m interested in building an extension for Zoho Recruit using Zoho Sigma. However, when I navigate to Sigma and attempt to create a new extension (via the "New Extension" option), Zoho Recruit does not appear as a listed service—only options like
FOLDER DISAPPEARED
Hello Zoho Community. I recently found a problem with no explanation: a folder in Zoho Analytics just disappeared, but the tables and SQL sentences still existed, the folder was not deleted. The solution for me in this case was to create a new folder,
How to create estimates/Invoices with sub-totals
Every other accounting package can create estimates and invoices with Sub-totals. How can I do that in ZohoBooks?
Deluge scripts
Why is there not a search function to make it easier to find the script of interest when modifications are required.
Social media simplified with Zoho Social: Why should brands have a Threads profile?
Just over a year ago, Instagram launched Threads, the all new social media app primarily focusing on sharing text online. It was welcomed by people worldwide with more than 10 million users in just seven hours, and it currently has over 175 million active
Auto tracking URL generation based on Carrier
Hi, While creating a shipment order for a package in Zoho Books, I have a requirement that for example, if the carrier is Delhivery and tracking number is 1234, then can automatically the tracking link/URL be generated as www.delhivery.com/1234. Similary,
New Beginnings with Zoho Desk mobile app best practices: Part 3
In focus: Scaling consistency, intelligence, and customization In our third installment, we'd like to share tips to help you elevate your customer experience as you handle support operations seamlessly on mobile. Let's reconnect with Omniserve, the field
Highlights of 2025: Milestones and moments
Hey everyone! As we step into 2026, it’s a great time to look back at everything 2025 brought to Zoho Social. This year was big, packed with powerful new features, smart enhancements, exciting events, and a major milestone: a whole decade of Zoho Social.
Introducing the sandbox environment in Zoho Sign
Hey there! Customer and partners across the globe have been requesting a testing environment—also called a sandbox—for quite some time. Sandboxes help you try out document workflows before using them in your production setup. This new year, we are excited
Can I share the drive with another Windows user?
We use the WorkDrive Sync application on a server with several remote desktop users. Our question is: Can the drive created by WorkDrive Sync be shared from one of these remote users with the other users so they can access the files, or do we need to
Syncing Bills in Zoho Books to Zoho CRM
Is there any way to sync the Bills in Zoho Books in Zoho CRM
Auto CheckOut Based On Shift.
This Deluge script runs on a scheduled basis to automatically set the 'Actual_Check_Out' time for employees who haven't manually checked out. If the current time is past their scheduled 'Shift_End_Time', the script updates the check-out time to match
ERROR: Product type cannot be changed for Items having transactions.
I have mistakenly added a product type as goods for an item that was a digital service. Now when HSN/SAC became mandatory, this brought my attention to this error I did. So I tried changing the product type but it displayed this error message Product
Boost your CRM accuracy with smart Data Enrichment
Hello all! In this post let's look at data enrichment from a holistic perspective to gain more clarity on how you can use it. So, here's a quick recap of what data enrichment is and how you set it up it to enhance your existing module data! What is data
Is it possible to set a region lookup table so that my deal country can lookup this lookup table
Hi there, I would like to be able to add a data lookup table with the following fields: Country, Region. And then in my deal report, i can then lookup this table to fish out the region in my report. This will be important for my sales process to categorise
Test Emails Show Sent "via zcsend.net" in My Gmail Account
I noticed the following info... However, a few email service providers such as Outlook and Gmail will display that the email was sent by zcsend.net (Zoho campaigns’ server) on your behalf instead of just your from email address. In order to prevent this, you can go for either of these options: Do not select the check box meant for DomainKey Signature which is listed under Unverified sender domains. Include our mail servers by advanced authentication method such as SPF/ Sender ID and DomainKey/ DKIM.
'UnAuthenticated Connection: zbooks_connection'
I have a zoho connection in Zoho Books, the link name es zbooks_connection, but I like to validate if exist, by example if I use this line in my code: response=zoho.books.getTemplates("", "","zbooks_connection"); But I don't have the connection I like
Calling the new 'Custom API' feature from within a Custom Widget
From what I've learned it is not possible to call an endpoint from the new "Custom API" feature within a Creator Widget. The SDK's doesn't support it yet, when calling it natively you end up with CORS issues or at least I couldn't get it working even
Cannot post to Instagram. I get the error: Insufficient permission to publish on this page. Check with your page Admin to update permissions.
We had another admin that left the company. Since he left, we get this error when posting to Instagram.
Zoho desk desktop application
does zoho desk has a destop applicaion?
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.
Create an article template
I have a question concern the Knolwedge Database from Zoho Desk. There is any possibility to create an article template ? Exemple of what I research : TODAY : I want to create a lot af articles with the same baseline > I create one article > I copy/paste
Change of Blog Author
Hi, I am creating the blog post on behalf of my colleague. When I publish the post, it is showing my name as author of the post which is not intended and needs to be changed to my colleague's name. How can I change the name of the author in the blogs?? Thanks, Ramanan
Zoho FSM API Delete Record
Hi FSM Team, It would be great if you could delete a record via API. Thank you,
Instant Messaging Update | Now migrate your WhatsApp Business phonenumber from another BSP to Zoho Desk | Dec'23
Hi All, Everything seems to move at lightning speed these days, and time is certainly flying by for the IM team. But we are delighted at how much ground we covered this year. 🚀 For one, we enabled WhatsApp business phone number migration so that you
Upload ticket attachments via Drag-&-Drop
Hello, if you want to upload a file to the ticket attachment you need to click the button and use the file browser to select and upload the desired file. In many cases, it would be much more efficient if you could simply drag the file to the browser window...
Can we disable add to cart in Zoho Commerce?
Hello, Our sales happen on the phone. During the call the customer is directed to our website to inspect the products together with the sales rep. So we need a way to present our inventory. I figured Zoho Commerce is a good fit for this use case. However
Introducing WhatsApp integration in Bigin
Greetings! In today's business landscape, messaging apps play a significant role in customer operations. Customers can engage with businesses, seek support, ask questions, receive personalized recommendations, read reviews, and even make purchases—all
Zoho One account closure vs deactivation
I wonder what are the best practices and guidelines around deactivating vs deleting Zoho accounts in organisations? Any practical considerations?
Global Search placement in the new UI
Having a hard time with the global search placement in the UI redesign. Surely I can't be the only one. Previously global search placement was perfect. A bar at the top/center of the page. Exactly where you would expect it to be. Since the new UI has
Schedule Zoho CRM reports only on Business Days
Hello, Is it possible to schedule reports only on business days ? We currently get daily sales reports on weekend which has no value since the sales team doesn't work on weekends. Thanks
How to install Widget in inventory module
Hi, I am trying to install a app into Sales Order Module related list, however there is no button allow me to do that. May I ask how to install widget to inventory module related list?
How to track a contact or customer's past product purchases in Bigin Premiere?
Hello there. I am the sole user of Bigin for a small company (chess club), and would like to track current and past purchases made by a contact (player) or company (family which includes the player). Players may register for multiple tournaments, take
LENTITUD EN RECIBIR MAIL
Buenas tardes, Estamos experimentando lentitud en la recepción de correos electrónicos.
Items should display under specific warehouse
I have configured the multi warehouse but it show all the items under all warehouse which is not correct according to our business logic, so i want that items should only display under that specific warehouse not under all the warehouses not even with zero quantity. Some items should be common but not all so is there any option for that purpose so i can specific the items to its warehouse. Regards
Partial refunds
I am trying to process refund for a one item invoice, however the refund is partial: i am getting this error while creating credit note, can anyone share some wisdom about this
Best practice importing items and matching assemblies
Hi, I was wondering what would be the best practice to import items and composite items (assemblies) From my backup, what should I import first? The items or the composite items? I am on Zoho one, using inventory and books. Kind regards, Sabine
Bulk Fill In & Edit PO/Bill/SO/Invoice
Hello, I am adding stock in bulk on a PO, the system is automatically populating the Rate (price) and Tax from the item data. Problem is that the bill rate is different from the rate on the item data, so I have to manually erase each and enter the price.
Next Page