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
What is the esacalation email for Zoho Support/ Zoho One/ Zoho Workplace ?
Hello, My business has been stalled due to Zoho duplicating workdrive with switching on zoho one trial. There are two workdrives - one with my files mapped to workplace and one empty mapped to zoho one.-- integrationg programs are super consfused and
How to show Assemblies AND component items in a report
Hi Is there any way in Analytics to create a report that shows the Composite Item AND the Component Items with mapped quantity? It seems that the component item is not exposed in any table that I can find. Also, the same question but for Stock on Hand.....this
How can I use the API to add a drop-shipping address to a sales order for one-time use?
I need to be able to add a drop-shipping address for one-time use to a sales order via the API. Adding every such address to the contact (customer), then feeding the shippingaddress_id into the sales order, is not an acceptable approach; we have some
Mass Update Option for Changing Work Order Owner
Hello FSM Team/Mr. Abid, We would like to inquire if there is an option to mass update or bulk change the Owner of Work Orders in Zoho FSM. Current Situation: At the moment, the Owner of a Work Order can only be changed individually, which becomes time-consuming
Make and receive calls from Bigin's Android app
Hello everyone! We're happy to announce that Bigin's Android app (version 2.0.0) now supports built-in telephony, RingCentral, and Zoho Voice, all of which enable users to make and receive calls from the Bigin app. You can only configure the telephony
Account Watchlist: Order of accounts in the watchlist
Is there a way we can sort the order in which accounts are shown in the accounts watchlist in Zoho Books dashboard?
GST composition scheme dealer - treatment for client expenses reimbursement
Hello, I am new to GST and need your help. I am registered as a composition dealer and attract 6% gst charges. In bill of supply, there are also expenses done on behalf of client for which I seek reimbursement AT ACTUAL with NO MARKUP. As I understand,
Zoho Books: tax is not automatically pulled from product-data anymore - why?
Hi, until a short time ago, you could set a default taxrate for each product/item. This taxrate automatically appeared each time the item was chosen in an invoice or quote. Why does this not work anymore? The field is still there at the product record,
Kaizen #237 - Zoho CRM APIs: GraphQL & COQL- When to use which?
Hello everyone, Welcome to another week of Kaizen. This Kaizen post discusses Zoho CRM GraphQL APIs and COQL APIs and is meant to be a decision guide on selecting between them. It aims to help developers to choose the most efficient approach in different
Deluge Update Function
I am struggling to get this function to work no matter what changes I make - this is the constant error (my code is 30 lines long): Data type of the argument of the function 'get' did not match the required data type of '[BIGINT]'at lineNumber 31 I am
Option to Convert Request to a Specific Work Order (Parent WO Linking)
Hello FSM Team/Mr. Abid, We would like to inquire if it is possible to convert a Request into a specific existing Work Order (as a child or linked Work Order) instead of always creating a new one. Context: An inspection/emergency Work Order is completed
Automation of CRM Items to FSM Work Order (Parts Section)
Hello FSM Team, We would like to inquire about the possibility of automating the transfer of item details from CRM to FSM Work Orders (Parts section), specifically for LPO WO Job type. Currently, in CRM, we have detailed item information including: 1.
Introducing Product Catalog in Bigin
Greetings, I hope all of you are doing well. For many small businesses, sharing products and collecting customer interest often involves multiple tools, manual follow-ups, or even building a full ecommerce website. To address this challenge, we're excited
Creating a stakeholder register for a Project
Should we connect and/or associate Projects to Contacts to build a stakeholder register? If a Contact is associated to more than one Project and has different roles across the Projects, what is the best way to parse this information?
Displaying Rate Inclusive of GST per unit
Hello, Currently when I enter the pricing of a line item it shows the overall amount (price including tax * quantity). I would like to see price/unit inclusive of GST. Is there any way to simplify this and to be able to view it? I've attached my current
Allow Zia Agents using Zoho One Account
When I went to try Zia Agents, it forced the creation of a new, separate account. This seems counter-intuitive to me. I don't want to manage a separate account. Plus, aren't Zoho One users the ones most likely to adopt Zia Agents most quickly? It seems
Adding Custom Status Options in Work Order Action Menu
Hello FSM Team, We would like to inquire if it is possible to add more custom options in the Work Order action/status dropdown (e.g., Cancel, Terminate, Non-Billable, Void, etc.). Currently, the available options are limited, and we are unable to customize
商談の特定ステージ選択時に、集計項目の入力を必須化したい
こんにちは。Zoho CRMの商談管理で以下を実現したいです。レイアウトルールでは、集計項目を条件に選択できず実現できておりません。よい方法があればご教示いただけると嬉しいです。 ■やりたいこと 商談で特定のステージに変更する場合に、特定の集計項目(同じ商談データ内の項目。以降、集計項目Aとする)を入力必須化したい。 ■概要、状況 ・集計項目Aは、別のオブジェクトで、商談に関連する月ごとの売上を集計している数値項目 ・見積を顧客に提示した際に、集計項目Aに見積金額と一致するようにデータ登録する運用をしている
How do I change the account bank charges are charged to?
I want bank charges charged to my Credit Card Fees account. Is there a way to do this?
Feature Request: Estimated Delivery Date Display on Product Pages
Dear Zoho Commerce Support Team I am writing to submit a feature request that I believe would greatly benefit all Zoho Commerce merchants: the ability to display an estimated delivery date directly on the product page. Today's e-commerce customers expect
Automated Sales Order Fulfillment Based on Inventory Availability (Allocation / Commitment Modes)
Hi everyone, I recently reached out to Zoho Inventory support regarding a workflow challenge and wanted to share both the issue and their response here for visibility. Zoho confirmed: “Zoho Inventory does not currently support automatic notifications
Set Mandatory Lookup Fields in Ticket Layout
I added a custom module called 'Site' in the desk. I also added a lookup field 'Site' in the ticket layout. Now, I want the 'Site' field to be mandatory in the blueprint transition. How can I do that?
Properly Capture Dropdowns & Hover Elements When Recording a Window/Tab
Hi Zoho WorkDrive Team, Hope you are doing great. We encountered a limitation when recording a selected window or browser tab: Certain UI elements, such as dropdown lists, hover menus, and overlays, are not captured unless we record the entire screen.
Followed Tickets view
Hello, following a ticket makes no sense at all / offers no additional value.... Of course I can install and use the add-on My Followed Tickets for Zoho Desk, but what does it do for me? Not much! It cannot be used across departments! The range of functions
Make Module Name In CRM 4 Everyone A link To List View.
I've been using the new UI for a little while now and I have what I think is a simple suggestion that would add speed and ease to the UI At the top of the detail page for a module entry you show the module name as shown in the screenshot - if that could
Can Zoho CRM Emails be used in Zoho Analytics in any capacity?
We're wanting to display details about Lead Activity in regular reports through Zoho Analytics but we're having difficulty integrating Emails at all. We'd like to be able to note when an email is received and when it is sent somewhere other than just
User can import contacts into Campaign even without permission
Hi everyone! We have a role that's configured with "Import records: Calls" only, but when a user with that role enters a Campaign, the "Contacts" section shows a "Import contacts" button. Is this expected?
Allow moving closed Issues between Zoho Projects without reopening them
Hello Zoho Projects Team, We hope you are doing well. We would like to submit a feature request regarding moving closed Issues between projects in Zoho Projects. Current Limitation: As of now, Zoho Projects allows users to move closed Tasks between projects,
Accept credit card payment for multiple invoices
We have a problem with Zoho Books. While we can charge a customer's credit card for an individual customer invoice, we cannot charge a customer's credit card for more than one invoice. In our business, it is common for a client to phone up and say, "Here
Zoho Books | Product updates | February 2026
Hello users, We’ve rolled out new features and enhancements in Zoho Books. From Advanced Reporting Tags to the ability to mark projects as completed, explore the latest updates designed to improve your bookkeeping experience. Introducing Advanced Reporting
How is Covid affecting the 2021 Super Bowl Commercials
Super Bowl, the annual championship game of the National Football league, USA has an incredible viewer base of 100 million viewers on an average and is also one of the most-watched television broadcasts in the USA of all time. Nine out of ten Americans
Columns with no data still displayed despite "Show missing values" disabled
I have a table with missing data, but columns are still being displayed even though the "Show missing values" option is disabled. The table contains 3 columns split across 12 months. I suspect the issue is caused by one of the columns using an aggregation
How do I automate my package and shipment process
Hey, I have a very basic problem regarding automating my package and shipment. My business does not require me to have those modules and manage them currently and since I'm new to zoho I want to start with just the basics. I just need to automatically
Accounts Receivable Balances Differs in Balance Sheet, Customer Balance Report, AR Ageing Summary, and AR Ageing Details.
Hello Zoho Accounts Receivable Balances Differs in Balance Sheet, Customer Balance Report, AR Ageing Summary, and AR Ageing Details. Please clarify and fix the issues here. Thanks
Zoho Books Inter-company integration
We have an Indian parent entity, and its accounting is managed in Zoho Books. We also have a subsidiary company in Dubai under the same parent entity, for which we have procured a separate Zoho Books license. I want to understand whether Zoho supports
Not able to import transactions from Razorpay
Hi, tried implementing Razorpay integration with books,also added a webhook, but while this added a razorpay clearing account it does not have any data in it. Neither is it getting updated with new transactions happening on Razorpay. This problem is compounded
**Building Role-Appropriate Accountability Layers in Zoho Projects - Looking for Real-World Experience**
We're a small ISP/telecom operator on Zoho One and I'm trying to solve what I think is a common organizational problem. Would love to hear from others who've tackled it. **The Core Problem** Staff will only consistently use a project management system
Zoho Social API for generating draft posts from a third-party app ?
Hello everyone, I hope you are all well. I have a question regarding Zoho Social. I am developing an application that generates social media posts, and I would like to be able to incorporate a feature that allows saving these posts as drafts in Zoho Social.
Choosing the Right Automation in Zoho Projects
In any project, different types of actions are needed at different points. Some projects require control on how tasks move, some require reacting to updates, and some require executing additional actions beyond the task. Automation in Zoho Projects is
Ignroe_filtrers and drill through
I have two charts, where one is connected to the other using drill-through. The issue is with the second chart (the drill-through target). It contains an aggregation formula that uses the ignore_filters function. Under normal conditions, the formula works
Next Page