Building extensions #7: Create custom widgets for a simplified end-user experience

Building extensions #7: Create custom widgets for a simplified end-user experience

Discover the benefits of using widgets!

We explored the significance of widgets, prerequisites, and the availability of JS SDK methods as part of our previous post. In this post, let's go over a detailed example of using widgets along with certain Zoho Projects JS SDK methods.

Use case: A developer is working on a Zoho Projects task and wants to know if there are any existing references that could be used to get a head start on their work.

Goal: Our goal here is to simplify the developer's job by presenting them with articles that are relevant to the task at hand.

Solution: Widgets! To achieve this goal, it would be ideal for the developer to have access to relevant Zoho Desk articles from a tab on the Task Details page. This can be accomplished by developing a custom widget.

Required components:
  1. A connection between Zoho Projects and Zoho Desk.
  2. An extension configuration process that includes:
A. Creating an extension
B. Configuring the plugin manifest
C. Setting up the widget code to display the Zoho Desk articles on the Zoho Projects Task Details tab
We have already explored the steps to establish a connection, create an extension, and configure the plugin-manifest.json file as part of our earlier posts. You can refer to those resources for detailed guidance. In this case, we have already completed most of these steps (screenshots below).

1. Connection

We have created a connection to establish a secure integration between Zoho Projects and Zoho Desk.



2. Extension Configuration
A. Extension creation: We have created a new extension for Zoho Projects.



B. Plugin-manifest.json configuration: Once the extension is created, we next configure the plugin-manifest.json file to include the created connection and a widget.
For our extension use case, the plugin-manifest.json file is configured as shown in the below screenshot.



C. Setting up the widget code:
Now that we have the connection established, the extension created, and the plugin-manifest.json configured, let's go ahead and set up the custom widget code to achieve our goal.

Index.html - Widget code

<!DOCTYPE html>
<html>
<head>
<title>App Default Screen</title>
<style>
div.a {
line-height: 200%;
}
</style>
</head>
<body>
<div class="a">
<ul id="demo" style="font-size:20px"> <b>Article Details</b></ul>
</div>
</body>
<script>
var subject = "";
Util = {};
zohoprojects.init().then(function() {
//Fetching the task subject using the Zoho Projects JS SDK method
zohoprojects.get("task.name").then(function(response) {
subject = response.data;
var articledetails = {
type: "GET",
headers: {
"orgId": "xxxxxxx",
"Content-Type": "application/json"
}
};
//Using the request JS SDK method to invoke and get the Desk articles matching the task subject 
using the connection
zohoprojects.request(url, articledetails, "zohodeskforlistingarticles").then(function(response) {
var list = document.getElementById('demo');
var a = document.createElement("a");
var result = response.result;
var data = result.data;
//Looping through the articles
for (i = 0; i < data.length; i++) {
var title = data[i].title;
var author = data[i].author;
var authorname = author.name;
var weburl = data[i].webUrl;
var entry = document.createElement('li');
entry.innerHTML = title.link(weburl) + " by " + authorname;
list.appendChild(entry);
}
});
});
});
</script>
</html>
  • Here, we utilized the Zoho Projects JS SDK method to extract the task name, which is the task subject.
  • We then used the Zoho Projects Request method to invoke the Zoho Desk API to search for articles.
  • The Request method is used to make requests to third-party applications. It must be invoked with the belowparameters:
  • Third-party API URL: This is the URL of the third-party application's API that needs to be invoked. In our case, we need to fetch articles from Zoho Desk based on a search value, so we used the Zoho Desk Articles Search API. We've included a search query parameter in the API as the title of the help article (wildcard search), and we've set the value of the search query parameter (title) as the task's subject. As a result, the API will look for any Zoho Desk help articles that satisfy a wildcard match with the task subject.
  • Data object: Depending on the type of action being performed, each API requires a method type, body, header, and/or parameters to be invoked. To invoke the third-party application API, a data object with the necessary API details must be created. In our scenario, a header providing the Zoho Desk org ID is required to call the Zoho Desk article search API, which we have hardcoded.
  • Connection: To work on the data of a third-party application safely, we would need to connect to that application. The link name of the connection created for the third-party application is the value of the connection parameter. This value will be available in the JSON code generated when the third-party application connection is established. This connection allows you to invoke the Zoho Desk API securely.
  • Once the API is invoked by providing the necessary parameters for the Request method, the response for the invoked Zoho Desk search articles API is returned. We extract the information we require from the response, like the title, author name, and web URL. We then list and display this data in the Zoho Projects task details widget, Related Articles.
Sample output
  • Access your Zoho Projects portal and enter into a task.

  • Choose the Related Articles task tab, which is the widget we created.

  • The widget displays the available Zoho Desk articles that are related to the task at hand.

  • Finally, click on an article to view its detailed information in Zoho Desk.


Using this method, developers working on Zoho Projects tasks can discover relevant articles and get helpful information to troubleshoot problems.

You can further enhance this use case by including a text box in the widget that allows the developer to enter a keyword and search for related articles using the Zoho Desk search articles API.

You can also accomplish use cases such as creating a task tab widget to associate data with a task. Every time the task loads, task-specific data can be displayed on the Task tab. To accomplish these kind of use cases, the data storage feature is available in Zoho Projects. We look forward to exploring the data storage feature,, and other use cases for custom widgets, in future posts.

We hope you found this information useful. Follow this space for further updates!

Sign up for a Zoho Developer account and start developing extensions for Zoho products using Sigma.

SEE ALSO




        • Recent Topics

        • Can receive but not send messages in Zoho Mail

          Hello! I was able to configure my email client successfully in that I can receive messages just fine. However, when I send messages out, they seem to go out fine (I don't receive any errors or anything), but the recipient does NOT receive those messages.
        • Email is not being delivered.

          I was always able to send my emails normally but in the last two weeks I noticed that my emails are not being received by one company. Before this two weeks everything was ok we were sending messages and emails without a problem, but then they stopped receiving my email. I tried adding other email addresses to see if other users can get the mail and indeed they do but the most important company is not receiving it.  We already asked to see the Spam and Not wanted email, but it was not there either.
        • Emails are not sent to Hotmail emails.

          Hi, We are getting this message when we send email to any of Microsoft email service. This message was created automatically by mail delivery software.  A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. qasims@live.se, ERROR_CODE :550, ERROR_CODE :5.7.1 Unfortunately, messages from [31.186.226.248] weren't sent. Please contact your Internet service provider since part of their network is on our block list (S3150). You can also refer your provider
        • Hotmail is blocking the zoho mail IP

          Greetings, Since last Tuesday (5 days ago today) I wrote to Zoho support and I still haven't received a single response (Ticket ID: 2056917). Is this how you treat people who pay for your email service? I am making this public so that those who want to
        • Zoho Desk View Open Tickets and Open Shared Tickets

          Hi, I would like to create a custom view so that an agent can view all the open tickets he has access to, including the shared tickets created by a different department. Currently my team has to swich between two views (Open Tickets and Shared Open Tickets).
        • Survey isn't Sending

          I have published my survey and uploaded my distribution list, which is within the limits of the plan I have. I cannot get it to send, despite repeated attempts. I'm beyond frustrated. Has anyone encountered this problem and how did you fix it?
        • Contacts are imported successfully but ignored when I send a campaign (due to non-marketing type)

          Can someone please help, When we sent a campaign yesterday, we received the following message: "The number of contacts from the selected mailing lists are 161. We have ignored 11 contacts due to its non-marketing type." So only 150 people got the message.
        • Problem: New Email Consistently Failing to Sync/Display in Inbox

          Recently, I have noticed that my Zoho Email inbox does not indicate I've received a new email, until I go to *another* folder and then return to the inbox. Only then will new emails be displayed. This has happened 100% of the time, during the past few
        • Campaing on hold for more than a week

          As someone with an existing site, I use Brevo to send newsletters to my users. Decided to tryout Zoho only for my first campaign to be placed on hold. Tried reaching out to support, but no response. Zoho Campaigns claims that my domain is new and the
        • Stop by and explore our six updates in ABM for Zoho CRM

          Dear Customers, We hope you're well! ABM for Zoho CRM is built to sharpen your database so that you engage with the right set of customer accounts. To fine-tune it further, we have six new updates: New access location for ABM Refined account entry criteria
        • CRM gets location smart with the all new Map View: visualize records, locate records within any radius, and more

          Hello all, We've introduced a new way to work with location data in Zoho CRM: the Map View. Instead of scrolling through endless lists, your records now appear as pins on a map. Built on top of the all-new address field and powered by Mappls (MapMyIndia),
        • Possible to connect Zoho CRM's Sandbox with Zoho Creator's Sandbox?

          We are making some big changes on our CRM so we are testing it out in CRM's Sandbox. We also have a Zoho Creator app that we need to test. Is it possible to connect Zoho CRM's Sandbox to Zoho Creator's Sandbox so that I can perform those tests?
        • Zoho CRM Community Digest - March 2026 | Part 2

          Hello Everyone! The second half of March 2026 arrived with a wave of announcements, from AI becoming more intuitive to security authorization protocols getting tighter, and a few community threads that quietly solved problems a lot of you have likely
        • Cross-Project Resource Capacity Planning View for All Users

          Zoho Projects has a workload and resource utilization view, but it is scoped per project. There is no native way for a manager to see a single view of how a team member is allocated across ALL active projects simultaneously. This means that when assigning
        • SMTP and API

          I cannot acess my account as its says "Access Denied". I have contacted on support@zeptomail.com. But no response.
        • Free Webinar Alert! Zoho Mail: An admin’s guide to email security reports and monitoring

          Hello Zoho Community! Are you struggling to keep track of your organization’s email activity? Wondering how to stay ahead of potential security threats? We’ve got a session you won’t want to miss. In our Zoho Mail: An admin’s guide to email security reports
        • Pinned important comments and threads in tickets

          Hello everyone, We are happy to announce that users can now pin important comments and threads in a ticket. This feature helps agents quickly access the customer's requirements and stay updated on the latest developments to ensure they have up-to-date
        • How we reduced manual ops using Zoho One (real use case)

          Hey community 👋 Sharing a quick use case - A growing business had disconnected systems across CRM, inventory, and storefront, leading to manual data entry, no real-time stock visibility, and limited reporting. What we did: Centralized data with Zoho
        • Introducing SlyteUI : From Idea to a Working Interface in Minutes

          SlyteUI is now live across all DCs as of 4th May 2026! Hello everyone! Are you spending hours building basic UIs? Does even the smallest customization feel like a major task? CRM customization should feel intuitive and straightforward, not time consuming
        • How to install Widget in inventory module

          Hi, I am trying to install a app into Sales Order Module related list, however there is no button allow me to do that. May I ask how to install widget to inventory module related list?
        • Inbuilt Telephony

          How do I replace InBuilt telephony with a custom PhoneBridge widget that's privately published in the Developer Console? I want to gain the usage of the telephone icon on the leads module in ZOHO CRM.
        • Zia flags the deal as at risk - but leaves my customers figuring out the rest themselves

          I implement Zoho for many businesses. Team sizes vary, some clients have 3 reps, some have 40. But I keep hearing the same complaint across all of them and I figured it's worth raising here. Zia's deal scoring has genuinely improved over the past year.
        • Calculate Hours Minutes Sec in Zoho Creator Using Deluge

          check_In = "8-Aug-2023 10:00:00".toDateTime().toLong(); checkout = "8-Aug-2023 18:00:00".toDateTime().toLong(); //difference = start.timeBetween(end); check_In = "8-Aug-2023 17:56:50".toDateTime().toLong(); checkout = "8-Aug-2023 18:00:00".toDateTime().toLong();
        • Customizing Global Search Settings for All Users

          Hi Our team use the brilliant global search functionality within CRM many many times daily. But, we struggle with the out-of-the box columns that CRM gives you. We are always telling users to customize this look to more suit our business, to show the
        • favorites no longer listed

          Hello, I can no longer navigate to my Favorites from the pulldown at the top of my grid view (see attached screenshot). I wasn't able to find it anywhere! Please help me display my Favorites. Thank you!
        • Super Admin Logging in as another User

          How can a Super Admin login as another user. For example, I have a sales rep that is having issues with their Accounts and I want to view their Zoho Account with out having to do a GTM and sharing screens. Latest Update (27th April 2026): With the early
        • 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
        • The Zoho Books client portal is good but it stops just short of being genuinely useful

          I set up Zoho Books for quite a few Companies. And honestly the client portal is one of the features I always demo because it looks great on the surface. Clients love the idea of it. But then a few months into going live, I start getting the same feedback.
        • How can I remove a Partner!?

          Hi Im trying to remove a partner. He added himself the CRM. He's now no part of the project and Im trying to remove him asap, but the screen wont let me as I dont know what the Partner ID is! Moderation Update: The request to untag/remove a partner from
        • Zoho CRM Sales Targets for Individual Salespeople

          Our organistion has salespeople that are allocated to different regions and have different annual sales targets as a result. I am building an CRM analytics dashboard for the sales team, which will display a target meter for the logged in salesperson.
        • Cadence not stopping on reply (in some cases) – anyone else?

          Hi everyone, we’ve noticed that in a few cases, Cadences don’t stop even though the contact replied (setting “stop on reply” is active). It works fine most of the time, but occasionally the reply is visible in CRM without stopping the Cadence. Our assumption
        • Is it possible to create cross-module rules without code?

          Before requesting this as a request, I want to be sure that there isn't a way to do it that I'm not aware of. What I mean by cross-module rule is: like a rule, but the trigger is in one record and the action is another, related record. Easy example: when
        • Standardize your booking forms with Centralized Customer Form

          We’re excited to introduce Centralized Customer Form, a new way to manage and standardize how customer information is collected across your event types. With this feature, you can define a common set of booking form fields once and apply them across your
        • Cannot edit articles in Zoho Learn

          Our users have recently noticed that there are certain manuals where we cannot edit any of the articles. Even the user who created the article cannot edit. I have an admin profile and I am also unable to edit the articles. Is this an ongoing bug? Kindly
        • Emails to Hotmail not being delivered

          For the last 2 days, every hotmail and MSN email have not been delivered. Anyone else having this issue?
        • Translation from Chinese (Simplified) to Chinese (Traditional) is not working. It randomly translated. Google Translate accurately but zoho translate is not working at all

          Hi friends, The newly added language for translation. https://www.zoho.com/deluge/help/ai-tasks/translate.html "zh" - Chinese "zh-CN" - Chinese (Simplified) "zh-TW" - Chinese (Traditional) my original text: 郑这钻 (and it is zh-CN) translated traditional
        • Pricing Query - Zoho Contracts

          Query about pricing: I am wondering if we need users from the organization to sign, do they need to be registered as users? And thus consume a license? They will literally not use the system for anything else. Just to read the contract once completed
        • Agent Ticket awareness

          I am trying to develop a system in desk that posts a comment every time a new ticket is opened. The goal is to alert agents of other open tickets. And make them aware of recently closed tickets. I have tried flow and work flow. I can get a comment to
        • Automation #7 - Auto-update Email Content to a Ticket

          This is a monthly series where we pick some common use cases that have been either discussed or most asked about in our community and explain how they can be achieved using one of the automation capabilities in Zoho Desk. Email is one of the most commonly
        • Add bulk ticket merge functionality in Zoho Desk

          Hi Zoho Team, We would like to request a feature that allows agents to merge multiple tickets in bulk instead of merging them one by one. Current Limitation At the moment, tickets can only be merged individually. This becomes very time-consuming when
        • Next Page