Building Extensions #3: Setting up the development environment and building extensions for Zoho Desk

Building Extensions #3: Setting up the development environment and building extensions for Zoho Desk

This series aims to equip developers with all they need to build extensions for Zoho Desk in Zoho Sigma and publish them in Zoho Marketplace.

Welcome back, Developers!

With our previous post on the basics of extensions and the scope of building them, we'd like to continue the momentum by discussing the process of actually building extensions for Zoho Desk. In this post, we'll address the technical prerequisites to develop extensions for Zoho Desk. We will also take you through the steps involved in creating and testing your extension.

The first step to build extensions for Zoho Desk is to download and install Node.js, followed by ZET (Zoho Extension Toolkit). ZET is the CLI tool offered by Zoho Desk that comes with a built-in http server to render the extension. It also enables you to build, test, validate, and package your extensions.

Setting up the development environment 

Installing Node.js 

You can install the Node.js runtime environment here (versions 7.1.0 and above are supported). Once you have installed Node.js, run the following command to verify it.

 $ node -v
 $ npm -v

Installing ZET CLI

Install ZET CLI, which enables you to build your extensions for Zoho products.
  • If you are a Mac/Unix user, run the following command to install ZET: 
 $ sudo npm install -g zoho-extension-toolkit
  • If you are a Microsoft Windows user, run the following command:
 $ npm install -g zoho-extension-toolkit
  • Use the following command to check the version:       
 $ zet -v
  • Use the help command to view all the available commands in ZET CLI and their usage.     
 $ zet -help

ZET commands:

init: Creates the skeleton of the extension project. It scaffolds the index file of your project with the necessary code to ease the development process.
run: Starts an https server in the current directory to serve the assets in it.
validate: Helps developers to ensure the extension is in alignment with the Zoho Desk guidelines.
pack: It will create ZIP file in the current directory to host extension's static assets in Zoho servers.


Building your extension 

Once the required development environment is set up, you are ready to build and test your extension. To start building your extension, you need to create a new project in ZET CLI.

Create a new project

Open your terminal and move to the directory under which you will be creating a new project for your extension.
  • Run the following command. This command will display the list of all Zoho Products for which extensions can be developed.
 $ zet init
  • Use the arrow keys to choose Zoho Desk and press Enter.    
 $ zet init
 ? Select the Zoho service for your widget and hit enter key (Use arrow keys)
 > Zoho Desk
   Zoho CRM
   YES 
  • You will be prompted for the Project Name.
  • Provide a project name and click EnterYou will have to choose Yes/No based on your need for module support.
Note: We will be discussing module support in detail in a separate post. If you are a beginner developing your first extension, you can choose No.

Now, the project directory with all the necessary folders, dependency code packages, and files will be created.

 D:\zet\projects>D:\zet\projects>zet init
 ? Select the Zoho service for your widget and hit enter key Zoho Desk
 ? Project Name demoproject
 Initializing project at: D:\zet\projects\demoprojects
 Installing NPM dependencies…
 Project Initialized D:\zet\projects\demoprojects
 Run the following commands:
 cd demoproject
 zet run



The image below represents the project's default folder structure. The widget.html file is the default widget created within the project. Let's test this extension using this sample widget.


Testing your extension

You need to perform the following steps to test your extension:
  1. Start server in your local host
  2. Activate development mode in Zoho Desk

Starting the server

To start the local host server, navigate to the newly created project's directory and execute the following command.

 $ zet run

The http server will start and be accessible through port 5000 of your local machine.

Activate development mode

  1. Log into your Zoho Desk account. 
  2. Click on the gear icon in the top right corner and go to the Setup page.
  3. Click Build Extensions under Developer space.
  4. Click the Enable Developer Mode button in the top right corner of the page.Developer mode will be enabled.
  5. Go to the Tickets module and open a ticket.
  6. Click the Extension icon to the right of the Ticket details page. The extension widget page will appear. 


We hope you found this post useful. Try it out and let us know your feedback! We really appreciate hearing from you.

Stay tuned!


See Also


<<Previous                                                                                                                                                                                                    Next>>

    Nederlandse Hulpbronnen


      • Recent Topics

      • Zoho desk desktop application

        does zoho desk has a destop applicaion?
      • ZOHO Work Drive Back Up

        I am looking for a ZOHO Work Drive backup solution. Something that is cloud based. There's lots of these kinds of options for Google Drive and other providers, but I have not seen anything for WorkDrive. Any suggestions?
      • ZOHO Reports - Filter Logic?

        Hi, I need a way to apply filter logics such as ((1 AND 2) OR 3). All I can see as of now is a way to enter different AND filters in the respective filter column. But how can I add an OR filter? Any advice would be highly appreciated. Mark
      • Scanned Doc - selecting Item overwrites Rate

        I have a Vendor Invoice which was uploaded to Documents. I select Add To > New Bill. The OCR is actually quite good, but it is reading an Item Description instead of an Item Number. I remove the description and select the correct Item Number... and it
      • Recruit API search

        Hi all, Attempting to call the search api endpoint from Postman using the word element as mentioned in api docs Search Records - APIs | Online Help - Zoho Recruit When making the call to /v2/Candidates/search?word=Saudi receive response of { "code": "MANDATORY_NOT_FOUND",
      • Saving reading position + Keep screen on

        While Zoho Notebook is excellent for saving and annotating articles, its utility is severely limited by the lack of reading progress synchronization. On the Android app, if a user exits a long note after reading 50%, the app fails to save the position.
      • Multiple Vendor SKUs

        One of the big concerns we have with ZOHO Inventory is lack of Vendor Skus like many other inventory software packages offer. Being able to have multiple vendor skus for the same product would be HUGE! It would populate the appropriate vendor Sku for
      • Zoho LandingPage is integrated with Zoho One!

        Greetings to the Zoho One users out there! We're delighted to let you know that Zoho LandingPage is available in Zoho One too! With Zoho LandingPage, you can host custom-made landing pages, and persuade the visitors to dive deeper by making further clicks,
      • Android app sync problem - multiple devices have same problem

        Hello, I am having a problem with synchronization in the Android app. When I create a drawing, the data does not sync correctly—only a blank note is created without the drawing. I tested this on multiple devices, including phones and tablets, and the
      • How can i resend a campaign to only one of the recipients on the original campaign

        How can i resend a campaign to only one of the recipients on the original campaign ? Sincererly, Mike
      • How to show branch instead of org name on invoice template?

        Not sure why invoices are showing the org name not the branch name? I can insert the branch name using the ${ORGANIZATION.BRANCHNAME} placeholder, but then it isn't bold text anymore. Any other ideas?
      • Create CRM Deal from Books Quote and Auto Update Deal Stage

        I want to set up an automation where, whenever a Quote is created in Zoho Books, a Deal is automatically created in Zoho CRM with the Quote amount, customer details, and some custom fields from Zoho Books. Additionally, when the Sales Order is converted
      • Marketing Automation Requirements Questions

        I would like to set up a multi-email drip campaign- please see the structure below and confirm if I can achieve this set up in Zoho marketing automation. Where applicable, highlight gaps and workarounds. Thanks Drip email campaign- Can I create one drip
      • Zoho CRM for Gmail Extension Not Working in Brave Browser?

        Is anyone able to get the Zoho CRM Chrome Extension working in the Brave browser? They're both built on the Chromium platform and every other Chrome Extension works with the exception of Zoho CRM for Gmail so any ideas here?
      • Sharing URLs and direct access

        Hello, I am storing my team's email signature images on Workdrive. I am creating a public image download share and adding “?directDownload=true” so that the image can be accessed without the Workdrive interface. A few questions: 1) Can we generate friendly
      • how to change the page signers see after signing a document in zoho sign

        Hello, How can I please change the page a signer sees after signing a document in Zoho Sign? I cannot seem to find it. As it is now, it shows a default landing page "return to Zoho Sign Home". Thanks!
      • Question about using custom_fields in Storefront Add-to-Cart API (error 2003 – required details)

        Hi everyone, I’m working with the Zoho Commerce Storefront API, specifically the Add to Cart endpoint: POST /storefront/api/v1/cart According to the documentation, this endpoint supports a custom_fields parameter for adding line-item custom data. I’m
      • Can a project be cloned?

        Good afternoon, greetings. I would like to ask if it's possible to clone a project in Microsoft Project. I found a way to do it using templates, but I'm not sure if there's a direct way to clone a project. Thank you in advance for your attention, and
      • Timesheet Tasks in Zoho Books: associate to service item

        How do we associate a service item to timesheet tasks in Zoho Books? For example: Joe spent 5 hours on project:task1 which is Service Item#1 (Income:Service1). When the invoice is issued thru the Project Invoice section, this is not available. When the
      • Why Sharing Rules do Not support relative date comparison???

        I am creating a Sharing Rule and simply want to share where "Last Day of Coverage" (Date field) is Greater than TODAY (Starting Tomorrow). However, sharing rules don't have the option to compare a date field to a relative date (like today), only to Static
      • Task/Activity indicator in SalesPipeline overview has disappeared

        I Just logged in my ZOHO CRM first 2026 checking my salespipeline overview , Every record card used to show an indication that there was an open task (Yellow if the expiry date was close, red if the expiry date was today and grey when it had expired).
      • Tip #56- Accessibility Controls in Zoho Assist: Hearing- 'Insider Insights'

        As we begin the new year, it’s a great time to focus on making our tools more inclusive and accessible for everyone. Remote support often involves long hours in front of screens, varying lighting conditions, and users with diverse accessibility needs.
      • Zoho Desk Android app update: Table view for All Departments view, custom button

        Hello everyone! In the latest version(v2.9.25) of the Zoho Desk Android app update, we have introduced Table view for the 'All Departments' view in the ticket module. We also have supported an option that allows tickets in the Table view to be sorted
      • What's New - December 2025 | Zoho Backstage

        In December, Backstage introduced a focused set of updates that improve how you manage registrations, communicate with attendees, and track participation. These enhancements are designed to give organizers greater flexibility and clearer control across
      • Need code format to specify default values

        Can someone please direct me to the code syntax or the proper translation per the instructions circled below. These instructions don't seem correct.
      • 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
      • Add multiple users to a task

        When I´m assigning a task it is almost always related to more than one person. Practical situation: When a client request some improvement the related department opens the task with the situation and people related to it as the client itself, the salesman
      • A Roundup of Zoho Sprints 2025

      • Sorting Custom Date in API isn't working w pagination limit

        How can we sort a custom field with DATE using pagination? Starting at page=1 then moving to page=2 with a limit of 10 each, its all messed up and even shows some of the same records as page 1? https://www.zohoapis.com/crm/v2/INVOICE_MODULE/search?criteria=(FM_Contact_ID:equals:1234)&sort_by=Invoice_Date&sort_order=desc&per_page=10&page='
      • SAP Business One(B1) integration is now live in Zoho Flow

        We’re excited to share that SAP Business One (B1) is now available in Zoho Flow! This means you can now build workflows that connect SAP B1 with other apps and automate routine processes without relying on custom code. Note: SAP Business One integration
      • Enhancement in Role and Profile mapping of agents in Sandbox

        Hello everyone! We have brought in a modification in the way users are mapped to a particular role and profile in Sandbox. What has changed? When agents are copied from production to Sandbox: If a user's current role and profile is available in Sandbox,
      • The reason I switched away from Zoho Notebook

        My main reason for switching to Zoho was driven by three core principles: moving away from US-based products, keeping my data within India as much as possible, and supporting Indian companies. With that intent, I’ve been actively de-Googling my digital
      • Decimal places settings for exchange rates

        Hello, We are facing issues while matching vendor payments with banking feeds. As we often import products/services exchange rate comes into play. Currently, ZOHO allows only six digits for decimal places. We feel that conversions like JPY to INR require
      • Zoho removed ability to see all Scheduled Reports!

        If you are not the owner of a scheduled report, Zoho recently removed the capability to see each scheduled report. As an admin who relies on seeing all scheduled reports being sent, this is a terrible update. Now I cannot see ANY scheduled reports...even the ones I am being sent!!  This should be a setting for admins to control.  This is a bad update.
      • Automate Backups

        This is a feature request. Consider adding an auto backup feature. Where when you turn it on, it will auto backup on the 15-day schedule. For additional consideration, allow for the export of module data via API calls. Thank you for your consideration.
      • GCLID and Zoho Bookings

        Is there anyway to embed a Zoho Bookings signup on a landing page and pass the GCLID information? More specifically, can this be done using auto-tagging and not manual tagging the GCLID? I know Zappier has an integration to do this but is there a better
      • Merge Items

        Is there a work around for merging items? We currently have three names for one item, all have had a transaction associated so there is no deleting (just deactivating, which doesn't really help. It still appears so people are continuing to use it). I also can't assign inventory tracking to items used in past transactions, which I don't understand, this is an important feature moving forward.. It would be nice to merge into one item and be able to track inventory. Let me know if this is possible.
      • Create PO from an invoice

        We are a hardware and software sales company which receives orders over the internet. We drop ship most of our products from a warehouse outside of our company. Our orders get sync'd into Zoho from our store via onesaas as invoices. It would be great
      • Blueprint or Validation Rules for Invoices in Zoho Books

        Can I implement Blueprint or Validation Rules for Invoices in Zoho Books? Example, use case could be, Agent confirms from client that payment is done, but bank only syncs transactions tomorrow. in this case, Agent can update invoice status to done, and
      • Resetting auto-number on new year

        Hi everyone! We have an auto-number with prefix "D{YYYY}-", it generates numbers like D2025-1, D2025-2, etc... How can we have it auto-reset at the beginning of the next year, so that it goes to D2026-1? Thanks!
      • Next Page