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
WhatsApp Sandbox Integration
Dear Zoho Team, I am currently having two questions regarding the WhatsApp integration of Zoho Desk, or more specifically the Sandbox WhatsApp integration. 1. I am unable to send replies via the API through the "Sandbox" channel. Here is some example
Syncing with Google calendar, Tasks and Events
Is it possible to sync Zoho CRM calendar, task and events with Google Calendar's tasks and events. With the increasing adoption by many major tool suppliers to sync seamlessly with Google's offerings (for instance I use the excellent Any.do task planning
Showing ALL missing data
Hi, When I create a chart, I noticed that even when enabling the "show missing values" option, if, let's say, the current time period will not show as "0" on the chart if there's no data (rows) in the table. For example, I have this data: Week 1: 0 rows
Bulk Update API
I’m reaching out to see if anyone has updates on the bulk records feature release. We’re eager to leverage this functionality for our operations, but until it becomes available, our current API call limits are proving to be a bottleneck—even after upgrading
Email Integration - Zoho CRM - OAuth and IMAP
Hello, We are attempting to integrate our Microsoft 365 email with Zoho CRM. We are using the documentation at Email Configuration for IMAP and POP3 (zoho.com) We use Microsoft 365 and per their recommendations (and requirements) for secure email we have
Ask the Experts 18: Supercharge Self-Service: Simplify Support, Empower Customers!
Welcome to the Ask the Experts Session 18 focusing on Zoho Desk’s Self-Service features! With the AI buzzing around like busy bees, ever thought of how you can incorporate AI into Self service? Explore how Zoho Desk's Help Center, Knowledge Base (KB),
Zoho Books | Product updates | March 2025
Hello users, We have rolled out new updates in Zoho Books to enhance your accounting experience. These include the ability to create workflow rules for manual journals and Multi-Factor Authentication (MFA) for customer and vendor portals. Explore these
Set connection link name from variable in invokeurl
Hi, guys. How to set in parameter "connection" a variable, instead of a string. connectionLinkName = manager.get('connectionLinkName').toString(); response = invokeurl [ url :"https://www.googleapis.com/calendar/v3/freeBusy" type :POST parameters:requestParams.toString()
IMAP not working on iPhone or MAC
Suddenly all email servers have gone offline for IMAP on two different domains. Is there a reason ? Port 993
How to Add a Contact to a Campaign Using Deluge Script
Hi ZohoCommunity, I need help with adding a contact to a campaign in Zoho Campaigns using Deluge script. Specifically, I want to automatically add a contact to a campaign when the campaign name field in the contact information is filled. This field is
Not receiving Gmail confirmation email to send emails as Zoho account from Gmail
Hello! I'm having an issue with the "Send mail as" option on Gmail. I am not receiving the confirmation email on my Zoho Mail account. A few days ago, it worked, then it stopped, and now when I try to fix it, I simply don't receive the confirmation email
Match deposits with multiple invoice payments
I made a deposit of two customer payments (checks) so they both came in under the same deposit line through the bank account feed. How do I match this one deposit to two invoice payments?
There is no opton to download the Active User list in Zoho CRM Of users
There is no opton to download the Active User list in Zoho CRM of Users
HTML Email in Zoho Books
Is it possible to create custom html email template in zoho books.
Meta stops WhatsApp marketing messages to U.S. numbers: What this means for your business
Meta has always limited WhatsApp marketing messages based on user engagement with previously sent templates. Businesses may have repeatedly seen the error message “USER_MARKETING_TEMPLATE_LIMIT” when messages failed to deliver. Learn more about the restriction
Zoho Finance Limitations 2.0 #18: Can't Validate System Date Fields within Books (if empty)
Throughout books there are system date fields on Purchase Orders, Sales Orders, etc... You can run validation on these BUT ONLY based on the date entered... example: it must be X days after or before Y. However you can't validate the field is a user leaves
How Do I Refund a Customer Directly to Their Credit Card?
Hi, I use books to auto-charge my customers credit card. But when I create a credit note there doesn't seem to be a way to directly refund the amount back to their credit card. Is the only way to refund a credit note by doing it "offline" - or manually-
Bookings page very slow to load
I recently switched to Zoho bookings from calendly and yesterday I switched back. Zoho Bookings page was taking 7-23 seconds to load. We were losing paid clicks from Google because they had to wait too long. Does anyone have any suggestions?
Changing Color Theme of Guided Conversations
Hello, We have recently added Guided Conversations to one of our websites, but I am wondering if there is a way to customize the color scheme so it matches the appearance of the website? Thank you in advance!
Incident Report: Zoho Cliq Services Restored in the EU Region (March 19, 2025)
We received a report that the Zoho Cliq service in the EU region was down. It's been restored now. Our team is actively monitoring the issue, analyzing the root cause, and will share updates. Incident details: Date and Time: Mar 19, 2025, 11:44:24 AM
zet pack not working
We are using the zet pack command to package our Zoho extension. However, after running the command, the extension gets packed, but the resulting package is empty. We've attached a screenshot for reference. Could you please assist us with resolving this
Very slow Zoho Mail?
For the last week or so Zoho Mail seems to have starting functioning very slowly and having a few bugs. It's slow to open mails, slow to send, slow to change between email accounts. Sometimes clicking on a particular folder (eg Sent folder) stops working
Zoho Error: This Operation has been restricted. Please contact support-as@zohocorp.com for further details
Hello There, l tried to verify my domain (florindagoreti.com.br) and its shows this error: This Operation has been restricted. Please contact support-as@zohocorp.com for further details. Screenshot Given Below - please check what went wrong. Thanks
ERROR 554 5.1.8 Sender Address Blocked code(554)
We have an email with Zoho ( comercial@bruiser.com.br), but, when we try associate the account in GMAIL, the server shows this message: 554 5.1.8 Sender Address Blocked code(554) I see this error appear when the limits of returns exceded 10 messages,
Dashboard tabs - last month relative
Hello, On my dashboard, it has "last month relative" under some tabs such as deals created, for example, highlighting if it has increased or decreased from last month. Is it possible to add this feature onto the other tabs? There are a handful which don't
Disappearing Mouse cursor in Zoho Mail / Windows 11 (Chrome + Edge)
I'm seeing an issue when writing mails with the light theme with the mouse cursor being white and the document area also being white - making it nearly impossible to see the mouse cursor. I see the problem on Windows 11 under Chrome and Edge. (Yet to
Best way to handle email sharing in CRM for safety
Hello :) We have CRM+ and are configuring email sharing. We have gone for the public sharing with blocked domains for our company emails, and other companies who may email with private information. We have some contacts in the business who have a normal
Zoho Flow and Slack emojis
Anyone have an luck with using slack emojis in zoho flow? When I send :smile: in zoho flow to slack, the message just says ':smile:' the mentions '@user' don't resolve either.
Urgent: Server Error & Broken Files in MS Office
Hi, We have attempted to reach you multiple times via chat, email, and this platform but have not received a response. We are experiencing the following issues: When opening a document for editing, we receive a "server error" message (see attached screenshot).
No special characters on Brand's name.
Our brand is called Haber's and we can't add that name because of the " ' " please allow special characters on brand's name.
setting owner of note when adding via deluge
My organization has requested the ability to mass update the notes related list in the deals module. Since this can't be done with the mass update feature, I created an update "notes single" line field and created a workflow rule that triggers a function
Approver
I noticed that this year, the leave approver for all employees has been changed to the portal admin. How can I revert this and set myself as the approver again, as I was previously?
Recurring Bookings
Will Zoho Bookings ever offer an option to the customer to schedule recurring meetings (unlimited) for the same days/times? Making a client schedule the same days/times for an entire month is a tedious process. I'd like to offer the option upfront to
How do we add Google Analytics code to Zoho Bookings scheduling pages or the thank you page?
We need to track user activity on individual Bookings' pages and/or the thank you pages? How do we do this?
Add Image Upload Field to Zoho Bookings Registration Form
Hi, We would like to request the addition of an image upload field to the Zoho Bookings registration form. Currently, Zoho Bookings only supports text-based fields (e.g., Single Line, Multi-Line, Email, Checkbox, Dropdown, Radio Button, and Date), but
Bookings duration - days
Hi team, Is there any way to setup services/bookings that span multiple days? I am using Zoho Bookings for meeting room bookings. Clients may wish to book a room for more than one day, for up to a month. If not, is there a plan to allow services to be setup with durations of Days as well as hours and minutes? Many thanks, Anna.
Bookings Sync with Zoho Calendar Breaks Again and Again
I have documented notes since June 2019! The sync between Bookings and Zoho Calendar continues to break at random times. We are nearly 3 years later and still have sync problems pop up randomly! As I type, it's broken again. I have been a stubborn client
Can't Reschedule appointments
Hi, I am attempting to reschedule all appointments for this week from one Trainer to another. I have made sure the time is available in the Trainers calendar we are moving the appointments to but whenever I go to reschedule the appointment it still comes up saying the trainer has no available time at all this week. The next appointment is Wednesday 11am so need to get it switched over ASAP!! Thanks
Zoho Bookings: How to set a limit for maximum bookings per day?
Let's say I have 1 hour slots OPEN for an entire day. What if I want all of the OPEN slots to turn OFF if/when I hit a certain number of total bookings for that day? I usually only want a total of 5 appointments to be booked but I'm not sure of the exact
Calendar view - All-day with date-time fields
Hi friends, I have a calendar view that is showing records based on e.g. start-time and end-time, both of datatype date-time. I couldn't figure out of to show "all day records" in the all-day section of the weekly and daily views. Trying to set start-time/end-time to e.g. 15-10-2012 00:00:00 was not helpful. What else should I try please? Kind regards, Idan
Next Page