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
Importing into the 'file upload' field
Can you import attachments into the file upload field. I would expect it to work the same way as attachments do, But can't seem to get it to work. Moderation Update: The option to import into File Upload and Image Upload fields has been supported. Read
Layout Rules Don't Apply To Blueprints
Hi Zoho the conditional layout rules for fields and making fields required don't work well with with Blueprints if those same fields are called DURING a Blueprint. Example. I have field A that is used in layout rule. If value of field A is "1" it is supposed to show and make required field B. If the value to field A is "2" it is supposed to show and make required field C. Now I have a Blueprint that says when last stage moves to "Closed," during the transition, the agent must fill out field A. Now
Why is the ability Customize Calls module so limited?
Why can't I add additional sections? why can't I add other field types than the very limited subset that zoho allows? Why can I only add fields to the outbound/inbound call sections and not to the Call Information section?
Zoho Desk blank screen
opened a ticket from my email, zoho desk comes up blank, nothing loads. our receptionist also gets the same thing under her login on her computer. our sales rep also gets same thing on zoho desk at his home on a different computer. I tried clearing cache/history/cookies,
Optimum CRM setup for new B2B business
Can some advise the most common way to setup Zoho CRM to handle sales for a B2B company? Specifically in how to handle inbound/outbound emails. I have spent hours researching online and can't seem to find an accepted approach, or even a tutorial. I have
filter on sheets mobile (iOS, iPadOS) does not work
I have this issue on every spreadsheet, whether imported or created natively in Zoho Sheets. I can use on desktop without issue: desktop screenshot on iOS the filter dropdowns are not there and there is no way to add them mobile iPadOS looks the same
Canva Integration
Hello! As many marketing departments are streamlining their teams, many have begun utilizing Canva for all design mockups and approvals prior to its integration into Marketing automation software. While Zoho Social has this integration already accomplished,
Can't edit Segments
Happening with 2 different Zoho One environments, in different browsers. Please fix.
Error 554 Email Outgoing Error
Our email address (info@tvbhouston) was recently migrated to a new domain host on WordPress, and our SSL certificate is still pending. We would like to continue using your service, but we are currently unable to send emails. Could you please re-enable
Transfer ownership of files and folders in My Folders
People work together as a team to achieve organizational goals and objectives. In an organization, there may be situations when someone leaves unexpectedly or is no longer available. This can put their team in a difficult position, especially if there
Consumer Financing
Does Zoho currently have a payment gateway (such as Stripe, Square, etc) which offers financing for customers? So, let's say the estimate we give the customer is greater than what they can afford at the time, but we can sell the service now, letting them
Subform edits don't appear in parent record timeline?
Is it possible to have subform edits (like add row/delete row) appear in the Timeline for parent records? A user can edit a record, only edit the subform, and it doesn't appear in the timeline. Is there a workaround or way that we can show when a user
Zoho CRM - Option to create Follow-Up Task
When completing a Zoho CRM Task, it would be very helpful if there was an option to "Complete and Create Follow-Up Task" in the pop-up which appears. It could clone the task you are closing and then show it on the screen in edit mode, all the user would
Deluge function to copy parent record file upload field to child record file upload field
I'm stuck trying to write a deluge function that is triggered via automation in child record "Appointments," confirms if a file is in file upload "Report" field of parent "Contacts" record via Contacts lookup field "Contact_Name". If no file is in parent
Make panel configuration interface wider
Hi there, The same way you changed the custom function editor's interface wider, it would be nice to be able to edit panels in pages using the full width of the screen rather than the currently max-width: 1368px. Is there a reason for having the configuration panel not taking the full width? Its impossible at this width to edit panels that have a lot of elements. Please change it to 100% so we can better edit the layouts. Thanks! B.
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
How to hide or archive a blog post temporarily in Zoho commerce website builder?
I would like to temporarily hide or archive a blog post in zoho commerce website builder so that it doesnt appear on my website till I enable it again. I tried to look for this option but could not find it. It only allows me to permanently delete a blog
How to mix different types of inputs (such as dropdown list and textbox)
Hi, I'm creating a form called "Room Reservations" for a company. I created a "table" using "Matrix Choice". I created "Room 1", "Room 2" and "Room 3" with the "Questions". I would then like to create two columns with the "Answers", one called "Department"
How to Convert NSF to PST Format Effortlessly? - SYSessential
It is highly recommended to obtain the error-free solution of the SYSessential NSF to PST converter to convert NSF files from Lotus Notes. Using this professional software, it becomes easier to convert all NSF database items, including emails, journals,
Zoho Commerce - Poor Features Set for Blogging
Hi Zoho Commerce team, I'm sure you will have noticed that I have been asking many questions about the Blogs feature in Commerce. I thought that it would be useful if I share my feedback in a constructive way, to highlight the areas which I feel need
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
Massive Zoho Books failure
We have not received any communication or notification from Zoho, but we have detected that Zoho Books is not working for all our users. We cannot access or use Zoho Books. This is critical. We are trying to contact Zoho on the Spain telephone number,
Does the Customer “Company Name” field appear anywhere in the Zoho Books UI outside of PDFs?
Hi everyone, I’m trying to understand how the Company Name field is actually used in Zoho Books. There is a Company Name field on the customer record, but when viewing transactions like a Sales Order in the normal UI (non-PDF view), that field doesn’t
Email outbox is now available in the sandbox
Hello all! Testing emails without visibility has always been a blind spot in the sandbox. With the new Outbox, that gap is closed. You can now view and verify every email triggered from your sandbox, whether it’s through workflows, approvals, or mass
Looking For Recruit Developer
Hi everyone, I am looking for a Zoho Certified Developer to assist with a development project for MetalXpert. We are building a software system designed to bridge the gap between a candidate mobile app and an employer web portal using Zoho Recruit as
sales IQ issue on website
i integrated the zoho sales IQ code on the website but it is comming in distroted form i am sharing the screenshot below the website is bulit in wix platform
I need to know the IP address of ZOHO CRM.
The link below is the IP address for Analytics, do you have CRM's? IP address for Analytics I would like to know the IP address of ZOHO CRM to allow communication as the API server I am developing is also run from CRM. Moderation Update: The post below
Important Update: Google Ads & YouTube Ads API Migration
To maintain platform performance and align with Google's newest requirements, we are updating the Google Ads and YouTube Ads integrations by migrating from API v19 to the newer v22, before the official deprecation of v19 on February 11, 2026. Reference:
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
Admin asked me for Backend Details when I wanted to verify my ZeptoMail Account
Please provide the backend details where you will be adding the SMTP/API information of ZeptoMail Who knows what this means?
Zoho Desk - Upsert Ticket
Hi Desk Team, It is common to request more information from end-users. Using forms is a great way to ensure all the required information is collected. It would be great if there were an "upsert" option on the Zoho Form -> Zoho Desk integration which would
All new Address Field in Zoho CRM: maintain structured and accurate address inputs
The address field will be available exclusively for IN DC users. We'll keep you updated on the DC-specific rollout soon. It's currently available for all new sign-ups and for existing Zoho CRM orgs which are in the Professional edition. Latest update
Client Side Scripts for Meetings Module
Will zoho please add client side scripting support to the meetings module? Our workflow requires most meeting details have a specific format to work with other software we have. So we rely on a custom function to auto fill certain things. We currently
Introducing Multiple Sandbox Types and Support for Module's Data Population
Register here for the upcoming Focus Group webinar on Multiple Sandbox | Help documentation to learn more about the new enhancements Hello everyone, Sandbox in CRM is a testing environment for users to create and test new configurations like workflow
Creator Offline
We had online access setup and working on our iphones. We have just set it up on an 'Android Tablet' and it is not downloading all the images? We use it to show customers our catalogue. Any ideas. Offline components all setup on both devices
Updated font library: New font styles and custom font options in Zoho Sheet
Zoho Sheet's font library now supports 500+ font styles in 60+ languages! The updated font library is stacked with new font styles, and some of the previously available font styles have been replaced with equivalent options. There are two ways you can
Enable or disable any Field Rule!
Hello Zoho Forms Community, We are excited to announce a powerful new enhancement to Field Rules that gives you greater control and flexibility in managing your form logic! Previously, if you wanted to temporarily deactivate a field rule, you had two
Marketing Tip #20: Increase traffic with strong meta titles and descriptions
Meta titles and descriptions are what people see first on search results before they ever click through to your website. If your pages use generic titles or basic descriptions, you miss the chance to stand out, and search engines may not know which page
Kanban view on Zoho CRM mobile app!
What is Kanban? The name doesn't sound English, right? Yes, Kanban is a Japanese word which means 'Card you can see'. As per the meaning, Kanban in CRM is a type of list view in which the records will be displayed in cards and categorized under the given
Not able to delete a QC nor able to revert or create a cycle of manufacturing for QC failed Jobs
Not able to delete a QC nor able to revert or create a cycle of manufacturing for QC failed Jobs
Next Page