Building Extensions #10: Creating widgets with the JS SDK bundle in Zoho Desk - Data Storage API

Building Extensions #10: Creating widgets with the JS SDK bundle in Zoho Desk - Data Storage API

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.

In our previous post, we discussed Request APIs, what they're used for in extensions, and how to use them in your Zoho Desk extensions. In this post, we'll examine the next set of APIs in the JS SDK bundle—Data Storage APIs—and show you how to use them in the Zoho platform (Sigma) to build the Zoho Desk extensions.

Data Storage APIs

You may find that you require an extension that has data storage and retrieval capabilities. Zoho Desk allows you to store extension-related data in a database so that it can be retrieved and used when required. This can be data from a third-party application, or any other data related to the extension's functionality that needs to be preserved for future use. With the Data Storage APIs, you'll have access to a data store where the extensions can set (store) and get (retrieve) data using the Data Storage APIs. A key-value pair is used in managing the details about the data that's stored and retrieved, and is explained in detail in this post. When the data is no longer required, it can even be removed using the delete API.

The following SDK methods provide database management functionalities in your extensions.

Get data

The get API retrieves data from the extension's connected database. The request includes two parameters: key and queriableValue. The API request must include at least one of them.
  • key - Helps to identify what is being called by the API.
  • queriableValue - Specifies a common lookup group which will be useful for lookup from the database.
Here is a sample code snippet of the get data function:

     ZOHODESK.get("database", { "key": "3", "queriableValue": "test" })
    .then(function (response) {
        //response returns the value, based on the key specified
    })
    .catch(function (err) {
        // Error handling
    })

Set data

The set data API asynchronously sets data in the extension's connected database. The request includes three parameters: key, value, and queriableValue. The API request must include all three parameters. Each parameter is subject to further conditions:
  • The value passed by key can have a maximum length of 50 characters. The only special characters allowed are commas (,), underscores (_), and colons (:). The value of this parameter cannot be NULL.
  • The data passed by value must be a JSON object whose size cannot exceed 1 KB. Empty JSON objects can be passed, too. 
  • The value passed by queriableValue can have a maximum length of 50 characters. The only special characters allowed are commas (,), underscores (_), and colons (:). The value of this parameter can be NULL.
Here is a sample code snippet of the set data function:

      ZOHODESK.set("database", { "key": "3", "value": { "test": "testid" }, "queriableValue": "test" })
    .then(function (response) {
        // response returns the value saved
    })
    .catch(function (err) {
        // Error handling
    })

Delete data

The delete data API completely removes the selected data from the connected database. The key parameter must be included in the API request.

Here is a sample code snippet of the delete data function:
      
      ZOHODESK.delete("database", { "key": "3" })
    .then(function (response) {
        // response returns the status of deletion
    })
    .catch(function (err) {
        // Error handling
    })

Scenario: Let's say you're building an extension that involves creating events in Zoho Calendar from within Zoho Desk—i.e., the user creates Calendar events without switching from Zoho Desk to Zoho Calendar. In this case, the events created can be fetched from Zoho Calendar and are categorized and listed in the extension, such as completed event, upcoming event, or any other events, according to requirements. The Data Storage APIs can be used to get those events' data, store them in the extension database, and list those events in the extension's widget.

To implement this scenario, you must establish a connection between Zoho Desk and Zoho Calendar with the required scope. This will allow you to make requests between these services by invoking their APIs. Please check the Connectors post to learn more about creating connections. Once the connection is established and the configurations are completed in the plugin-manifest.json file, you can proceed with executing your extension functionalities.

The code below demonstrates how an event is created in Zoho Calendar using the Request API and the events are listed in Zoho Desk using the set method.
  • Use ZOHODESK.request to invoke Zoho Desk's "Create Events" API.
    Here, we are pushing the event data into Zoho Calendar.
  • Construct the request object for ZOHODESK.request.
    {
        "type": "POST",
        "headers": {},
        "postBody": {},
        "connectionLinkName": "calendarEvent",
        "data": {
            "eventdata": {
                "dateandtime": {
                    "timezone": "Asia/Kolkata",
                    "start": "20220225T130000+0530",
                    "end": "20220225T133000+0530"
                },
                "title": "Today's morning meeting"
            }
        }
    }
  • Extract the required values from the response of the request.
  • Use ZOHODESK.set to invoke Zoho Desk's "set record" API.
    ZOHODESK.set("database", {
        "key": userId,
        "value": {
            "eventId": eventData.id
        },
        "queriableValue": "eventIds"
    })


In this code, we're doing the following:
  • Creating events in Zoho Calendar by making a call to the Calendar events API, post method. The Request API SDK of Zoho Desk is used to invoke the Zoho Calendar API. The events are created with event date, event start time, and end time, with the time zone defined.
  • As mentioned, we need to list those events in our extension for our quick reference, so the required event information is fetched from the Request API's response.
  • Finally, we're storing the event information in our extension database using the set method. Here, we have defined key as userId, value as eventData.id, and queriableValue as eventIds. So all the events (eventData.id) created by the user (userId) will be stored within the database (eventIds).

Now that we have the event information in our extension database, we can use the get Data Storage API, define the key and queriableValue to retrieve the event information, process them, and display the events in your customized widget in the extension.

We hope that this example code has given you a clear picture of when and how to use the Data Storage APIs in building extensions for Zoho Desk.

Stay tuned for our next post where we will discuss another SDK method.

<<Previous                                                                                                                                       Next>>
    • Recent Topics

    • Associating a Candidate to a Job Listing

      Hello, I am trying to use Zoho Forms embedded on my website for candidates to apply for a job opening. I want the form then to tie directly with zoho recruit and have the candidate be automatically inputed into Recruit as well as associated with the specific
    • Automate reminder emails for events

      Hi team, I am trying to automate send event reminders via zoho campaign to my attendees 1 day prior to my scheduled events. I used zoho flow, autoresponder in zoho campaign, as well as I used workflow and automation - but none of these methods are working.
    • Update related module entry Zoho Flow not working with custom module ?

      Hi everyone. I am facing an issue here on Zoho Flow. Basically what I am doing is checking when a module entry is being filled in with an Event ID. Event is a custom module that I created. If the field is being filled in I fetch the contact with its ID
    • How to disable time log on / time log off

      Hi We use zoho people just to manage our HR Collaborators. We don't need that each persona check in and out the time tracker. How to disable from the screen that ?
    • Zoho Flow - Add to Google Calendar from trigger in Zoho Creator App

      Hello! New to Zoho Flow, but I believe I have everything setup the way it should be however getting an error saying "Google Calendar says "Bad Request". Any idea where I should start looking? Essentially some background: Zoho Creator app has a trigger
    • Picklist field shows "none" as default

      Hello, Is there an option to avoid showing "none" as the default value in a picklist field? I also don't want to see any option displayed. My expectation is to have a blank bar, and then when I display the drop-down list, I can choose whichever I wa
    • Email authentication

      أريد التحقق من البريد الإلكتروني
    • What’s New in Zoho Analytics – December 2025

      December is a special time of the year to celebrate progress, reflect on what we have achieved, and prepare for what’s ahead! As we wrap up the year, this month’s updates focus on refining experiences, strengthening analytics workflows, and setting the
    • Marketing Tip #12: Earn trust with payment badges and clear policies

      Online shoppers want to know they can trust your store. Displaying trust signals such as SSL-secure payment badges, return and refund policies, and verified reviews shows visitors that your store is reliable. These visual cues can turn hesitation into
    • The improved portal experience: Introducing the template view for inventory modules, enhanced configurations, and PDF export support

      Availability: Open for all DCs. Editions: All Hello everyone, You can now achieve a seamless, brand-aligned portal experience with our enhanced configuration options and the new template view for inventory modules. Your clients will now be able to view
    • Zoho Analytics Bulk Api Import json Data

      HI, I’m trying to bulk-update rows in Zoho Analytics, and below are the request and response details. I’d like to understand the required parameters for constructing a bulk API request to import or update data in a table using Deluge. Any guidance on
    • Project Management Bulletin: December, 2025

      The holiday cheer is in the air and it’s time to reflect on the year that was. At Zoho PM Suite, we've been working behind the scenes on something huge and exciting all year and now we are almost ready—with just a bit of confetti—for our grand release
    • Inventory batch details

      Hi there, I'm trying to get the batch details of an item, here's what I've done so far. I've sent cUrl request to the below endpoint and I get a successful response. Within in the response I find the "warehouses" property which correctly lists all the
    • Function #50: Send Mass emails to your customers

      Hello everyone, and welcome back to our series! We have reached a milestone of 50 Functions, which means that we have automated 50 different tasks in Zoho Books. Every Friday, we have shared a nifty function aimed at either automating a task or streamlining
    • Auto check out after shift complete

      i'm just stuck here right now, i wanna know how to do this thing, now tell me, how can i configure a custom function that runs after complete shift time if employee forget to check-out ?
    • How to create a flow that creates tickets automaticaly everyday based on specific times

      Hi guys Does anyone know how to create a flow that will create tickets automaticaly in ZOHO Desk when a certain time is reached. Im havin a hard time configuring a flow that will create tickets automaticaly everyday during specific hours of the day For
    • ZOHO FLOW - ZOHO CREATOR - ZOHO WRITER : Get Related records

      Bonjour, J'ai besoin que vous m'ajoutiez la solution "Get related Records" dans la liste de choix de zoho creator (sous Zoho flow). En effet, j'ai besoin de récupérer les champs d'un sous formulaire pour l'ajouter à l'impression de mon document. Mer
    • Task Details on task template

      When creating a task template in settings that task details seem to be missing. Is it not possible to set the details of a task, such as the priority, type, reminder settings, and custom field values?
    • Will zoho thrive be integrated with Zoho Books?

      title
    • Connecting email for each department in ZohoDesk

      Hi! Could someone help me to go through connecting emails for each department?
    • How do I trigger a Flow based on a campaign response?

      Is there a way to trgiider a Zoho Flow based upon a lead opening an email sent via Zoho Campaigns? I see that the data is recorded in the 'Campaigns' section of Zoho CRM under 'Member Status' and I want to trgigger a flow based upon that record changing.
    • All Zoho Flows are filtered

      My two flows operate perfectly when I run them as a test, but when they're activated each run ends with a status of neither success, nor fail, but filtered. I haven't set up any filters. I don't see where to turn off filters. When I test run on a sequence
    • Creating Multiple Items on Sales Order

      Hi, I’m trying to automate some processes using Zoho Flow, specifically the creation of sales orders in my Zoho Inventory. However, Zoho Flow's Create Sales Order function can only add one item. I would like to include multiple items in a single sales
    • Problem Connection from Zoho Flow and Gravity Form

      I obtained my API key from Gravity Forms via WordPress. However, when I enter my Zoho Flow, it states: Gravity Forms says, 'You are not authorised to access the API." I tried recreating a new API key, but it is still not working.
    • Eventbrite Email Field in Zoho Flow Returns "Info Requested" Instead of Actual Email

      Hi Zoho team, I'm using Zoho Flow to connect Eventbrite with Zoho CRM. My goal is to automatically add event attendees as leads in Zoho CRM. I’ve set up the flow and mapped the ${trigger.profile_email}} field to the Email field in CRM. However, I'm running
    • "Invalid value passed for Product ID" Error in Zoho Flow "Create Sales Order" Node

      Hello Zoho Community, I’m facing an issue with Zoho Flow while trying to create a sales order in Zoho Inventory using the "Create Sales Order" node. Here’s a detailed explanation of my setup and the problem: What I’m Trying to Achieve I’m building an
    • Associating Project with an Account via Flow

      I'm using flow to create a Project based on a Deal status update using flow. The fields exist to pass the Account Name through properly, but when you view the Projects module in a CRM Account Record it doesn't automatically associate the new Project Record
    • How to follow up a member in a meeting?

      Hello, I make weekly meeting online with a lot of people. I want(I've been using calendly to do it). I want to do a follow-up to it. I want to send messages via Zoho-flow to all the member that participated in the meeting. How can I do it?
    • Setting Delays in Invoice Reminder Flow

      I am currently working on a flow that sends reminders for unpaid invoices. The flow is designed to delay actions until specific intervals before the due date: A reminder should be sent 7 days before the due date. A second reminder should be sent 3 days
    • Get Sales Orders Related to Inventory Item

      Dear Team, I'm just wondering if there is a way to get a list of all Sales Orders related to a specific Inventory Item. I did search all articles but couldn't find any article that could help.
    • Endpoint Central Cloud Asset Update from Fresh Service

      All, Does anyone use the asset management feature in Fresh Service? I'd like some help on building a flow to update asset attributes in Endpoint Central Cloud based off of an update to that same asset in Fresh Service. The trigger is "asset is updated"
    • Zoho Flow Export to Deluge

      It would be great to take a user built zoho flow and export the entire flow as a deluge script including having multiple connected applications (showing the API connections and webhooks) and different functionality in the other applications interacting
    • Action Iteration/Loop using Zoho Flow

      Trying to use Zoho Flow for automating following Context - A zoho form entry which has image upload field with upto 5 images setting and files are saved into Workdrive. After form is submitted need to create folder based on some fields and move files
    • Zoho Flow - Unable to evaluate formatDate with Zoho Invoice Date Field for Calendar Integration

      Hello Community, I'm trying to automate the creation of all-day events in Zoho Calendar whenever a new invoice is created in Zoho Invoice. I'm using Zoho Flow for this automation. My Goal: When an invoice is created with a specific "Event Date," I want
    • Zoho Inventory Sales Order Items

      I'm trying to build automation using Zoho Flow to add items to a Sales Order. In the automation options for both "create sales order" and "update sales order", The item ID is required. However, when I update the Sales Order, it's just replacing the item
    • Permissions for Azure Devops connection

      I am trying to set up a connection with our Azure DevOps org but it keeps giving me this error. On Azure I should be able to have admin-level access to everything. Can you please point me to which permission this is checking for so I can enable it?
    • Marketing Tip #1: Optimize item titles for SEO

      Your item title is the first thing both Google and shoppers notice. Instead of a generic “Leather Bag,” go for something detailed like “Handcrafted Leather Laptop Bag – Durable & Stylish.” This helps your items rank better in search results and instantly
    • Best way to start zoho inventory with bulk openning stock

      We are already using zoho book since long time for cars trading company. Now to streamline more, would like to import the excel data of closing stock of inventory to zoho inventory and to start on. Since we need to track each VIN (unique vehicle id number)
    • My IMAP mail suddenly stopped working

      On my iPhone and iPad, IMAP stopped working for my Zoho account with the error "User name or password incorrect" and "Invalid credentials failure" however I was able to access via web with the same credentials. Also stopped working on Apple Mail client.
    • Confused by the distiction between matched and categorized when reconciling a bank statement an how to

      I used to use quickbooks. In quickbooks, it was possible to use the check writing feature to add an expense that was on the bank statement that did not go through the AP and check writing process. I would write a check, assign it a number like etf (for
    • Next Page