Install and uninstall actions

Install and uninstall actions

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:
  1. 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.
  2. 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.

For more information about the keys that you can use inside the installation script, refer to the install actions documentation.

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:
  1. 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.
  2. 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:
  1. Fetches all the active admin users in the organization
  2. Downloads the checklist file from WorkDrive
  3. Sends an email notification to the admin users with the installation details and the checklist file.
  1. topping_name = "Compliance Notification Topping";
  2. // 1) Fetch admin users
  3. resp = invokeurl
  4. [
  5. url :"https://www.bigin.com/developer/docs/apis/v2/get-users.html"
  6. type :GET
  7. connection:"biginplus__biginnewconnection"
  8. ];
  9. // 2) recipient list
  10. stakeholders = List();
  11. usersList = resp.get("users");
  12. if(usersList != null)
  13. {
  14. for each user in usersList
  15. {
  16. email = user.get("email");
  17. status = user.get("status");
  18. if(email != null && (status == null || status.toLowerCase() == "active"))
  19. {
  20. stakeholders.add(email);
  21. }
  22. }
  23. }
  24. // 3) Download WorkDrive file via Download API
  25. header = Map();
  26. header.put("Accept","application/vnd.api+json");
  27. resource_id = "khw4zbab917b7f4774260a06636089ef0074f";
  28. fileResp = invokeurl
  29. [
  30. url :"https://download.zoho.com/v1/workdrive/download/" + resource_id
  31. type :GET
  32. headers:header
  33. connection:"biginplus__zohoworkdriveconnection"
  34. ];
  35. // 4) constructing email
  36. org_id = installParamMap.get("organizationId");
  37. installer_id = installParamMap.get("installerId");
  38. current_time = zoho.currenttime;
  39. subject = "Bigin Topping Enabled: " + topping_name;
  40. message = "";
  41. message = message + "<b>" + topping_name + "</b> was <b>Installed</b>.<br/><br/>";
  42. message = message + "<b>Organization ID:</b> " + org_id + "<br/>";
  43. message = message + "<b>Installed by (User ID):</b> " + installer_id + "<br/>";
  44. message = message + "<b>Time:</b> " + current_time + "<br/><br/>";
  45. message = message + "<b>Business impact:</b> This topping is now active for the organization.<br/>";
  46. //sending the email
  47. if(!stakeholders.isEmpty())
  48. {
  49. sendmail
  50. [
  51. from :zoho.adminuserid
  52. to :stakeholders
  53. subject :subject
  54. message :message
  55. Attachments :file:fileResp
  56. ]
  57. }
For details about the API endpoints and request formats used in this code, refer to the Bigin and WorkDrive API documentation. For the syntax to send emails via a Deluge task, you can refer to this documentation.

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.
  1. topping_name = "Compliance Notification Topping";
  2. // Fetch admin users
  3. resp = invokeurl
  4. [
  5. url :"https://www.zohoapis.com/bigin/v2/users?type=AdminUsers"
  6. type :GET
  7. connection:"biginplus__biginnewconnection"
  8. ];
  9. stakeholders = List();
  10. usersList = resp.get("users");
  11. if(usersList != null)
  12. {
  13. for each user in usersList
  14. {
  15. email = user.get("email");
  16. status = user.get("status");
  17. if(email != null && (status == null || status.toLowerCase() == "active"))
  18. {
  19. stakeholders.add(email);
  20. }
  21. }
  22. }
  23. org_id = installParamMap.get("organizationId");
  24. uninstaller_id = installParamMap.get("installerId");
  25. current_time = zoho.currenttime;
  26. subject = "Bigin Topping Disabled: " + topping_name;
  27. message = "";
  28. message = message + "<b>" + topping_name + "</b> was <b>Uninstalled</b>.<br/><br/>";
  29. message = message + "<b>Organization ID:</b> " + org_id + "<br/>";
  30. message = message + "<b>Uninstalled by (User ID):</b> " + uninstaller_id + "<br/>";
  31. message = message + "<b>Time:</b> " + current_time + "<br/><br/>";
  32. message = message + "<b>Business impact:</b> This topping is no longer available from now on.<br/>";
  33. if(!stakeholders.isEmpty())
  34. {
  35. //Send email
  36. sendmail
  37. [
  38. from :zoho.adminuserid
  39. to :stakeholders
  40. subject :subject
  41. message :message
  42. ]
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!

<<Previous                                                                                                                                                                            Next>>

    Nederlandse Hulpbronnen


      • Recent Topics

      • Mirror Component in Zoho CRM: Access real-time related data without leaving your record

        Hi everyone, This feature is now available for the JP, CA, SA, UAE, and AU DCs. We're excited to bring to you Zoho CRM's mirror component, which presents relevant data on a record's details page and keeps everything users need in one place without having
      • [Free Webinar] New portal page customization in Zoho Creator - Creator Tech Connect

        Hello everyone, We’re excited to invite you to another edition of the Creator Tech Connect webinar. About Creator Tech Connect The Creator Tech Connect series is a free monthly webinar featuring in-depth technical sessions designed for developers, administrators,
      • Canvases Auto-Skewing/Adding Scroll Bars When They Were Not There Prior

        Is anyone else noticing rendering issues in their canvases today? It seems to be mainly icons which now have scroll bars added which makes them all look off, though some fields seemed to revert to squished length as well. Were the icons replaced with
      • #11 Stop Absorbing Cost That Client Should Pay

        One of the easiest ways of losing profit in a business isn't losing a customer. It's forgetting to include the expenses that are incurred for half of your customers. A taxi ride to a client location A software subscription purchased for a project. Domain
      • Related products & AI product recommendations through commerce API.

        Hello Zoho team I’m looking to add related products and AI product recommendations to my Zoho Commerce webshop with custom storefront. Is this supported through the API? And if not, is this on your roadmap? Thanks in advance David
      • Can you sell Subscriptions using Zoho Commerce?

        In addition to physical products and the apparently coming soon 'Digital Products', it is possible to sell Subscriptions using Zoho Commerce?
      • New tickets with empty image contents

        Dear Support. From the end of last week onwards customers send messages for new tickets through microsoft graph (by email to support at procert.ch using the procert portal). We have an issue with the emails because well packed images are no longer visible.
      • Images not showing up in Desk tickets

        Customers are trying to send us screenshots to diagnose their issues. But Desk seems to be stopping the images/breaking the link when the ticket comes in. (We can see them in an email box getting cc'd on all tickets...so it's not our mail system). Help!
      • Zoho Commerce B2B

        Hello, I have signed up for a Zoho Commerce B2B product demo but it's not clear to me how the B2B experience would look for my customers, in a couple of ways. 1) Some of my customers are on terms and some pay upfront with credit card. How do I hide/show
      • A method for renaming tab titles in Creator to display more relevant information

        Hi Zoho Devs, Updates: Rules Export File attached; you can now import this into Tab Modifier instead of manually entering the rules yourself) 2022-06-08: Updated rules so that crm.zoho.com tabs are not affected; uploaded new .json import file 2022-06-09:
      • Announcing new features in Trident for Windows (v.1.41.5.0)

        Hello Community! Trident for Windows just received an exciting update with new ways to collaborate and stay organized without leaving your workspace. Let’s take a look at what’s new! Integrate Zoho Meeting with Trident. You can now schedule, start, and
      • Problem with the blueprint flow.

        Scenario: 3 departments in a single environment: A-B-C agents from department 1 D-E-F agents from department 2 G-H agents from department 3 Since we've been using Zohodesk (2023), agents can assign tickets to the correct department using the blueprint
      • Bulk upload images and specifications to products

        Hi, Many users have asked this over the years and I am also asking the same. Is there any way in which we can bulk upload product (variant) images and product specifications. The current way to upload/select image for every variant is too cumbersome.
      • Billing Status Update

        Hello Latha, I’m working on a new automation (deluge) to fulfill one of our requirements. In this automation, there is a step to update the Work Order billing status from “Not Yet Invoiced” to “Non-Billable.” I tried to find the API information relevant
      • Problem with CRM Connection not Refreshing Token

        I've setup a connection with Zoom in the CRM. I'm using this connection to automate some registrations, so my team doesn't have to manually create them in both the CRM and Zoom. Connection works great in my function until the token expires. It does not refresh and I have to manually revoke the connection and connect it again. I've chatted with Zoho about this and after emailing me that it couldn't be done I asked for specifics on why and they responded. "The connection is CRM is not a feature to
      • Writer is horrible

        Form filling is about unusable for complex forms! I am so tired of it. GET IT TOGETHER ZOHO.
      • Getting Project Template List using the REST API

        I am trying to confirm that I can use the REST API to create a project using a project template. The API documentation indicates this is possible by providing the Template ID, but it is not clear at all how to get a list of available Project Templates
      • Can't delete shared mailbox emails from mobile app

        I have the mobile app on iOS and cannot seem to find a way to delete an email from a shared mailbox. Is there something I'm missing here? Michael
      • From Zoho CRM to Paper : Design & Print Data Directly using Canvas Print View

        Hello Everyone, We are excited to announce a new addition to your Canvas in Zoho CRM - Print View. Canvas print view helps you transform your custom CRM layouts into print-ready documents, so you can bring your digital data to the physical world with
      • Introducing Custom Columns in Forecasts in Zoho CRM

        Release Plan: Enabling in Phased Manner, Enabled for JP DC Hello all, Forecasts in Zoho CRM help sales representatives, managers, and business stakeholders evaluate performance and plan future sales activities. While standard metrics such as Target, Achieved
      • Boost your CRM communication with new font types, sizes, and default reply-to options while composing emails

        Hello Everyone, We’re excited to introduce a series of impactful enhancements to the email composer settings in Zoho CRM. These updates enable you to personalize and optimize your customer interactions with greater efficiency. So what's new? Add custom
      • Associate records via the Multi-select lookup RELATED LIST via API

        In the REST API, is there a way to associate records for a multi-select lookup related list other than via the linking module? There are two methods for the lookup: 1. via insert records API 2. via the linking module ...as described in https://help.zoho.com/portal/en/community/topic/kaizen-125-manipulating-multi-select-lookup-fields-mxn-using-zoho-crm-apis
      • OAuth integration issues

        I'm experiencing persistent OAuth errors when trying to connect Make with Zoho API. I've tried multiple approaches but keep encountering the following issues: First error: 'Invalid Redirect Uri - Redirect URI passed does not match with the one configured'
      • Zoho Books Placeholder: Inventory Counts

        I was hoping to figure out how to find the placeholders for inventory counts by item. We use Location based inventory tracking, so I dont know if that affects things. I want my PDF and Printed PICK LISTS to show the Quantity Available to Pick. I have
      • Blueprint Not Triggering When Lead Status Is Updated by Workflow (IndiaMART Integration)

        I have set up a blueprint that triggers when a lead’s status is “New Lead.” Our CRM is integrated with IndiaMART, and when leads are created from IndiaMART, their Lead Status is initially set to None. To handle this, I created a workflow that automatically
      • Le cauchemar de PEPPOL avec Zoho Books

        Après de longues hésitations — car je défends toujours les produits Zoho malgré leurs imperfections —, je me suis décidé à poster cet avis sur ce forum. En effet, depuis plus de 5 mois, les nombreux soucis relatifs à la facturation par PEPPOL semblent
      • Overview on users IMAP settings

        We have about 30 users who all have the channels/email/email configuration/IMAP integration/O365 enabled and emails are synchronized. Here my problem: Passwords for the email accounts are expiring on individual bases and most of the users forget to update
      • Introducing Offline Signature in Zoho Contracts

        We are excited to announce a new feature that brings even more flexibility to your contract execution workflow — Offline Signature. What is Offline Signature? The Offline Signature feature enables organizations to manage contracts that are signed outside
      • URGENT ESCALATION — Unresolved Datacenter Conflict: Zoho Recruit .in vs Zoho Apps .com | Business-Critical Issue

        ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ISSUE SUMMARY ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Our organisation has existing Zoho accounts registered under the US datacenter (.com). We have onboarded Zoho Recruit under the India datacenter (.in) at https://recruit.zoho.in/
      • Accepting Event from Outlook Client

        I've noticed this behavior for a few years now. If an Event is created from CRM and sent to participants and the participant accepts the invitation using Outlook client, Zoho event won't be updated as "Going" it only works if the recipient accepts it
      • Link webform to a job opening

        I have a webfrm embeded on my website and everytime a candidates fill the form, their candidate status is to new. Is it possible that it links to a specific job opening instead of me having to assing it manually ? Thanks
      • Zoho CRM Integration Form + Custom Fields

        Hi! I've created an Integration Form from Zoho CRM's Vendors Module, but I can choose a few standard fields and no custom fields I've created in Zoho CRM. There is a plan to add this feature soon? Thanks in advance.
      • Canvas Detail View Related List Sorting

        Hello, I am having an issue finding a way to sort a related list within a canvas detail view. I have sorted the related list on the page layout associated with the canvas view, but that does not transfer to the canvas view. What am I missing?
      • Cross Module Filtering – Use Fields from Lookup modules in Custom Views criteria and Advanced Filters

        Hello everyone, Zoho CRM now enables you to achieve deeper filtering of records in a module, using fields of a lookup, thereby enhancing your data management experience manifold. This filtering based on lookup module fields is now available in advanced
      • Custom Portal URL causing SAMEORIGIN error with embedded Page snippet

        In my app, I have a page that embeds another page. The URL that I have for the embedded page starts with https://creatorapp.zoho.com but the custom domain I have set up is https://kors.kerndell.com. Because the user logged into the app at https://kors.kerndell.com,
      • Recent enhancements made to workflow rules

        Greetings, I hope all of you are doing well. We're happy to announce a few recent enhancements we've made to Bigin's workflows. We'll go over each one in detail, but for now these updates can be broadly categorized into two parts: Enhancements to workflow
      • How do I get my cell height to auto adjust?

        I'm evaluating Zoho Sheet as a replacement for Google Spreadsheet. Using latest version of Safari, and experiencing the same issues in Chrome. A few bugs/things I can't figure out: Auto adjusting cell height when importing from Google Docs or creating a new document Turning off the auto date formatting for X.Y.Z where they are all integers.. (This is extremely important, as our requirements are written as outlines.. "X.Y.Z" corresponds to a requirement ID.. which is then turning into a date) The
      • Zia Agent activation in Zoho Desk forces new Organization creation instead of deploying to existing one

        While attempting to complete the deployment and activation sequence of a new Zia Agent within our existing Zoho Desk environment, the activation process failed on the user interface, throwing a generic error (see print). However, despite the activation
      • Marketing Tip #36: Optimize your online store for AI search

        Search is changing fast. Along with traditional search engines, AI-powered search and recommendation experiences are becoming a bigger part of how customers discover products online. Stores that are well-organized, descriptive, and consistent are more
      • Create a "My saved custom themes" section in Zoho Forms

        Hi! I created lots of forms for my company that we embed on the website with a custon design. It is a pain not to be able to save a custom layout as a template and just not to have to do it again! So could you add a gallery like : "My saved themes" ?
      • Next Page