Build an approval management system with Custom Modules

Build an approval management system with Custom Modules



Dear users,

Task management is at the heart of project management. But not all tasks are created equal. You can have your tasks reviewed before any work begins, to improve transparency or stay within budget or as part of your process. Zoho Projects allows approvals for projects and timesheets by default. With custom modules, codex, workflows and custom functions, you can help them set up approvals for manual evaluations like budget approvals, contract sign-off, etc.

Custom modules

As part of
Projects Infinity, Zoho Projects allows you to extend project management capabilities using
custom modules. You can now build additional capabilities that aren't available by default, like:

  1. Inventory tracking

  2. Fleet management

  3. Approval handling

  4. Resource management

  5. And any custom business logic


Custom modules can be created for the entire organization or for a specific project. You can also choose from a gallery of pre-built modules. Each custom module supports its own set of fields and automation workflows, too.

CodeX:

Alongside blueprints, workflows, and business rules, Zoho Projects allows you to use Javascript SDKs on the project or task records before or after creating, editing, or deleting them.

With CodeX, you can:

1. Make HTTP requests to other apps.
2. Update tasks or project records based on conditions.
3. Retrieve record details and update other project records in your portal.

(Note: CodeX scripting is available in the free plan and all paid plans. Execution is limited by CodeX credits.)

Quote

Use case

Let's consider a multi-location consulting firm that's looking to make budget reviews more transparent for clients. For instance, tasks with a budget over INR 50,000 must be approved by a project manager before any work begins. Tasks should not be assigned to team members or allowed to change status until they are approved.


We can achieve this using a combination of
custom modules, workflows, custom functions, and CodeX.

I. A custom module to handle the approvals


First, create a custom module named
Approvals to capture task approval requests. It can contain fields for the task name and the approval status, along with other fields like Created By, Approved By, Created Time, and Approved Time. Assign the manager or portal admin as the approver.


An approval record is created in the Approvals module every time a task is created with a cost estimate of INR 50,000 or more. You can add a picklist field to approve or reject the task.



II. A
workflow to push task details


Define a workflow that triggers whenever a task is created with a budget greater than INR 50000, and place the task On Hold. You'll also need a custom function to push the task details to the Approvals module.




III. A custom function to create the record

The custom function should capture the task details and create a record in the Approvals module. The default status will be Pending or In Progress.




IV. A CodeX script to prevent task edits


Create a CodeX script to restrict edits to the task while it is
On Hold.

 

Now, when a user tries to update a task that is On Hold, CodeX restricts updates to it. (You can choose which user profiles can or cannot make the updates)



 

Finally, to lift the restriction on task edits, a workflow rule can be set up in the Approvals module to change the status of the task to Open or Approved. This will signal CodeX to allow editing the task.




We now have a custom approval management system for a simple criterion. You can build even more complex systems for your clients.

IdeaPro tipThe same process can be built using a blueprint to track all transitions to help visualize and manage various stages, all in one place. 

Not just tasks, you can build approvals for any module or flow that requires intervention and validation using custom modules, like:

a. Change request management
b. User/task assignment
c. Client consensus
d. Custom activity logs  

Have an approval management case you'd like to discuss? Share it with us and we'll help you out. Let us know if you'd like our partners to help you build custom logic for your business.

Want us to write about an aspect of Zoho Projects in detail? Let us know and we can add it to our list.


Best

The Zoho Projects Team


      Zoho Campaigns Resources


        • Desk Community Learning Series


        • Digest


        • Functions


        • Meetups


        • Kbase


        • Resources


        • Glossary


        • Desk Marketplace


        • MVP Corner


        • Word of the Day


        • Ask the Experts


          • Sticky Posts

          • Introducing Version-3 APIs - Explore New APIs & Enhancements

            New Update - The end of life timeline for V2 APIs has now been extended to 30th June, 2026 Happy to announce the release of Version 3 (V3) APIs with an easy to use interface, new APIs, and more examples to help you understand and access the APIs better.
          • CodeX Scripts for Enforcing Custom Project Logic

            Every organization has a defined way of executing projects. There are clear expectations around how tasks should move, when projects should progress, and which actions require validation. When these rules are consistently followed, projects remain structured
          • Automation Series: Auto-create Dependent Task on Status Change

            In Zoho Projects, you can automatically create and assign a dependent task when a task’s status is updated. This helps teams stay aligned, ensures reviews happen on time, and reduces manual effort. In this post, we’ll walk through an easy setup using
          • Time Log Reminder

            Tracking the time spent on tasks and issues is one of the most important functions of a timesheet. However, users may forget to update the time logs because they have their own goals to achieve. But, time logs must be updated at regular intervals to keep
          • Introducing the Zoho Projects Learning Space

            Every product has its learning curve, and sometimes having a guided path makes the learning experience smoother. With that goal, we introduce a dedicated learning space for Zoho Projects, a platform where you can explore lessons, learn at your own pace,

          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

                                  • Zoho → ShipStation Integration – Sales Order–Driven Fulfilment Workflow

                                    Hello All, I’m reaching out to explore the best way to integrate a shipping tool into our inventory which will speed our process up. We are looking to integrate ShipStation into our existing order-to-fulfilment workflow, as we’re keen to standardise on
                                  • Newby Questions - Vendors, Customers, and Income vs. Other Income Clarifications

                                    Q1. For Deposits, there does not seem to be an option for "Income". "Other Income" is an option however. What is the process to add the option to assign a deposit to type "Income"? Q2. In many cases Vendors and Customer are the same. Vendors may purchase
                                  • Zoho Booking - TIN vs ATIN & ITIN

                                    Zoho Booking Vendors allows for TAX ID values of SSN, EIN, ATIN an ITIN. There is no option for TIN. What is the method to properly add TIN to the list of taxable values for companies? For reference: Social Security Numbers (SSN) Individual Taxpayer Identification
                                  • Mail Search should allow grouping by conversation like Gmail.

                                    Having switched from gmail I have found the search function hard to use. Mostly because mail is not grouped by conversation in search. If I search for a word when looking for a conversation had with someone then sometimes 10 emails will come up from the
                                  • Bank Feed shows redacted description numbers (xxxx)

                                    Hi All, Is there any way to change this behaviour? Either Zoho or Yodlee is redacting important numbers from the transaction description, preventing us from being able to easily recognise and reconcile transactions. For example, a transaction with a description
                                  • Can I write a check in Zoho Books with no associated bill?

                                    This currently does not seem possible, and I have a client that desperately needs this function if I am able to convert them with Quickbooks. Thank you in advance for your reply. 
                                  • Handling large product migrations in Zoho?

                                    Hi everyone, How do you usually manage large product catalog migrations (10K+ SKUs) into Zoho One? Main concerns I’m thinking about: Avoiding downtime Preventing data loss Keeping supplier and product relationships intact Do you prefer bulk imports or
                                  • Reassign Partially Saved Entries

                                    Hi, I would like to be able to go to Partially Saved Entries and like the option to delete them I would like the option to multi-select and be able to reassign them to another user to complete (Such as when a user has left the company). Thanks Dan
                                  • Preventing auto-redirect to Parent Record on Save...

                                    Our users often create records from the related list on th left side of the screen. They click the blue "plus" button to create the record. This is handy, but for some modules, or situations, they would like to remain on the record AFTER clicking "Save",
                                  • Introducing Version-3 APIs - Explore New APIs & Enhancements

                                    New Update - The end of life timeline for V2 APIs has now been extended to 30th June, 2026 Happy to announce the release of Version 3 (V3) APIs with an easy to use interface, new APIs, and more examples to help you understand and access the APIs better.
                                  • Correlated subqueries not supported in Zoho Analytics. This creates huge limitations

                                    Running into a major limitation in Zoho Analytics: correlated subqueries simply don’t work, even in completely standard SQL patterns inside a JOIN. Example: LEFT JOIN "Bills" b ON d."Id" = b."Deal ID" AND EXISTS ( SELECT 1 FROM "Bill
                                  • Unknown table or alias 'A1'

                                    I would like to create a subquery but i am getting the following error: Unknown table or alias 'A1' used in select query. This is the sql statement:  SELECT A1.active_paying_customers, A1.active_trial_customers, A1.new_paying_signup, date(A1.date_active_customers), 
                                  • Feature announcement - Introducing recipient authentication via Didit in Zoho Sign

                                    Hi everyone! Zoho Sign already integrates with trusted providers like IDology (US), eID Easy (EU), and Stripe Identity. Today, we're excited to add another powerful option: Didit. Some benefits of using Didit: Unified ID verification Streamlined eKYC
                                  • CRM x WorkDrive: File storage for new CRM signups is now powered by WorkDrive

                                    Availability Editions: All DCs: All Release plan: Released for new signups in all DCs. It will be enabled for existing users in a phased manner in the upcoming months. Help documentation: Documents in Zoho CRM Manage folders in Documents tab Manage files
                                  • All new Address Field in Zoho CRM: maintain structured and accurate address inputs

                                    Availability Update: 29 September 2025: It's currently available for all new sign-ups and for existing Zoho CRM orgs which are in the Professional edition exclusively for IN DC users. 2 March 2026: Available to users in all DCs except US and EU DC. 24
                                  • 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. Moderation Update (8th Aug 2025): We are working
                                  • sending email with another account

                                    Hello there, i write there for an our costumer request. They want to send email from CRM with a different email (confirmed and added to zoho profile). For example they use account@zilium.com but with this account they want to send (not only with email
                                  • What's New in Zoho POS - February 2026

                                    Hello everyone, Welcome to Zoho POS’s monthly updates, where we share our latest feature updates, enhancements, events, and more. Let’s take a look at how February went. Purchase and sell items on different units We have introduced a unit conversion functionality
                                  • Regarding the integration of Apollo.io with Zoho crm.

                                    I have been seeing for the last 3 months that your Apollo.io beta version is available in Zoho Flow, and this application has not gone live yet. We requested this 2 months ago, but you guys said that 'we are working on it,' and when we search on Google
                                  • Message as bot

                                    I would like to be able to send a Cliq message truly as a bot. the current implementation of this function, while it sends the message as a bot it sends that message inside a chat from the user how authenticated the flow cliq connection instead of directly
                                  • Using a custom single line External ID form as merge fields in templates

                                    Hey everyone, We're looking to integrate a few external systems better with our Zoho CRM, and we had hoped to use external fields for this purpose. In this case, it would mean being able to use our own inoice system's invoice numbers are a direct id compatible
                                  • Build an approval management system with Custom Modules

                                    Dear users, Task management is at the heart of project management. But not all tasks are created equal. You can have your tasks reviewed before any work begins, to improve transparency or stay within budget or as part of your process. Zoho Projects allows
                                  • CRM's sandbox now supports the Zoho Desk integration

                                    Hello everyone, Sales and customer support teams often collaborate to solve tickets and identify pain points. In Zoho's suite of products, sales teams primarily use Zoho CRM while customer support teams work in Zoho Desk. These two tools are often integrated
                                  • Countries List Global Set- Complete with Phone Country Code and Continent.

                                    Dear Zoho Team I saw your recent addition to the Global Sets regarding the Countries list and states. While working on it, why didn't you also add things like Continent and Phone Country Code? Also, some ISO codes from some Countries/regions are mis
                                  • mask Customer phone number and agents cant see customer phone number

                                    Is there any way we can integrate Zoom Phone with Zoho CRM while ensuring that customer phone numbers remain masked? We need a solution where agents can make outbound calls but cannot see customer phone numbers. Please let us know if there is any solution
                                  • Zoho Community Digest — Marzo 2026

                                    ¡Hola, comunidad! Un mes más os traemos las novedades más interesantes de Zoho para marzo de 2026, incluyendo actualizaciones de producto publicadas oficialmente, cambios de políticas y noticias del ecosistema. ¡Gracias por venir a los Workshops de Madrid!
                                  • Files Uploaded to Zoho WorkDrive Not Being Indexed by Search Engines

                                    Hello, I have noticed that the files I upload to Zoho WorkDrive are not being indexed by search engines, including Google. I’d like to understand why this might be happening and what steps I can take to resolve it. Here are the details of my issue: File
                                  • How can we get payment status updates for payment links in Zoho Books using webhooks?

                                    When we create and share a payment link in Zoho Books, is there a way to know when the payment is updated? Can we use webhooks to get real-time updates for payment link status instead of checking manually?
                                  • Adding Images to a Quote in Zoho CRM

                                    We are currently preparing to use Quotes in Zoho CRM and we are building out our Quote templates.  We came across an issue of not being to add Images of the products to the Quote - specifically in the body of the Quote templates.   This is a problem,
                                  • Uplifted homepage experience

                                    Editions: All editions. Availability update: 17th February 2026: All editions in the CA and SA DC | JP DC (Free, Standard and Professional editions) 23 February 2026: JP (All Editions) | AU, CN (Free, Standard, Professional editions) 27 February 2026:
                                  • 【Zoho CRM】住所項目のアップデート:構造化された正確な住所入力を実現

                                    ユーザーの皆さん、こんにちは。Zoho コミュニティグループの中野です。 今回は「Zoho CRM アップデート情報」の中から、住所項目に関するアップデートをご紹介します。 アップデートの概要 これまでの住所項目は、自由入力形式のテキスト欄が中心でした。 そのため、入力者によって書き方がバラバラになりやすく、データの検索やレポート集計が難しいという課題がありました。 今回追加された新しい住所項目では、住所を構造化されたフォーマットで管理できるようになりました。 以下の要素をそれぞれ個別の項目として分割して管理します。
                                  • How to hide Activity Side Panel

                                    How do you hide the activity side panel? Clicking on the link and reviewing the activity does not remove it and it does not seem to timeout. I have any activity that have been listed there since January. Thank you.
                                  • This version of app doesn't support this notecard type Error

                                    So this problem is happening for any notes created within the last week, as well as any note recently edited on Android. I can open them on my phone fine, but they don't open on the website version. They DO work on the desktop app version. It's just web
                                  • Edit a previous reconciliation

                                    I realized that during my March bank reconciliation, I chose the wrong check to reconcile (they were for the same amount on the same date, I just chose the wrong check to reconcile). So now, the incorrect check is showing as un-reconciled. Is there any way I can edit a previous reconciliation (this is 7 months ago) so I can adjust the check that was reconciled? The amounts are exactly the same and it won't change my ending balance.
                                  • Choose Component for User Filter

                                    This filter in the Choose Component for User Filter would be better if had an Order or Group by function. Also, the Specify the default filter values: is very confusing and limiting.
                                  • Zoho Desk - Event Calendar View

                                    Hi Desk team, Are there any plans to introduce a calendar or timeline view for Events in Zoho Desk? It would be very helpful if we could see Events visually in a calendar and/or timeline. This is very helpful when desk side support activities need to
                                  • Re-Apply SLA When Ticket Reopened from Closed Status?

                                    If you have an SLA applied, timers are deactivated when going to "On Hold" status type and reactivated when going back to an Open status type. What we discovered is when a customer replies to a closed case and it reopens, the SLA is not applied and timers
                                  • Option to Delete Chats in IM

                                    Currently, there is no option to delete any chats in IM, regardless of their source.
                                  • Time Zones for Users

                                    I've searched for this topic, but the only answers I see are from years back. We have users all over the country. is there a way for them to set their own time zone? This is important and should be a standard setting, but I do not see how to do it.
                                  • Is it possible to make tags "required"

                                    We would like to be able to make the tag field a requirement for agents before they can close a ticket. This would help with monthly reporting, where a lot of tickets end up with no tag, causing manual work to go back and add the correct tag for each
                                  • Next Page