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
Zia Emails Summary: Instant context from past emails
Hello all, Reading all of the past emails associated with a specific record can be tedious, which in turn makes it difficult to understand the context quickly, as these messages often include irrelevant details that waste time. This is true for everyone
Custom Display Field for Lookup Dropdowns in Zoho CRM
Could Zoho CRM support changing the display field in lookup dropdowns, like Zoho Creator does? This would make it much easier to select the right record by showing a more useful field instead of only the default one. It would improve speed, clarity, and
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
Next Page