This data storage concept enables you to store data related to your extension for both entity properties and extension properties.
Scenario
Let's say that as a developer you want to gather feedback/reviews through your extension. In general, reviews and feedback help you gain insights into users' perspectives.
When designing a review/feedback template, using a standard question with predefined options will restrict the feedback/review process to certain specific standards/requirements. However, your clients may use Zoho Projects to manage a variety of businesses, each with its own set of processes tailored to the needs of that company.
What can you do to standardize and streamline this process for all clients?
It would be beneficial to create a standard feedback/review template for your customers and then enable them to customize the question and its options to meet their own company feedback requirements.
Goal: Create a generic feedback/review template that enables clients to provide their personalized inputs to customize the review/feedback question per their company needs.
Solution
To accomplish this goal, we'll incorporate both entity and app data storage—as well as a few other capabilities—into our extension. Let's look at the features and steps we'll be taking to develop this example.
- First, we must gather the question and options that the user wants for their feedback/review form. To accomplish this, we can create a bottom navigation bar widget called "Feedback or Review template settings" that enables the user to provide their personalized feedback/review question along with its options as input. We can accomplish this using the widgets approach explained earlier in this post.
- Next, we must save the values the user provides for the question and options. We can accomplish this by using the data storage extension properties, which will store the data and make it available across the app/extension. (Now that we have the values stored for the entire extension/app, we can retrieve the data and access it across the necessary entities.)
- In our example, we want to collect feedback/reviews from users for the tasks and issues entities. For this, we can create a widget called "Feedback or Review" in the details page of the task and issue entities, respectively.
- In this widget, we must populate the question with the options the user previously provided as part of the "Feedback or Review template settings" widget. We can accomplish this by retrieving the previously saved details and displaying them in the relevant entities (tasks and issues, in our example).
- Once we've displayed the question and options to the user, they can select an option to provide feedback or a review for the entity they're working on.
- Furthermore, we can save the user's option selection and associate it with the entity. This will enable us to display the previously selected option for that question each time the user accesses the "Feedback or Review" widget, which we can accomplish using the data storage-entity properties concept.
Required components
- An extension configuration process includes the following:
- Creating an extension.
- Configuring the plugin manifest.
- Setting up the widget code.
- Bottom navigation bar widget (top_band): Enables the user to input their customized values for the feedback/review template's question and its options.
- Task details tab widget (task_tab)/Issue details tab (issue_tab): Enables us to fetch and display the value the user enters for the feedback/review template in the respective entities.
Let's explore these components now.
Extension configuration
Plugin-manifest.json configuration: Once we created the extension, we configured the plugin-manifest.json file to include the widgets. For a more detailed understanding of how to configure the plugin-manifest.json file,
refer to our earlier post.
For our extension use case, the plugin-manifest.json file is configured as shown in the screenshot below.
Note: We'll have to set the storage key to true in order for storage space to be allocated in the Zoho Projects product for this extension. By default, the value will be false.
Setting up the widget code
Now that we've set up the other components, let's move on to writing our widget code and incorporating the data storage feature.
Feedback or Review template settings widget (Bottom navigation bar - top_band) - Enables us to gather personalized user input for the feedback/review template. Please find the index.html code snippet attached in the post.
- In the code snippet above for the bottom navigation bar widget, the user is presented with two text boxes: one for entering their customized question for feedback/review and the other for entering their customized options, each separated by a comma.
➤ The
app.store method in the extension properties is used to store this data against the extension in the form of key-value pairs.
➤ The values for the question and options are constructed as a JSON object and then stored against the key "storedappvalue" using the app.store method.
Note: For user-entered options separated by a comma, these options are converted to an array using the split() method, with the comma serving as the criteria, and then stored against the key.
➤ Finally, when the values are successfully stored after clicking the Add button, the
zohoprojects.invoke method is used, and the user is notified with the alert "Data added".

- Additionally, every time this widget loads, the data stored at the app level in the key "storedappvalue" is obtained using the app.retrieve method.
- From this retrieved value, any previously stored data against the key "storedappvalue" is removed using the app.remove method.
- This is done because whenever a user wishes to change their feedback/review question and options, the new data will be added and stored against the key as well. Since we require the newly entered values to be displayed as part of our "Feedback or Review" widget in the tasks and issues entities, the previously stored data is removed, and the new values entered are stored against the key upon clicking on the Add button.
Feedback or Review widget (task details tab - task_tab) - Displays the feedback question and options and enables the user to provide feedback for the entity they're working on. Please find the Taskfeedback.html code snippet attached in the post.
- In the code snippet above—for task/issue details tab—we're first retrieving the value stored against the extension (in the bottom-band navigation bar) by invoking the app.retrieve method using the key "storedappvalue".
- From this retrieved value, we fetch the question and its options. The options for the question are displayed in the widget in radio button format, which enables the user to choose one option for the feedback/review question.
- Once the user chooses an option and clicks the Save button, the data is saved using the entity properties in data storage feature.
➤ Here, the selected review option (selectedreview) value and its index position (selectedoptionnumber) in the radio button element are stored using the
entity.store method. We use entity storage here since this value chosen is specific to the entity the user is working on.
- Every time the widget loads, the chosen value stored using the entity.store method is retrieved using the entity.retrieve method and checked against the radio element options. This allows the chosen value to be enabled and displayed to the user every time the widget loads.
We can use the same snippet across the issue entity as well.
Now that we've completed the setup for both the widgets and have all the extension components ready, let's go ahead and see the output.
Sample output:
This example demonstrates how to efficiently use data storage for extension properties. The data stored against an extension/app can be retrieved across multiple entities to perform logical functions. Additionally, in this example, we also witnessed code reusability across multiple entities. You may enhance this example by incorporating more than one feedback/review question.
In this way, you can use extension properties to store data across an extension/app. We hope you found this information useful. Follow this space for more insights!
SEE ALSO
Recent Topics
Months of WooCommerce–Zoho Inventory sync failures and repeated support requests – has anyone experienced this?
Months of WooCommerce–Zoho Inventory sync failures and repeated support requests – has anyone experienced this? I run a small retail business using WooCommerce and Zoho One. For months, I have been trying to resolve recurring synchronisation failures
Function #24: Automatically display deal name from Zoho CRM on quotes in Zoho Books
Deals allow businesses to organize and visualize their sales pipeline. This provides a clear overview of all potential opportunities and helps in making informed decisions. Zoho CRM empowers you to create deals or potentials for your clients and monitor
Lookups and Custom Modules
I created a Custom Module that I'm calling "Item Purchasing Group". This module will store information for groups of Items that must be purchased together (including minimum overall quantities and/or values, etc.). This will have a one-to-many relationship
Changing an existing item to different accounts & inventory-tracked
Hi everyone, I have an item in Zoho Books that was originally set up as a non-inventory item. Over time, I associated it with different sales and purchase accounts, and I now have many invoices, bills, and reports that use this item. My business process
Address limits per customer by edition
I’m on the Standard edition and have reached a limit of 30 addresses under a single customer. Before I move to an annual Professional subscription, I need to confirm the following: What is the maximum number of addresses allowed under one contact, and
Zoho Books | Product updates | October 2026
Hello users, October brings a range of new features and enhancements to Zoho Books, designed to simplify compliance, streamline accounting workflows, and improve inventory management. From the launch of the Nigeria Edition and France’s e-invoicing capabilities
Create custom rollup summary fields in Zoho CRM
Hello everyone, In Zoho CRM, rollup summary fields have been essential tools for summarizing data across related records and enabling users to gain quick insights without having to jump across modules. Previously, only predefined summary functions were
Button or Links order
Is there a way to re-order the buttons or links that are created? Moderation Update: With our recent enhancement to custom button creation from the layout editor, administrators can now reorder custom buttons directly from the layout editor, and this
Zoho Books | Product updates | August 2026
Hello users, July has been an exciting month for Zoho Books! This month, we're excited to introduce HTML PDF Templates, Placeholders as Pills, expanded approval workflows for Sales Returns and Journals, and significant compliance updates across the India,
Bulk updating tags
My organisation handles a number of restricted funds. We previously did this by having a chart of accounts where each restricted fund has its own income and expense accounts. However, our accountant changed this, moving all transactions into accounts
How to Convert Emails to PDF Format in Batch
It is helpful to convert emails into PDF format when you want to save important messages, when you need to share business correspondence, or when you wish to keep email records for future reference. PDF files can be readily opened, printed, and shared
Download or Backup Bulk Emails from IMAP Server
Taking email messages from an IMAP server and saving them is a wise method for ensuring that important emails are kept safe and easy to access. No matter whether you have a business email address or a personal mailbox, keeping a local copy of your emails
Zoho Writer Label Template Merge/Print Via API/Webhook/Flow
Short version of goal: To be able to kick off a Zoho Writer Label Template Document via API or Webhook or even using Zoho Flow. As of right now I have been unable to figure out a way to do that. Long version of goal: We would like to press a button (run
Kaizen #263: Using Zoho CRM Skill to Build Widgets
Hello everyone! Welcome back to another exciting Kaizen post. In the previous Kaizen posts, we introduced the zoho-crm skill.md and explored how it can help with Zoho CRM APIs, Client Scripts, complex COQL queries, and Skill to build Queries. In this
Zoho notebook No login
Hello Team, I recently downloaded and installed the latest version of zoho notebook for windows. But I am not able to login without providing any sso or email address. Did you removed the no login feature for this app? This is just a windows app. can
Search is completely broken for PC
I go to note, try to search for "mtga" and it shows 702 results (it's a big note), highlights all letters "m" and I can't find anything. Same for "gathering" - it thinkgs I think only for "g". Looking for "zoho" shows as if I searched only for "z". Using
Losing description after merging tickets
Hello, We merge tickets when they are about the same topic from the same client. It happens sometimes. We recently noticed that after the merger only the description from the master ticket is left in a thread. And the slave-ticket description is erased.
Behind a great customer experience is a team
Hi everyone, October is here, and the first week marks the Customer service week. Each year, we thank our customer service professionals. Service professionals are all around us, even in our own workplaces: They handle essential administrative work like
What's New - August and September 2026 | Zoho Backstage
Hello everyone, August and September bring a fresh wave of intelligence to Zoho Backstage. AI takes the spotlight with tools that help you create content, support attendees, and manage how AI fits into your events. Alongside AI, we’ve refined email communication,
Images Not Displaying Properly in Zoho Desk
Hi, We are experiencing an issue with image rendering in Zoho Desk, affecting both incoming and outgoing emails. Images embedded in email conversations are not displaying properly. Instead, we see broken image icons or empty placeholders where the images
Announcing the new SKILL.md for Zoho CRM and the updated OAS repository!
We are introducing a new zoho-crm skill to make working with Zoho CRM Developer tools (like APIs, functions, widgets, client scripts, queries etc) easier and faster, with the help of AI in your preferred AI harness like Claude Code, Codex, Cursor, VSCode
Widget Height were destroyed
All widget heights in the Details Canvas view are broken. Moderation Update: This is a known issue with widget heights in Client Script popups and flyouts. A fix is in progress, and this post will be updated once it's released.
Zoho Projects - Has something changed regarding to linking Projects and Deals via the API?
I am trying to link Zoho Projects to Deals in CRM using the API, but each time, the Deal Contact is added as a Client user and receives an email invite asking them to join the organisation. These are internal projects and the customer should not have
How long does it take to review campaigns?
Hello Zoho, i scheduled my campaigns yesterday afternoon and it has been under review for over how many hours and those campaigns were supposed to be out yesterday so new ones can go out today. Is there something i'm doing wrong?
Convert MSG to PDF in Bulk with Attachment Free
Microsoft Outlook saves each email as an MSG file, keeping with it key information like the sender, the recipient, the subject, the date, the body of the message, and any attachments. It can, however, be quite difficult to access a large number of MSG
Using Mail Merge Template to Print Documents with One Subform Record's Fields per Document
Hello, We have a Mail Merge template created in Zoho Writer which is not able to perform the functionality which is currently required to automate the documentation task portion of our process. The CRM module we are primarily using is based on a "Loans"
Convert MBOX to PST File Using Free Methods
MBOX is a mailbox format that is used by various email clients and services, such as Thunderbird, Apple Mail, Eudora, and Google Takeout. Yet, in order to be able to open your MBOX emails in Microsoft Outlook, you have to convert them from MBOX to PST
Zoho Community Digest - September 2026 | Part 4
Hi everyone, and welcome back! The final week of September brought a revamped Books integration in Zoho CRM and Zoho Key Service for LLM access without API keys, Zoho Creator's audit trail becoming a full enterprise-grade auditing system, and Zoho One
Automate weekly reports from Channels | Zoho Cliq AI use case #01
Scrolling endlessly through numerous threads in a Cliq channel and manually counting how many have been closed, how long people took to reply, and who actually participated can be tedious. After 20 minutes, you might have a number that no one can verify.
Apple Mail to Outlook Converter - Export Apple Mac Mail to PST File
Apple Mail is a well-known email application among people who use Macs, whereas Microsoft Outlook is widely employed for both personal and business use. Should you decide to move from Apple Mail to Outlook, you'll probably need to transfer your mailbox
Creator -Dynamic addition of Customer Portal User Licenses
Hi, We have a Creator App for B2C about to get released. We are experiencing the Portal User license challenge. Unable to predict the number of users who will download and Subscribe. When a User is about Subscribe and the portal licenses does not exists,
Zoho Tables is now part of Zoho One!
Hey everyone! We've got some exciting news to share. Zoho Tables is now included in your Zoho One subscription at no extra cost. If you're already on Zoho One, head to your app list, add Zoho Tables, and get started right away. You don't need a separate
How to import PST files in Office 365?
You can import PST files into Office 365 using native Outlook applications, the Microsoft Purview network upload method, or specialized third-party migration tools. Choosing the right method depends on whether you are migrating a single mailbox or executing
[Webinar] Zoho CommunitySpaces MCP
New to MCP, or just exploring what's possible? Join us for a webinar on Zoho MCP and your community. We'll show you how Zoho CommunitySpaces and Zoho MCP work together, what your AI co-host can do inside your community, and how to get started. Register
Solution to Import OST File into Office 365.
In today’s digital workplace, organizations are rapidly moving toward cloud-based email systems for better flexibility, security, and collaboration. Microsoft 365 has become one of the most widely used platforms for business communication. A common requirement
How can I show an uploaded image larger/full size in a Zoho Forms response PDF?
Hi, I noticed that in a response PDF for Forms, the uploaded image is shown in a tiny box as seen in my screenshot. Is there any way I can make that appear larger in the response PDF? thanks.
Live connection to DS files in Zoho Creator / ChatGPT
As an idea, we are using ChatGPT to build with Zoho Creator (outside of Zia), which is works brilliantly to assist write deluge, provide test suggesitons etc. Currently we are uploading the DS files which are very point in time, it would be great to have
Meet PageHealth by Zoho PageSense: a free way to find out what's holding your page back
We all know the feeling. You've spent days tweaking headlines, moving buttons, and rewriting copy, and you're still not sure why visitors aren't sticking around. Revamping your website is hard, and figuring out what's actually getting in the way is even
Export Exchange Online Archive Mailboxes to PST for Microsft 365 Users
With Microsoft 365 it is possible to archive older emails in Exchange Online in order to keep the main mailbox tidy. If however you need to export the archived emails to a PST file for the purposes of backup, migration, compliance or for use offline,
Task Module quick create settings
Hello, requesting the Task module receive a quick create customization settings. We have added custom fields and have to select "More fields" at the bottom of the pop-up to access the custom fields.
Next Page