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>>

      Zoho Campaigns Resources


        • Desk Community Learning Series


        • Digest


        • Functions


        • Meetups


        • Kbase


        • Resources


        • Glossary


        • Desk Marketplace


        • MVP Corner


        • Word of the Day


        • Ask the Experts


          Zoho CRM Plus Resources

            Zoho Books Resources


              Zoho Subscriptions Resources

                Zoho Projects Resources


                  Zoho Sprints Resources


                    Zoho Orchestly Resources


                      Zoho Creator Resources


                        Zoho WorkDrive Resources



                          Zoho CRM Resources

                          • CRM Community Learning Series

                            CRM Community Learning Series


                          • Tips

                            Tips

                          • Functions

                            Functions

                          • Meetups

                            Meetups

                          • Kbase

                            Kbase

                          • Resources

                            Resources

                          • Digest

                            Digest

                          • CRM Marketplace

                            CRM Marketplace

                          • MVP Corner

                            MVP Corner




                            Zoho Writer Writer

                            Get Started. Write Away!

                            Writer is a powerful online word processor, designed for collaborative work.

                              Zoho CRM コンテンツ




                                ご検討中の方

                                  • Recent Topics

                                  • Organization wide Account and Contacts Visibility/Sharing Capabilities?

                                    Has anyone figured out a way to make visibility or sharing of Accounts and Contacts to be available across the entire organization without having to have every individual user edit their Sharing permissions? For our sales folks they need to be able to
                                  • Mail Merge in Zoho Desk

                                    Hello Team, Do we have an option of mail merge within Zoho Desk like we have in Zoho CRM? We have a requirement to generate some pdf file in the form of mail merge doc from the ticket.
                                  • Zoho vault filling in a form it's not supposed to fill in

                                    Hey there, I have a problem with ZOHO Vault autofill. In a software package, we have these options: For some reason zoho vault always replaces what's in the top option and fills a 2fa password in there, and then saves that value.. Meaning whatever was
                                  • When Does WorkDrive integrate with Books?

                                    When Does WorkDrive integrate with Books?
                                  • Uplifted homepage experience

                                    Editions: All editions. Availability update: 17th February 2026: All editions in the CA and SA DC | JP DC (Free, Standard and Professional editions) 23 February 2026: JP (All Editions) | AU, CN (Free, Standard, Professional editions) 27 February 2026:
                                  • Quickbooks Integrations Stopped Working

                                    All of our Quickbooks integrations have stopped working. I am checking in to see if: a) this is a known issue b) if anyone else is having this issue. As usual, Zoho support is unavailable.
                                  • Notification of Interaction Assignment

                                    If a user is assigned an interaction, they should be notified via email. These are almost useless because if I assign an interaction for someone to respond to, they dont know that I assigned it to them without me telling them or them logging in and discovering
                                  • Countries List Global Set- Complete with Phone Country Code and Continent.

                                    Dear Zoho Team I saw your recent addition to the Global Sets regarding the Countries list and states. While working on it, why didn't you also add things like Continent and Phone Country Code? Also, some ISO codes from some Countries/regions are mis
                                  • Custom Display Field for Lookup Dropdowns in Zoho CRM

                                    Could Zoho CRM support changing the display field in lookup dropdowns, like Zoho Creator does? This would make it much easier to select the right record by showing a more useful field instead of only the default one. It would improve speed, clarity, and
                                  • Message as bot

                                    I would like to be able to send a Cliq message truly as a bot. the current implementation of this function, while it sends the message as a bot it sends that message inside a chat from the user how authenticated the flow cliq connection instead of directly
                                  • Custom Button makes scroll bar go down in report

                                    I have a report with a Custom button called Completed. A colleague mentionned to me that when he pressed this custom button it scrolled down the page which is annoying since he want to stay at the same space on the repoort. There is no reload linked to
                                  • CRM x WorkDrive: We're rolling out the WorkDrive-powered file storage experience for existing users

                                    Release plan: Gradual rollout to customers without file storage add-ons, in this order: 1. Standalone CRM 2. CRM Plus and Zoho One DCs: All | Editions: All Available now for: - Standalone CRM accounts in Free and Standard editions without file storage
                                  • See a list of all records enrolled in a cadence?

                                    I am looking for a way to see a list of all leads or contact currently enrolled in a cadence. I do not see any way to do this through the cadence UI.
                                  • Manage Testing Process in Zoho Sprints

                                    Agile framework supports a robust quality assurance system that incorporates continuous testing throughout the development lifecycle of the product. The agile testing team focuses on planning the testing around the development, identifying defects early
                                  • Books <-> CRM synchronisation with custom Fields

                                    Hello, We are synchronising Books Customers with CRM Accounts. In CRM Accounts I set up last year a "segments" multiselect field shown below In Books, I set up a custom multi-select field with the same value as in the CRM And set up the synchronisation inside Books. Want to synchronise the Books Segments with the CRM Segments, but the later doesn't exist, and another non-existing is there ?! First, I don't understand where the field Segmentation is coming from. Second, I set CRM Segmentation to sync
                                  • Trouble with using Apostrophe in Name of Customers and Vendors

                                    We have had an ongoing issue with how the system recognizes an apostrophe in the name of customers and vendors. The search will not return any results for a name that includes the mark; ie one of our vendors names is "L'Heritage" and when entering the
                                  • Recording overpayment?

                                    So a customer just overpaid me and how do I record this? I can't enter an amount that is higher than the invoice amount. Eg. Invoice is $195 and he sent $200. He's a reccuring customer so is there a way to record so that he has a $5 advance for future invoice?
                                  • Zoho Books | Product updates | February 2026

                                    Hello users, We’ve rolled out new features and enhancements in Zoho Books. From Advanced Reporting Tags to the ability to mark projects as completed, explore the latest updates designed to improve your bookkeeping experience. Introducing Advanced Reporting
                                  • Introducing the New Zoho Assist Quick Support Plugin

                                    We are thrilled to announce the new Zoho Assist Quick Support Plugin, the upgraded and enhanced version of the Zoho Assist Customer Plugin. This new plugin allows organizations and IT administrators to deploy it directly onto their customers’ devices,
                                  • Automate your signing workflows with Zoho Sign + n8n

                                    Hello! We're excited to announce that Zoho Sign is now available as a community node on n8n, a popular open-source workflow automation platform used by tens of thousands of teams worldwide. n8n lets you connect apps, APIs, and services through a visual
                                  • Ask the Experts 27: Onboarding and managing agents

                                    Hello everyone, We are back with our Ask the Experts (ATE) series for 2026. This year, we bring experts to help you address customer support challenges using Zoho Desk. For our first ATE, we are getting into the human side of customer support. "Every
                                  • Retainer invoice in Zoho Finance modlue

                                    Hello, Is there a way of creating retainer invoices in the Zoho Finance module? If not can I request this is considered for future updates please.
                                  • Spotlight #27: Embed visual collaboration Spaces in your presentations using the Vani add-on

                                    Hello everyone! This month’s spotlight feature is the Vani add-on for Zoho Show. Every time you pause your presentation to open another tab or pull up supporting material, you lose a bit of momentum. At Zoho Show, we design features that keep everything
                                  • CRM

                                    Is anyone else experiencing this issue? Our company is not moving out of using Gmail's web app. It just has more features and is a better email program than Zoho Mail. Gmail has an extension (Zoho CRM for Gmail) that we're using but we've found some serious
                                  • Good news! Calendar in Zoho CRM gets a face lift

                                    Dear Customers, We are delighted to unveil the revamped calendar UI in Zoho CRM. With a complete visual overhaul aligned with CRM for Everyone, the calendar now offers a more intuitive and flexible scheduling experience. What’s new? Distinguish activities
                                  • Global Search / Command Palette in Live App

                                    Zoho Creator applications can contain many forms, reports, pages, and dashboards. While navigation inside the app is smooth, users still need to move through multiple menus or screens to find specific records or open particular modules. Currently, in
                                  • New 2026 Application Themes

                                    Love the new themes - shame you can't get a little more granular with the colours, ie 3 different colours so one for the dropdown menu background. Also, I did have our logo above the application name but it appears you can't change logo placement position
                                  • Smarter appointment allocation with round-robin distribution

                                    Greetings from the Zoho Bookings team! We’re excited to introduce the Appointment Distribution feature, a new way to decide how appointments are assigned among users. By default, appointments are distributed evenly across all event types, but this enhancement
                                  • Dynamic image in form works in the app but not on the customer portal.

                                    img = frm_Fichas[ID == input.Nombre].Foto; imgno = Nophoto[ID2 = 1].Image; if(len(img) > 1) { img = img.replaceAll("/sharedBy/appLinkName/",zoho.appuri); img = img.replaceAll("viewLinkName","Fichas_de_personal_public"); img = img.replaceAll("fieldName","Foto");
                                  • A2P 10DLC Opt-in Rejection Issue with Zoho Creator Public Form

                                    Hi everyone, I’m working on an A2P 10DLC SMS campaign and running into repeated rejections due to opt-in issues. I’m using Zoho Creator for the registration flow. The form is public (no login required). Users enter their phone number and there is an unchecked
                                  • Make Quick Edits to Images Before Attaching

                                    Hello everyone, We have enhanced how attachments are handled in tickets to help agents preview and share files more efficiently in Zoho Desk. Agents can preview image attachments before adding them to tickets and edit them using attachment annotator.
                                  • 3/18 オンライン勉強会のお知らせ Zoho ワークアウト (無料)

                                    ユーザーの皆さま、こんにちは。コミュニティチームの中野です。 3月開催のZoho ワークアウトの開催が決定しましたのでご案内します。 今回はZoomにて、オンライン開催します。 ▶︎参加登録はこちら(無料) https://us02web.zoom.us/meeting/register/BoNTN7zYR8OvOPGShqBY0A ━━━━━━━━━━━━━━━━━━━━━━━━ Zoho ワークアウトとは? Zoho ユーザー同士で交流しながら、サービスに関する疑問や不明点の解消を目指すイベントです。
                                  • Incorrect Functioning of Time Logs API (Version 3)

                                    We need to fetch the list of time logs for each task for our company internal usage. We are trying to achieve it by using the next endpoint: https://projects.zoho.com/api-docs#bulk-time-logs#get-all-project-time-logs Firstly, in the documentation the
                                  • Extend color coding to custom picklist fields

                                    Objectively, Projects has the best UI of any Zoho app — clean, intuitive, and never feels bloated. Big props to whoever owns the design. Feature request: color coding for custom picklist field values in field customization. You've already done it in two
                                  • New in Office Integrator: In-sheet text translation

                                    Hi users, We're pleased to introduce translation capability in the spreadsheet editor in Zoho Office Integrator. This allows you to translate the text in your spreadsheet's cells into 70+ languages from within your web app. Office Integrator's spreadsheet
                                  • What is the best way to convert MSG file to Word format?

                                    The best way to convert MSG files to Word format is by using a reliable and professional tool Aryson MSG file Converter. Manual methods are often time-consuming and may not preserve email formatting, attachments, or metadata accurately. In contrast, Aryson
                                  • Streamline email communication with Out of Office configuration

                                    Managing user communication effectively is the key to ensuring timely responses and consistent messaging. However, when users are unavailable, the absence of an Out of Office response can lead to delays and missed expectations. Managing these settings
                                  • ZOHO CRM Button Integration

                                    Hi Team, I’m currently working with Zoho CRM along with a custom application where I fetch deal details from the CRM and use them based on my requirements for each deal. Now, I want to enhance this setup. I plan to create a button on the Deal Detail page
                                  • Changing settings for auto logoff

                                    I've noticed that when I haven't used Cliq for a while, I have to re-enter my password. That is really clumsy, especially if you have a complicated password. Because it won't be filled in automatically. Is there a way to change that behaviour? We are
                                  • A few Issues when using "Pay Bill via Check"

                                    We have quite a bit of issues with how paying for Bills via Check works. Would love some feedback from the Zoho team in case we are doing something incorrectly. 1. When we go from a vendor and select "Pay Bill via Check" option, we see ALL the outstanding
                                  • Next Page