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
Project Change Orders and Additions
We are in the process of migrating from QuickBooks Online to Zoho Books. We have Zoho One and like the ability to sync all of our data across everything. And I like that projects work in a way that's less dumb than QuickBooks. I'm trying to figure out
ZOHO Desk - Description of slave ticket disappeared after Merge
Dear Support, On Zoho Desk the description of a ticket disappeared after merging two ticket. The one which was the slave one completely disappeared. The problem that in this description there was an image which i had only on Desk in that ticket. Could
How do I insert a cross-reference link to a different section within one Knowledge Base article using Zoho Desk?
I would like to insert a link within a Knowledge Base article to a different section of that same article. The section I want to link to is formatted with the Heading 3 style and is displayed within my TOC. However, I do not see any way to add a link
Problem Adding Facebook Account
Hi, I'm new here, I'm having trouble setting up my Facebook account as a social channel. I think the issue is down to how my Facebook is set up, which is pretty confusing. I have a personal Facebook account (let’s called it A) which is my main Facebook
Zoho Desk Teams App is not loading
Hi Zoho Desk support. Need an assistance on the Zoho Desk Teams app. Once I click View Ticket, it isn't showing anything. Kindly refer to attached: ZohoDesk Teams App_View Ticket Error.jpg For our Dashboard, we are still experiencing the same issue. Kindly
Mapping a new Ticket in Zoho Desk to an Account or Deal in Zoho CRM manually
Is there any way for me to map an existing ticket in Zoho desk to an account or Deal within Zoho CRM? Sometimes people use different email to put in a ticket than the one that we have in the CRM, but it's still the same person. We would like to be able
Which WhatsApp API works seamlessly with Zoho CRM?
I’m exploring WhatsApp API solutions that integrate seamlessly with Zoho CRM for customer communication, lead nurturing, and automation. I would love to hear insights from those who have successfully implemented WhatsApp within Zoho CRM. My Requirements:
Allow people to sign a zoho form by using esign or scanned signature
Allow people to sign a zoho form by using esign or scanned signature
Button to Reapply Filters on Sheet(s)
I wrote a macro that I attached to a button to reapply the filters on all my sheets and it says it works, but it doesn't actually do anything. What is wrong with it? Is there another way? Or even make it work for one sheet? Sub UniversalFilterRefresh()
Integrate Multiple ZohoBooks organization with zoho projects
We have successfully connected our Zoho Books with Zoho Projects for synronizing timesheet data. Our Business specialty is, that the staff of the Main company (A) is working on several projects, but the Clients are sometimes contracted and paying to a
Zoho OAuth Connector Deprecation and Its Impact on Zoho Desk
Hello everyone, Zoho believes in continuously refining its integrations to uphold the highest standards of security, reliability, and compliance. As part of this ongoing improvement, the Zoho OAuth default connector will be deprecated for all Zoho services
How do I add todays date to merge field
I don't see any selection of todays date when creating a letter. Surely the date option of printing is standard? John
Tracking Emails sent through Outlook
All of our sales team have their Outlook 365 accounts setup with IMAP integration. We're trying to track their email activity that occurs outside the CRM. I can see the email exchanges between the sales people and the clients in the contact module. But
Whats that
Price?
The same Contact associated to multiple Companies - Deals
Hi, I would like to know if there is an option to associate the same contact with multiple companies (two or more) deals, using the same contact details for all. This is because we have contacts who are linked to different companies or branches of the
Portals-Adjust Column Sizes
I am trying to adjust the column widths in Portals tabs. Columns that don't need to be wide are wide and longer ones are very short. I thought adding more to the digits box in Edit would widen them, but it doesn't. Anyone know how to adjust these?
Add link/button to open approved record from approval list and detail views?
Hi, How do I allow users to click on an approval record and open that submission? For example, userA submits a quotation then userB approves/rejects. They both can see the quotation on "completed task" list & detail views, but there's no way for them
record submitted from creator and invoice is creating in books , but the workflow of books is not tiggering on create of record in books
record submitted from creator and invoice is creating in books , but the workflow of books is not tiggering on create of record in books headermap = Map(); headermap.put("X-ZOHO-Execute-CustomFunction","true"); response_inv = invokeurl [ url :"https://www.zohoapis.com/books/v3/invoices/fromsalesorder?salesorder_id="
Prevent editing of a record after getting approved/rejectedr
Hi, I'd like to block any user from editing a record after it was approved or rejected, how can I do that?
Formula Field/Campo de Fórmula
Hello everyone, I have a purchase requisition form in which each department submits a request, and the request is automatically routed to the person responsible for that department. In this form, I have several fields with the following link names: Quantidade1,
Formatting Problem | Export to Zoho Sheet View
When I export data to Zoho Sheet View, ID columns are automatically formatted as scientific notation. Reformatting them to text changes the actual ID values. For example, 6557000335603071 becomes 6557000335603070. I have attached screenshots showing this
Feature Request - The Ability to Link A Customer with a Vendor
Hi Finance Suite Team, Many businesses buy and sell products from the same companies or individuals. For example, a car sales business may buy a car from a member of the public, and that member of the public may also buy a new car from us. This makes
Long table name (sync from Zoho Creator)
Dears, How can I remove the suffix in parentheses? These tables are synced from Zoho Creator and are treated as system tables, so their names cannot be changed. This issue makes the aggregation formulas look awful.
[Free Webinar] Learning Table Series - Streamlining incident management process with Zoho Creator
Hello everyone, We’re excited to invite you to another edition of the Learning Table Series webinar. As you may already know, we've moved to a purpose-based approach in the Learning Table Series this year. Each session now focuses on how a Zoho Creator
Unattended - Silent
How can I hide the tray icon / pop up window during unattended remote access for silent unattended remote access?
Text snippet
There is a nice feature in Zoho Desk called Text Snippet. It allows you to insert a bit of text anywhere in a reply that you are typing. That would be nice to have that option in Zoho CRM as well when we compose an email. Moderation Update: We agree that
Marketing Tip #18: Make your online store mobile-friendly to improve traffic
Most online shoppers browse on their phones first. If your store is hard to read, slow to load, or tricky to navigate on mobile, they’ll bounce fast. A mobile-friendly store doesn’t just look nice; it improves engagement, reduces drop-offs, and helps
[Need help] Form closed. Please contact your form administrator for further assistance.
https://forms.zohopublic.com/cceinfoifly1/form/CCE2025CCEFocusGroupRegistrationForm2025Fall/formperma/s_8XcLETTbFxZ_TAS4r_W6W5UBl8o5oxEnIX35IBKg4 I checked we didn't exceed the usage limit and form availability is enabled, Please help us enable this form
Zoho People. Updating TabularData
I am trying to update tabular data in the record. I always have the same response. I have checked many times. Section ID is correct. May be something wrong with request structure itself. Can someone help me. Body content type: form urlencoded query params
Automatically CC an address using Zoho CRM Email Templates
Hi all - have searched but can't see a definitive answer. We have built multiple email templates in CRM. Every time we send this we want it to CC a particular address (the same address for every email sent) so that it populates the reply back into our
Unable to Send Different Email Templates for Different Documents in Zoho Sign
Hello Zoho Community, I am facing a limitation with Zoho Sign regarding email notifications sent to customers when a document is sent for signing. Currently, whenever I send any template/document for signing, the email notification that goes to the customer
Reminder needs 0 minute choice
I most use 0 minute reminders. Every other calender service has this choice. If I create an event in my Android calendar with 0 minute reminder it will change to 5 minute. Please ad 0 as a reminder choice, this should be a 5 minute fix. Thanks.
Customer ticket creation via Microsoft Teams
Hi all, I'm looking to see if someone could point me in the right direction. I'd love to make it so my customers/ end users can make tickets, see responses and respond within microsoft teams. As Admin and an Agent i've installed the zoho assist app within
Is there a way to update all the start and end dates of tasks of a project after a calendar change?
Hi! Here's my situation. I've built a complete project planning. All its tasks have start dates and due dates. After completing the planning, I've realized that the project calendar was not the right one. So I changed the project calendar. I now have
How to update task start date when project start date changes?
Hi there, When the start date of a project changes, it's important to update the start dates of the tasks associated with that project to reflect the new timeline. Is there a way to shift the start date of all project tasks when the start date of a project
Issue with Picklist Dropdown Not Opening on Mobile
Hello I am experiencing an issue with picklist values on mobile. While the arrow is visible, the dropdown to scroll through the available values often does not open. This issue occurs sporadically, it has worked occasionally, but it is very rare and quite
using the client script based on the look up filed i wnat to fetch the record details like service number , service rate
based on selected service look up field iwant to fetch the service serial number in the serice form how i achive using client script also how i get the current date in the date field in the on load of the form
Zoho Books/Square integration, using 2 Square 'locations' with new Books 'locations'?
Hello! I saw some old threads about this but wasn't sure if there were any updates. Is there a way to integrate the Square locations feature with the Books locations feature? As in, transactions from separate Books locations go to separate Square locations
Zoho Commerce - How To Change Blog Published Date and Author
Hi Commerce Team, I'm discussing a project with a client who wants to move from Woo Commerce / Wordpress to Zoho Commerce. They have around 620 blog posts which will need to be migrated. I am now aware of the blog import feature and I have run some tests.
Does zoho inventory need Enterprise or Premium subsrciption to make Widgets.
We have Zoho One Enterprise and yet we can't create widgets on inventory.
Next Page