Building extensions #10: Fetch customized user inputs, store them globally at the app level, and access them across entities

Building extensions #10: Fetch customized user inputs, store them globally at the app level, and access them across entities

This data storage concept enables you to store data related to your extension for both entity properties and extension properties.

In our previous piece, we looked at how to store data for entities using entity properties. In this post, we'll look at an example of using extension properties effectively. Extension properties enable you to record data for an app in its entirety. Refer to this article on the limitations of extension properties for additional details.

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

Extension creation: We've created a new extension for Zoho Projects. Learn more about the steps to create an extension.
                                                                  

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!

Sign up for a Zoho Developer account and start developing extensions for Zoho Projects using Sigma.

SEE ALSO




      Zoho Campaigns Resources


        • Desk Community Learning Series


        • Digest


        • Functions


        • Meetups


        • Kbase


        • Resources


        • Glossary


        • Desk Marketplace


        • MVP Corner


        • Word of the Day


        • Ask the Experts


          Zoho CRM Plus Resources

            Zoho Books Resources


              Zoho Subscriptions Resources

                Zoho Projects Resources


                  Zoho Sprints Resources


                    Zoho Orchestly Resources


                      Zoho Creator Resources


                        Zoho WorkDrive Resources



                          Zoho CRM Resources

                          • CRM Community Learning Series

                            CRM Community Learning Series


                          • Tips

                            Tips

                          • Functions

                            Functions

                          • Meetups

                            Meetups

                          • Kbase

                            Kbase

                          • Resources

                            Resources

                          • Digest

                            Digest

                          • CRM Marketplace

                            CRM Marketplace

                          • MVP Corner

                            MVP Corner




                            Zoho Writer Writer

                            Get Started. Write Away!

                            Writer is a powerful online word processor, designed for collaborative work.

                              Zoho CRM コンテンツ


                                ご検討中の方

                                  • Recent Topics

                                  • New in Zoho CRM: Pre-fill Public Forms with CRM Data

                                    Public forms just got more flexible! With the new Pre-fill Public Forms with CRM Data option in the Zoho Forms integration, people filling out your public forms can search for a CRM record, select the right one, and have the form automatically populate
                                  • HEIC File Type Viewer

                                    Hi, It would be nice to be able to click on the images in the All Entries/Reports Tables which are HEIC the same as JPG, PNG, etc. so they open in a viewer from Zoho or the Attachment Service, today HEIC requires you to download each image and open it
                                  • 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
                                  • Specific ListView Canvas on Canvas Home Page Always Loads Most Recent ListView, Not the One Specified

                                    I had mentioned this to ZOHO, but I mainly wanted to see if others in the Community are also facing this problem. I created a Canvas ListView for a Custom Module, and then created a Canvas Home page (technically on a tab item, but I'm not sure if that
                                  • print preview

                                    We are using microsoft edge, till 12 sep we were getting directly print option. Now we are getting this preview option we have to click print option again. How to bypass this-preview option?
                                  • 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
                                  • Connection into Cliq?

                                    I have the SalesIQ chat widget on my site using the Zohobot but I'm not always on and my employees don't keep it open all the time. We do have Cliq open all the time though so I'd love a way to manage those discussions directly in Cliq as they come in.
                                  • Kaizen #264 - Using zoho-crm Skill to Write Functions

                                    Hello CRM wizards, Welcome back to another week of Kaizen. In our previous Kaizens, we explored how the zoho-crm skill can assist you across various Zoho CRM developer tools. This time, let us see how it can help you write Deluge Functions, from simple
                                  • Edit Pinned Comments in Zoho Desk

                                    It's great that private comments can now be pinned to the top of the ticket but what would be extremely helpful would be to allow for the pinned comment to be edited vs. having to find the comment in the ticket to edit it.
                                  • Recover accidentally deleted mail account

                                    Email account was accidentally deleted from admin console. 
                                  • mail sent to gmail goes directly to spam

                                    Hi TKIM and SPF are configured and verified. E-mails coming from zoho to my personal gmail account are going directly to the spam folder. How can I solve this? I can send you guys the headers privately if you need to.
                                  • Shopify Integration: How do I change the default Unit of Measure from KG to PCS

                                    For those using Shopify with Zoho Inventory, has anyone managed to have imported items default to PCS/EA instead of KG? If so, where is this configured? I can only find weight units in Shopify, not a sales unit of measure.
                                  • flexible subscription plan

                                    Greetings! We currently have 5 Standard plans, but would like to add 5 mail-lite one just to receive emails (do not need other business features or storage. As Super Admin, I tried to do that my self but didnt see the option on your sales platform. Please
                                  • mail

                                    We want our tracked links in campaign and journey emails to use our own domain instead of the shared maillist-manage.net domain. We have already created the CNAME links.rexven.com → customer-campaign.zoho.com (DNS only). Does our plan support a custom
                                  • Useless support and impossible to add users for whom I paid for

                                    Over a week ago i signed up for 5 emails addresses and 10GB, and so far I only have 1 email working, no access to the dashboard. Remote connection with "support"....useless Screen grabs sent to "support" useless Messages to "support"... now not answering
                                  • Mr

                                    can't access my email
                                  • Reduce Mail Lite Renewal from 2 licenses to 1

                                    Hello Zoho Support, I have a Mail Lite 5GB subscription with 2 licenses. have deleted the unused user, and now only 1 user/license is being used. My subscription is due for renewal, but the renewal page still shows 2 licenses and does not give me an option
                                  • Adding additional records dynamically to a subset of fields

                                    I'm trying to create a service ticket layout which will be passed to a Creator application for Field Service Management (FSM) purposes. We need to be able to define a specific subset of service product fields such as "Service Product", "Service Product Serial Number", "Service Product Warranty End Date" and "Service Product Current Warranty Status". We may need to record more than one of these subsets, in case the customer has more than one product which has to be serviced on their site. It seems
                                  • Push error with Zoho Books and Zoho CRM

                                    I have successfully linked Books and CRM but I have some push errors with the following message: "The customer associated to this record is not linked to module chosen in the current contact sync configuration." I am unable to work this out, could you help please.
                                  • 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
                                  • {"code":57,"message":"You are not authorized to perform this operation"}

                                    In my trial version of Zoho account, I am trying to integrate Zoho CRM Contact Module with Zoho books but when i call API it gives such type of error {"code":57,"message":"You are not authorized to perform this operation"}. I am using refreshed token
                                  • Allow widgets to be placed between native sections in the Ticket Properties panel

                                    One of our biggest frustrations with the Tickets module is how rigid the Ticket Properties panel is. Every section there is built only from native Zoho Desk fields. We can add sections, rearrange fields, and pick layouts, but we can’t put anything custom
                                  • #13 Understanding Your Zoho Invoice Limits

                                    Ravi's busiest month was also the month his invoicing stopped working. He had been using Zoho Invoice comfortably for months. Then, just when business picked up, he hit a limit he hadn't expected. The problem wasn't that he had missed a payment or forgotten
                                  • Map Dependency Upgrades in Zoho CRM

                                    Map Dependency Fields enhancements are now available across all DCs. Hello everyone, We’ve introduced a set of enhancements to Map Dependency Fields to make setup simpler, faster, and more intuitive. Map Dependency helps control how values appear across
                                  • How to Allocate Incoming Purchase Stock to Specific Sales Orders in Zoho Inventory?

                                    Hi all, We are using Zoho One Enterprise and need guidance on managing sales order–wise allocation of incoming stock in Zoho Inventory. Our workflow is: A customer order is received, and the Sales Order is confirmed. The sales team immediately creates
                                  • How to disable automatic ticket closure emails for specific outgoing communications?

                                    Is there a way to disable the automatic "Ticket Closed" email notification for specific tickets or outgoing emails? Currently, every time we send an email to a customer, the system automatically sends a "Ticket Created" email, followed by a "Ticket Closed"
                                  • Zoho Webinar - Sharing System Audio (NOT AVAILABLE)

                                    Hi, We are having a serious problem with Zoho Webinar. In the webinars we run, we very often share the audio from a video we are streaming directly from YouTube or other applications. Until recently we were using Zoom, but as we use other Zoho applications
                                  • What's new in Zoho Workplace | September 2026

                                    Hello Zoho Workplace community! Here's a roundup of all the new features and announcements that went live across Zoho Workplace applications in September. Zoho Mail Compose Options Across Templates You can now use the Undo, Redo, and New List options
                                  • Unable to export reports despite enabled report export permissions

                                    Hi Zoho Community, We are unable to export reports in Zoho CRM. When attempting an export, we receive the following error: “Cannot Export Report — You do not have permission to export one or more modules used in this report. Please contact your administrator.”
                                  • What does "Tickets for Review" do?

                                    What is the purpose of the va nilla view " Tickets for Review?"
                                  • Set department automatically for incoming calls

                                    Is it possible, when receiving an incoming call through Zoho Desk (using Twilio integration), for the department to be auto-selected based on the phone line being called? Currently, we have to manually select the department from the dropdown menu when
                                  • Zoho Desk training for administrators in EU and US region

                                    Hello Everyone, Get ready for the certified Virtual Classroom training for our Zoho Desk users in Europe and the US. Our in-house Zoho Desk expert, @Dheeraj | Zoho Desk, will conduct the virtual classroom training. This training focuses on simplifying
                                  • Support Plan: Recuring Issue

                                    Hi Zoho Team, Could you please look into this recurring alert and provide clarification on why this restriction is still in place? This issue has become a bottleneck in our workflow, significantly limiting our automation capabilities. We are unable to
                                  • Webinar de Zoho People: tecnología para RR. HH.

                                    ¿Y si RR. HH. pudiera estar tan conectado con el negocio como el resto de tu organización? La gestión de personas está evolucionando, y los departamentos de Recursos Humanos necesitan herramientas que les permitan ir más allá de las tareas administrativas
                                  • Zoho CRM still doesn't let you manage timezones (yearly reminder)

                                    This is something I have asked repeatedly. I'll ask once again. Suppose that you work in France. Next month you have a trip to Guatemala. You call a contact there, close a meeting, record that meeting in CRM. On the phone, your contact said: "meet me
                                  • WhatsApp in Zoho CRM Plus: inbound works, every outbound message fails with crm.bm.msg.failed.undefined since Oct 14 (business stopped)

                                    Hello Zoho team and community, We are Roxo Inc, a Zoho CRM Plus customer in Florida. WhatsApp is our main sales and support channel, and since October 14, 11:11 AM EDT we cannot send any WhatsApp message from Zoho CRM. We are facing a large drop in sales
                                  • Pushover Notification Module

                                    Hello, it would be good if there would be a "Pushover" (https://pushover.net/) module besides the standard SMS module. Pushover is now very well known, especially in IT, and is becoming more and more popular. The biggest advantage are the customizable
                                  • Problem in Mannual journal in Zoho Books

                                    When I Put Manual Journal in Zoho Books Software not allow me to select VAT Rate what is the solution United kindgom version
                                  • Zoho CRM's WhatsApp integration now supports multiple accounts, multiple numbers, and custom modules

                                    Hello all, WhatsApp Business now comes with a few exciting enhancements. So far, WhatsApp integration has worked with a single account and a single mobile number. As reliance on the WhatsApp integration has grown, along with the need for multiple accounts
                                  • E-Mail Blacklist via GUI

                                    Hello, It would be helpful if the GUI included an option to block specific email addresses (both incoming and outgoing). I want a setting where I can completely block certain email addresses. This means that no tickets can be opened from those addresses,
                                  • Next Page