Hello Biginners!
In our previous forum post, we explored creating connections - specifically,
custom service connections in the Bigin Developer Console. In this post, we'll focus on another feature that can be used in every topping: install actions.
We'll look at what install actions are and when to use them, and then we'll walk through a real-world example where users are notified whenever a topping is installed or uninstalled.
What are install actions?
Install actions are important features of a topping that let you execute custom logic during installation and uninstallation events.
Instead of treating installation and uninstallation as silent background events, the Bigin Developer Console allows you to run your own logic the moment a user installs your topping, updates it, or decides to uninstall it. This logic can be implemented as Deluge functions that are executed automatically based on the installation action.
Primarily, install actions are executed in the following scenarios:
- On Installation: This action is triggered when the topping is installed for the first time or when the topping is upgraded. (A topping upgrade refers to a new version of the topping being installed by the organization user.) In both cases, the On Installation action runs to perform the required logic.
- On Uninstallation: This action is triggered when the topping is uninstalled or removed from an organization.
Let's look at each of these in detail.
On Installation
The On Installation action is triggered immediately after a topping is successfully installed or updated in a Bigin organization. Conceptually, this is the topping's first run and the right place to perform one-time setup tasks that you don't want users to handle manually.
Note: You can write only one On Installation script per topping. This script is executed only during two key events of the topping: the topping being installed for the first time and an updated version of the topping being installed after publishing changes.
This means the On Installation script is not executed repeatedly. It runs only when the topping is installed or updated, ensuring that setup logic is executed only when it's actually required.
To create an On Installation script, access the Bigin Developer Console, navigate to the Install Actions section in the left panel, and choose Toppings.
You'll be redirected to the Deluge editor where you can write the script for the On Installation action.
In the right panel of the Deluge editor, you'll be able to find the installParamMap which contains important contextual details such as the organizationId, installerId, previousVersion, and other details that are provided by the install action script itself. These keys can be used within your script to perform custom logic based on the installation context.
On Uninstallation
The uninstallation process of a topping will be handled by the On Uninstallation action. This function runs when a topping is removed from an organization.
To create an On Uninstallation script, navigate to Install Actions in the left panel, choose Toppings, and write the script in the On Uninstallation section of the Deluge editor.
In the On Uninstallation action, the installParamMap provides the keys organizationId and installerId. These values indicate which organization the topping is being removed from and which user initiated the uninstallation.
Now that we've explored how both of the install actions work, let's move on to creating a topping using these actions in a real-world scenario.
Let's create a topping with install actions
To understand how install actions work in a real-world scenario, we’ll build a Compliance Notification Topping.
The purpose of the topping is to keep organization administrators of the Bigin account informed about the lifecycle of the topping—specifically when it becomes active and when it's removed from their Bigin account.
In many business environments, it's important for admins to be aware of compliance-related changes and system-level additions. Using install actions in the topping ensures that such notifications are handled automatically, without requiring any manual effort from the user.
To achieve this functionality, we'll rely on both of the install actions:
- When a user installs the topping, the On Installation action is triggered, through which an email notification is sent to all active admin users in the organization, informing them that the Compliance Notification Topping has been successfully enabled. Along with this, a compliance checklist document stored in Zoho WorkDrive is also attached to the email.
- When the topping is uninstalled, the On Uninstallation action is triggered, sending an email notification to all active admin users in the organization to inform them that the Compliance Notification Topping has been successfully disabled. A compliance checklist document stored in WorkDrive is also attached to the email.
Let's learn how to do this.
Setting up the topping
First, create a topping in the Bigin Developer Center. For detailed instructions on creating a topping, refer to this post on
how to create a topping.
After creating a topping and accessing it in the Bigin Developer Console, the next step is to create the required service connections.
A connection for Bigin will be used to fetch admin users from the organization into the topping. In this connection we'll use the scope ZohoBigin.org.ALL, as we need to retrieve the org details of the Bigin account where the topping is installed.
Next, we need a WorkDrive connection because we need to download the compliance checklist file stored in WorkDrive and attach it to the notification email. For the WorkDrive connection, we'll be using the scopes WorkDrive.files.READ and ZohoFiles.files.READ.
For a detailed explanation of creating the default connections, refer to
this post.
Once the connections are created, we can write the install action scripts.
Implementing the scripts
When the topping is installed, we need to send an email to all the active admin users with the installation details and the WorkDrive checklist as an attachment.
To begin, navigate to the Install Actions section in the left panel and select Toppings. Under the On Installation tab, we’ll write the Deluge script that needs to be executed when the user installs the extension.
Writing the On Installation script
In our topping, the On Installation script performs the following actions:
- Fetches all the active admin users in the organization
- Downloads the checklist file from WorkDrive
- Sends an email notification to the admin users with the installation details and the checklist file.
- topping_name = "Compliance Notification Topping";
- // 1) Fetch admin users
- resp = invokeurl
- [
- url :"https://www.bigin.com/developer/docs/apis/v2/get-users.html"
- type :GET
- connection:"biginplus__biginnewconnection"
- ];
- // 2) recipient list
- stakeholders = List();
- usersList = resp.get("users");
- if(usersList != null)
- {
- for each user in usersList
- {
- email = user.get("email");
- status = user.get("status");
- if(email != null && (status == null || status.toLowerCase() == "active"))
- {
- stakeholders.add(email);
- }
- }
- }
- // 3) Download WorkDrive file via Download API
- header = Map();
- header.put("Accept","application/vnd.api+json");
- resource_id = "khw4zbab917b7f4774260a06636089ef0074f";
- fileResp = invokeurl
- [
- url :"https://download.zoho.com/v1/workdrive/download/" + resource_id
- type :GET
- headers:header
- connection:"biginplus__zohoworkdriveconnection"
- ];
- // 4) constructing email
- org_id = installParamMap.get("organizationId");
- installer_id = installParamMap.get("installerId");
- current_time = zoho.currenttime;
- subject = "Bigin Topping Enabled: " + topping_name;
- message = "";
- message = message + "<b>" + topping_name + "</b> was <b>Installed</b>.<br/><br/>";
- message = message + "<b>Organization ID:</b> " + org_id + "<br/>";
- message = message + "<b>Installed by (User ID):</b> " + installer_id + "<br/>";
- message = message + "<b>Time:</b> " + current_time + "<br/><br/>";
- message = message + "<b>Business impact:</b> This topping is now active for the organization.<br/>";
- //sending the email
- if(!stakeholders.isEmpty())
- {
- sendmail
- [
- from :zoho.adminuserid
- to :stakeholders
- subject :subject
- message :message
- Attachments :file:fileResp
- ]
- }
Writing the On Uninstallation script
When a user decides to remove the topping, we'll send an email notification to ensure the admins stay informed.
- topping_name = "Compliance Notification Topping";
- // Fetch admin users
- resp = invokeurl
- [
- url :"https://www.zohoapis.com/bigin/v2/users?type=AdminUsers"
- type :GET
- connection:"biginplus__biginnewconnection"
- ];
- stakeholders = List();
- usersList = resp.get("users");
- if(usersList != null)
- {
- for each user in usersList
- {
- email = user.get("email");
- status = user.get("status");
- if(email != null && (status == null || status.toLowerCase() == "active"))
- {
- stakeholders.add(email);
- }
- }
- }
- org_id = installParamMap.get("organizationId");
- uninstaller_id = installParamMap.get("installerId");
- current_time = zoho.currenttime;
- subject = "Bigin Topping Disabled: " + topping_name;
- message = "";
- message = message + "<b>" + topping_name + "</b> was <b>Uninstalled</b>.<br/><br/>";
- message = message + "<b>Organization ID:</b> " + org_id + "<br/>";
- message = message + "<b>Uninstalled by (User ID):</b> " + uninstaller_id + "<br/>";
- message = message + "<b>Time:</b> " + current_time + "<br/><br/>";
- message = message + "<b>Business impact:</b> This topping is no longer available from now on.<br/>";
- if(!stakeholders.isEmpty())
- {
- //Send email
- sendmail
- [
- from :zoho.adminuserid
- to :stakeholders
- subject :subject
- message :message
- ]
Once we've configured both the On Installation and On Uninstallation scripts, we can
test and publish the topping. When the user installs the topping, the install actions will be triggered automatically based on the topping's lifecycle events.
Let's walk through what happens at runtime.
What happens when the topping is installed or uninstalled
Upon installation, the user receives an email notification along with the topping checklist attachment as shown below.
When the topping is uninstalled, the user receives an email indicating that the topping has been disabled as shown below:
In this post, we've explored how install actions and uninstall actions give us control over the toppings. We'll cover more features of the Bigin Developer Console in our upcoming posts.
Stay tuned!
Recent Topics
[IDEA] Bring Layout - Conditional Rules and Client Scripts to Zoho Books
The problem We run Zoho Books with two e-invoicing integrations: myData (Greek tax authority, AADE) and PEPPOL (EU e-invoicing). Between the two, our Invoice form carries a large number of custom fields — document type codes, VAT exemption categories,
Don't send customer email when creating a ticket
Hi Is there an easy way to stop the system sending an email to the customer when we manually create ticket.
Zoho CRM Layout Rules: Nine New Actions, Profile-Based Execution, and Interactive Preview
Hello everyone, Availability: This feature is now available for customers in the JP and SA DCs. It is planned to be released for other customers in soon. We’re excited to announce powerful new enhancements to Layout Rules in Zoho CRM - a feature built
Zia Agents: quando a Inteligência Artificial do Zoho para de sugerir e passa a agir
Decidi criar um artigo com um panorama prático sobre o que são os agentes do Zia Agents, como funcionam de verdade dentro do ecossistema Zoho e o que aprendi implementando um agente de qualificação de leads em produção. De onde veio a idéia do artigo?
Zoho Desk Android app update: Manage Custom Module records, View Record Counts for Sub Modules.
Hello everyone! We have introduced an option to add, edit and delete Custom Module records within the Zoho Desk Android app. Now, you can also view the record counts for sub modules (Time Entry, Attachments, Activities) in the ticket details screen. Please
Automating CRM backup storage?
Hi there, We've recently set up automatic backups for our Zoho CRM account. We were hoping that the backup functionality would not require any manual work on our end, but it seems that we are always required to download the backups ourselves, store them,
How to preserve Lead Creation Date, UTM parameters, and custom fields during Lead Conversion?
We are optimizing our MQL journey. When converting leads to contacts/deals, we need to ensure that the original system Lead Creation Date and UTM tracking parameters (Source, Medium, Campaign) are not lost or archived, as our teams require them for accurate
Problem with currency field in Zoho CRM
Hi Guys Zoho Books has a feature in currency fields that automatically converts decimal numbers with commas ( , ) to period format ( . ) when pasting them. For example: R$ 2,50 --> R$ 2.50 Is this behavior available in Zoho CRM? I couldn't find any configuration
Sub-projects
Hi, Can we create a sub-project. Client1 1. project1 1.1 sub-project1 1.2 sub-project2 2. project2 2.1 sub-project1 2.2 sub-project2
Using Items from Books as product/plan Add-Ons
Hey, It'll be great to use Items from Books as product/plan Add-Ons. Ed
Inspection Table
Hello Latha, We created a job sheet that includes the new table (Inspection Table) which was introduced recently. However, agents are not able to see the rows in the inspection table. Could you please investigate this issue and get back to us? Please
Custom Button Creation from Layout Editor in Zoho CRM
Hello All, Buttons in Zoho CRM act as triggers that perform a specific action when clicked. Zoho CRM includes a set of system buttons that help you carry out common actions with a single click. Beyond these, your organization can create custom buttons
Automatic login options for customer portal
The customer portal is nice for zoho subscriptions, but there are no options to automatically login to it, so if a user is logged into their account inside of my product, I can't create a link that will let them login to their dashboard. Could we have
Square Payments for Subscriptions
I'd love to be able to use Square Payments for Subscriptions with my customers. I already use it for Zoho Books Please have this considered. It would really help my business
"code":3001 ["Failed to update data."]
I would like to seek your expertise - I might be wrong on my approach also.. I highly appreciate your advice. 1 problem remains is when a new row was added on the existing one [from another form that trigger upon Successful form submission ], it gets
Add a MATRIX field to the forms creation
Same as Zoho forms, we need a Matrix field in Zoho Creator forms, is very usefull
Discount Per Line Item
We are a phone company. Sometimes, when we sign up customers, our sales team would like to provide recurring discounts on certain addons. Presently, we have no way of doing this so when we provide discounts, we are forced to simply reduce the price of
Introducing template migration: Move your Docusign templates to Zoho Sign in minutes
Moving to a new e-signature tool usually comes with a catch: recreating every template from scratch. For teams that rely on dozens of carefully built templates—each with the right recipient roles, fields, and placements—that manual rework is often the
Error Code 2945 , PATTERN_NOT_MATCHED
Hi, I am trying out Zoho Creator API. However, I always get the following <response> <code>2945</code> <message>PATTERN_NOT_MATCHED</message> </response> However, error code list error as Invalid Ticket. I do not know what is wrong.
Create a list of products and automatically associate them with new deals
Hello, I have a store with WooCommerce, and I want to import orders into my pipeline. But I haven't found a way to import the order with the associated products. So, do I have to create the deals and then manually add the products to them? That's double
List of Mail Merge Templates via Deluge
Hello, Is it possible to get a list of the mail merge templates I've created in CRM within a custom function? I want to retrieve them and put them in a dropdown list but all I get is a scopes error! Can anyone see where I'm going wrong? Is this even possible?
Zoho Advanced Analytics with Team Module support – Now includes teams, notes, and fields in reports & insights
Greetings all, Advanced Analytics is now accessible via Zoho CRM's team modules, which means you can add team modules—plus their notes and fields—for inclusion in reports, insights, and other analytical functions. Alongside the standard and custom modules
WhatsApp conversations are no longer linked to existing threads after reconnecting the channel
Hi everyone, We have an existing WhatsApp channel in Zoho Desk. We temporarily disabled it, renamed it, and then re-enabled it while reassigning our bot. Since then, all previous WhatsApp conversations are still visible in the history, but we can no longer
Zoho Assist Feature Update: July 2026
Elevate to Admin Mode for iOS devices Technicians can now elevate an active session to Admin Mode directly from the iOS app. This feature lets the technician switch the remote computer from a standard user account to an admin account by entering credentials
Bulk deleting Zoho CRM records using Deluge, COQL and CRM API
Hello everyone, During CRM implementations, data cleanup is a common task, especially after testing, migrations, imports, or integration development. I created a reusable Deluge function that performs bulk deletion using the Zoho CRM API. The approach:
Can't connect CalDAV
### Issue Summary Can't connect to my calendars using CalDAV and the URL `https://calendar.zoho.eu` ### Steps to Reproduce 1. Tried to connect on multiple devices, on multiple OS's (Android DAVx, Thunderbird, Gnome Calendar, Apple Caneldar). 2. When I
CRM x WorkDrive: We're rolling out the WorkDrive-powered file storage experience for existing users
Release plan: Gradual rollout to customers without file storage add-ons, in this order: 1. Standalone CRM 2. CRM Plus and Zoho One DCs: All | Editions: All Available now for: - Standalone CRM accounts in Free and Standard editions without file storage
Guide customers to the right booking page with routing forms
Greetings from the Zoho Bookings team! We're excited to introduce Routing Forms in Zoho Bookings. Routing forms let you collect information from customers before they schedule an appointment and automatically direct them to the most appropriate booking
Cannot receive emails
Sent one days ago still no feedbacks, cannot call customer services number
Email Password Reset - Vishal & shaik Vali Babu
Hi Team, The below-mentioned employees are unable to log in to their Gmail due to a password error. Kindly look into this on priority vishal.r@jumbotail.com shaik.babu@jumbotail.com
Live Chat
Is live chat inthe website in zoho desk?
Application-Level Save copy of sent emails
It would be really helpful to be able to turn on/off the Save copy of sent emails at a per application level, so some applications can save in the sent folder and others don't.
DKIM 2048 too long
I'm trying to add a DKIM TXT record for my domain in Zoho Mail but my DNS provider (Shopify) has a character limit on TXT record values. The 2048-bit DKIM key is too long to enter. Can anyone advise how to generate a shorter 1024-bit key instead, or another
Using IMAP configuration for shared email inboxes
Our customer service team utilizes shared email boxes to allow multiple people to view and handle incoming customer requests. For example, the customer sends an email to info@xxxx.com and multiple people can view it and handle the request. How can I configure
Technical personnel are required to assist in synchronizing license quotas and solving the problem of being unable to add users.
We are a cross-border jewelry e-commerce company and currently use Zoho Mail Lite corporate email service. I have paid to purchase 1 Mail Lite annual user license (order number 133627785, payment time 2026-06-29). It has been more than 12 hours since
non ricevo ne invio mail
non riesco ad inviare né ricevere posta. URGENTISSIMO
重要詢問:電子報回信沒有收到
我使用zoho作為寄電子報的mail, 但是我發現從電子報回信,完全都沒有收到!!!(包含垃圾郵件) kit那邊設定確定都沒有問題,請問這邊是哪裡設定有問題導致沒收到呢? (我確認過mail是一樣的)
Mail Id’s backup
Dear Zoho Team, Kindly share the backup of my all mail id’s associated with Zoho account. Thanks, Saurabh Sharma +91 8851066915
Feature Request - Option To Hide Default System Fields on Items
Hi Zoho Inventory Team, As far as I know it is not possible to hid some of the defult system fields on Items, such as UPC, MPN, EAN, ISBN. A good use case is that in many cases ISBN is not relevant and it would be an improved user experience if we could
Important update on our transition to the new video platform framework
As part of our ongoing platform changes, users in select regions, including the United States and other supported data center locations, have been migrated to our new video platform framework. Due to this migration, some participants may notice changes
Next Page