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 enabled. 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
We know the company but not the contact
We are fairly new to Zoho, part of our marketing stack is we use products like lead feeder to identify which companies are visiting our site. We are able to match this data to salesiq but cannot find a way to add a company name to the salesiq visitor
Customize Calendar view in Teamspaces Settings
Right now every customization that happens inside of the calendar view inside of CRM is only visible for the specific user. We want to be able to set up calendar views as an admin for specific roles. I would suggest to do that inside of the settings of
How to filter subform report based upon main form report in dashboard
Hi Team, I am creating a dashboard in Zoho Analytics. I want to have a main form report and below I want to show subform report of main form. If I filter the main form with date then I want to show subform records based upon main form. how can I achieve
using the Client script I want to Hide Show the Fields
if Related to service means some of the field like service no want to shoe and hide Amc no , purchase no how i achive this let issu = ZDK.Page.getField('Issue_Related_To').getValue(); if (issu == 'Service') { var field_obj = ZDK.Page.getField('Warranty_Cases');
Ask the Expert – Zoho One Admin Track : une session dédiée aux administrateurs Zoho One
Vous administrez Zoho One et vous vous posez des questions sur la configuration, la gestion des utilisateurs, la sécurité ou encore l’optimisation de votre back-office ? Bonne nouvelle : une session Ask the Expert – Zoho One Admin Track arrive bientôt,
Write-Off multiple invoices and tax calculation
Good evening, I have many invoices which are long overdue and I do not expect them to be paid. I believe I should write them off. I did some tests and I have some questions: - I cannot find a way to write off several invoices together. How can I do that,
Kaizen #210 - Answering your Questions | Event Management System using ZDK CLI
Hello Everyone, Welcome back to yet another post in the Kaizen Series! As you already may know, for the Kaizen #200 milestone, we asked for your feedback and many of you suggested topics for us to discuss. We have been writing on these topics over the
vendors / customers with 2 different address and gst no
Why can't we have option for more than one address and depending on the state option for more than 1 GST no. ? We have customers / vendors PAN india with different addresses and GST no. for different states.
Recurring Automated Reminders
Hi, The reminders feature in Zoho Books is a really helpful feature to automate reminders for invoices. However, currently we can set reminders based on number of days before/after the invoice date. It would be really helpful if a recurring reminder feature
Fail to send Email by deluge
Hi, today I gonna update some email include details in deluge, while this msg pops up and restrict me to save but my rules has run for one year. can you tell me how to use one of our admin account or super admin account to send the email? I tried to update
Transitions do not update fields until the record moves to next stage
We have a blueprint where a couple of stages have multiple transitions. If only some of the transitions are completed, but not all, Zoho does not update any of the fields impacted by the completed transitions. Is there any way Zoho can udate the fields
Zoho CRM - Kiosk Studio : Use action responses across your kiosks with sequential actions
Hello Everyone, Imagine building a kiosk that gives you full control over how actions are executed in later screens in that same kiosk. What if you could use data from a previous action later in that kiosk—with no interruptions or data gaps? This is exactly
Get Cliq Meetings in my O365 calendar
Hi, we are currently evaluating to replace the Teams Messaging and Meetings with Cliq. We currently still have all our email and calendars in O365. What i want to achieve is, to create a (ZOHO) meeting from Cliq and have this meeting added to my Outlook/O365
Custom Button to convert a Deal to a Custom Module?
Hello Community I am in process of building out a custom CRM for my team and part of this is looking at building out a Custom Button or function of some sort where when a Deal is marked Closed Won the system will allow for a "Convert to Job" option to
Power up your Kiosk Studio with Real-Time Data Capture, Client Scripts & More!
Hello Everyone, We’re thrilled to announce a powerful set of enhancements to Kiosk Studio in Zoho CRM. These new updates give you more flexibility, faster record handling, and real-time data capture, making your Kiosk flows smarter and more efficient
Change eMail Template for Event-Invitations
Hello ZOHO-CRM Team How I can change the eMail Template for Event-Invitations? I work with the German Version of the Free Version. I know how I can modify eMail alerts or Signature Templates, but where I can other eMails modify you send out? Thank you
Workdrive Oauth2 Token Isn't Refreshing
I have set up oauth for a bunch of zoho apis and have never had a problem with oauth. With workdrive i am using the exact same template i usually use for the other zoho apps and it is not working. All requests will work for the first hour then stops so
Migrate Your Notes from OneNote to Zoho Notebook Today
Greetings Notebook Users, We’re excited to introduce a powerful new feature that lets you migrate your notes from Microsoft OneNote to Zoho Notebook—making your transition faster and more seamless than ever. ✨ What’s New One-click migration: Easily import
How can I import OLM to Yandex Mail easily?
For migrating Mac Outlook OLM data to Yandex Mail efficiently, the Aryson OLM Converter is a reliable professional tool that ensures complete data integrity throughout the process. Unlike manual methods, which can risk inconsistent formatting or missing
Introducing Radio Buttons and Numeric Range Sliders in Zoho CRM
Release update: Currently out for CN, JP, AU and CA DCs (Free and standard editions). For other DCs, this will be released by mid-March. Hello everyone, We are pleased to share with you that Zoho CRM's Layout Editor now includes two new field formats—
Is it possible to setup bin locations WITHOUT mandating batch tracking?
Hi fellow zoho users, I'm wondering if anyone else has a similar issue to me? I only have some products batch tracked (items with shelf life expiry dates) but I am trying to setup bin locations for my entire inventory so we can do stock counting easier.
Implementing Inventory Process
I am just starting to create an inventory system through Zoho for a nonprofit. We receive in-kind donations of items for kids, and utilize them in 2 or 3 different programs. Then families come in and take the items. I'm thinking of this structure: Our
Best way to start zoho inventory with bulk openning stock
We are already using zoho book since long time for cars trading company. Now to streamline more, would like to import the excel data of closing stock of inventory to zoho inventory and to start on. Since we need to track each VIN (unique vehicle id number)
Service Reports.
Hello Team, I have a requirement to create multiple service reports for a single AP. That means, in one AP I have 5 service line items, and all line items are linked to assets. Once I complete the AP, I want to generate 5 individual service reports, one
Blueprint enhancements - Parallel and multiple transitions, and more
Last modified on Sep 4, 2023: All Zoho CRM users can now access these enhancements. Initially, these features were available only on an early access basis and by request. However, as of August 2, 2023, they have been made available to all users in all
Item Bulk Edit - Allow for Reorder Level
We're implementing a process for using the Reorder Level field for Items, and I have to go through and add this value to a huge chunk of our Items. It's driving me bonkers that I have to do this individually through the UI rather than bulk updating. It
Zoho CRM || Unable to Bulk Assignment of Territories for Contacts
Dear Zoho CRM Support Team, I hope this email finds you well. We recently performed a bulk upload of Contacts into Zoho CRM using the official sample Excel template downloaded from the CRM. The upload itself was completed successfully; however, we encountered
What's New in Zoho Inventory | August – October 2025
Hello customers, The last quarter has been incredibly productive! We've released a powerful slate of new features and enhancements in Zoho Inventory designed to give you better control, greater efficiency, and expanded functionality across your inventory
Disable Zoho Inventory Tracking / Delink Zoho Books & Inventory
We have integrated zoho inventory with zoho books? Now after a long time, we want to disable inventory tracking and delink these 2 modules. Zoho says we cant do it. Anybody else going thru the same ? Any possibility at all? Why does zoho not allow to
Tracking Non-Inventory Items
We have several business locations and currently use zoho inventory to track retail items (sales and purchase orders). We were hoping to use zoho inventory to track our non-inventory items as well (toilet paper, paper towels, etc). I understand that we
Price Managment
I have been in discussions with Zoho for some time and not getting what I need. Maybe someone can help explain the logic behind this for me as I fail to understand. When creating an item, you input a sales rate and purchase rate. These rates are just
Set Warehouse based on Vendor
Greetings. I would like to set automaticaly the Warehouse based on the Vendor. Context: I am working on an adaptation of a Purchase Order to be used as a Quotation. I have defined that when a user has to raise a quote the Vendor will be "PROCUREMENT" I would like to set the Warehouse to a predefined value when "PROCUREMENT" is set as Vendor. I have tried to do with the Automation feature using the Field Update option, but Warehouse does not is listed as a field. Can you help? Thanks in advance.
How do I save audio files to my PC that I record into Zoho Notebook from my phone?
I was thinking of using Zoho Notebook as a way to store composition ideas, as well as for other things if it can handle this. For this to be useful for me though, I need to be able to have an easy way to download those audio files to my PC, either individually
Search mails in shared mailbox
Hi everyone, is there a way to search mails in shared mailbox's? Search in streams or mail doesn't return anything from mails in shared mailboxes. Thanks! Rafal
Zoho Landing Page "Something went wrong" Error
Hello, Every time I try to create a new landing page, I receive a "Something went wrong" error with no explanation. I cannot create any new pages, which means we cannot use this application. I did create one landing page successfully over a month ago,
Writing SQL Queries - After Comma Auto Suggesting Column
When writing SQL Queries, does anyone else get super annoyed that after you type a comma and try to return to a new line it is automatically suggest a new column, so hitting return just inputs this suggested column instead of going to a new line? Anyone
Sync your Products Module for better context.
In customer support, context is everything. The integration between Zoho Desk and Zoho CRM helps your sales and support teams function as one, delivering better customer experiences. With the latest update to this integration, you can now sync the Product module in your Zoho CRM with your Zoho Desk portal. This feature enables products from Zoho CRM to reflect in the "product" field in Zoho Desk. This can save your support team valuable time and effort. Some things to note when syncing the two:
Where is the desktop app for Zoho Projects???
As a project manager, I need a desktop app for the projects I manage. Yes, there's the web app, which is AWESOME for cross browser and platform compatibility... but I need a real desktop app for Projects that allow me to enter offline information where
CRM verify details pop-up
Was there a UI change recently that involves the Verify Details pop-up when changing the Stage of a Deal to certain things? I can't for the life of me find a workflow or function, blueprint, validation rule, layout rule ect that would randomly make it
openUrl in blueprints
My customer wants to open a URL at the end of a blueprint transition. Seems this isn't possible right now but it would be very useful. In this thread, https://help.zoho.com/portal/en/community/topic/openurl-not-working the Zoho agent said that it's logically
Next Page