Customizing form events in Zoho Projects with CodeX

Customizing form events in Zoho Projects with CodeX


Dear users,

Beyond Task Lists is a series of articles aimed at showcasing the various customization capabilities of Zoho Projects. We'll discuss real life project management scenarios, use cases, and requirements that needs combining multiple features. This article is about using CodeX to customize the tasks and projects module.

Zoho Projects offers comprehensive automation and customization for modern project management: workflows, blueprints, and business rules. But when you want to make that near impossible customization happen, CodeX is here to help.

With CodeX, you can use Javascript SDKs on the project or task records before or after creating, editing, or deleting them. (Note: CodeX scripting is available in the free plan and all paid plans. Execution is limited by CodeX credits.)

This includes special cases like:

Info
1. Applying restrictions to record updates
2. Restricting field edits unless conditions are met or until a status changes

Use case:

An Indian firm with multiple locations needs to file tasks by region. Each task layout has drop-downs for the state and city, but users often mismatch the selections, causing confusion. In this case, workflow automation doesn't solve the issue.

The solution flow:
  1. Click the Setup icon in the top right.

  2. Select Developer Space and click CodeX Scripts.

  3. Give a name for the script, choose the Task module, select a layout, and choose Before Create as the event.

  4. Paste the following script into the CodeX terminal and click Save.
    1. function main() {

      // define states and cities
      const states = [
      {
      state: "Tamil Nadu",
      cities: ["Madurai","Chennai","Trichy"]
      },
      {
      state: "Karnataka",
      cities: ["Tumkur", "Mysuru", "Bangaluru"]
      },
      {
      state: "Kerala",
      cities: ["Cochin", "Ernakulam", "Kottayam"]
      }
      ];

      // capture state selection
      let state = current.record.state;

      // capture city selection
      let city = current.record.city;

      // Find matching state
      const stateObj = states.find(s => s.state === state);

      // Validate city against district
      if (!stateObj.cities.includes(city)) {
      throw new ScriptError(` ${city} is not in $(state)`);
      }
      }
      




      This way, when a city not in the corresponding state is selected, the system throws a custom-defined error.

Idea
Pro-Tip: With CodeX, you can also:

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.

Take a look at our help docs for more details - CodeX in Projects.

Have questions you think might require CodeX? Reach out to us and we can help. Want us to write about an aspect of Zoho Projects in detail? Let us know and we can add it to our list.

Best,
Zoho Projects Team

    • Sticky Posts

    • Enhanced Collaboration and Global Web Tabs

      Hello Users, We are rolling out two key enhancements in Zoho Projects that will be part of our November release. Here’s what to expect: 1. Collaboration Section in the Left Navigation Panel What’s new? All communication and interactive tools will be grouped
    • 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
    • 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

    Nederlandse Hulpbronnen


      • Recent Topics

      • Zoho Books Create Invoice API

        I am creating zoho invoices via the API.  Now that zoho has released sub-accounts, i'd like to create invoices and link them to sub-accounts within "sales" account.   For example; my chart of accounts looks like this; Sales ->Website Sales    ->Campaign Sales ->Offline Sales However, when I try to pass these accounts to the API, I receive an error that only Bank accounts can be passed with the create invoice.  
      • Multiselect lookup in subform

        It would be SO SO useful if subforms could support a multiselect look up field! Is this in the works??
      • Ability to Set Text Direction for Individual Cells in Zoho Sheet

        Dear Zoho Sheet Team, We hope you are doing well. We would like to request an enhancement in Zoho Sheet that allows users to set the text direction (right-to-left or left-to-right) for individual cells, similar to what is available in Google Sheets. Use
      • Workflows being applied and the Large unwanted popup

        When a workflow is being applied do to an action, then the Agent is left with a large Window asking if they would like the see the changes this workflow did. Is there any way to disable this prompt from appearing?
      • Contact not saved after editing

        Hi. I discovered a couple of problems with Zoho contact. (1) BUG. Contact is not saved after editing. If you edit an existing contact by putting a bracket in one of the fields you get the message "Contact updated successfully" but nothing is saved. All updates (including the other fields) are lost. Steps to reproduce. Go to an existing contact and change the first name to "Robert (Bob)". (2) In the phone number fields you can only save numeric data (0 to 9). This seems an unneccessary restriction.
      • Zoho Mail Android app update: UI revamp

        Hello everyone! We are excited to share that the first phase of the Zoho Mail Android UI revamp is now live. In this update, we have redesigned navigation bar at the bottom to quickly access the Email, Calendar, Contacts, and Settings modules. Also, the
      • Opt-out from mailing list means can't email at all??

        It seems that if a contact unsubscribes from a mailing list the only way to email them is to uncheck the email opt-out box first, then re-check after the email has been sent. I've been through a chat with support and they confirmed this. This seems bizarre.
      • Email Opt Out Question

        Has the problem where if a customer is emailed opt out prevents you sending standard emails? For me this feature is simply to stop any email marketing and should not block people from receiving emails via Zoho mobile, which makes no sense.
      • Search API filter/sort ignores comment-triggered modifiedTime updates

        Summary When a comment is added to a Call or Account, the parent record's modifiedTime is correctly bumped. This bumped value is visible in: GET /api/v1/calls/{id} ✅ GET /api/v1/calls/search without a filter ✅ — the record's response body shows the new
      • Items Landed Cost and Profit?

        Hello, we recently went live with Zoho Inventory, and I have a question about the Landed Cost feature. The FAQ reads: "Tracking the landed cost helps determine the overall cost incurred in procuring the product. This, in turn, helps you to decide the
      • Bank Feeds

        Since Friday my bank feeds wont work. I have refreshed feeds, deactivate and reactivate and nothing is working
      • Show backordered items on packing slip

        Is it possible to show a column on the Packing Slip that shows number of backordered items when a PO is only partially filled? I would also like to see the Backordered column appear on POs after you receive items if you didn't get ALL of the items or partial amounts of items. And lastly, it would be nice to have the option of turning on the Backordered column for invoices if you only invoice for a partial order. -Tom
      • Users I've shared the sheet with cannot use the Custom Functions

        Hi, I have a Zoho Sheet worksheet that I shared to 2 colleagues, giving them full access: In that worksheet, I created a button with a custom Deluge function and it works flawlessly for me: For those I shared the worksheet to, when they click the button,
      • Introducing parent-child ticketing in Zoho Desk [Early access]

        Hello Zoho Desk users! We have introduced the parent-child ticketing system to help customer service teams ensure efficient resolution of issues involving multiple, related tickets. You can now combine repetitive and interconnected tickets into parent-child
      • Newby Questions

        Q1. The top bar of Zoho Books has a "Search in Banking (/) " field. What is the proper use of this text box? - Searching for Amazon for example has no results but there are transactions. - Is the search case sensitive? - Are regular expressions allowed?
      • Add Custom Fields only in Customer module and not on supplier module!? Is not there a way to do that!?

        I am trying to create custom fields on clients module but it also gets created on suppliers module; which of course does not make sense at all as a lot of custom fields are client or supplier specific but never both. I am missing something? This seems
      • Inventory "Bulk Actions" button - add more fields to "Bulk Update > Select a field"

        Can we not get a lot more actions that are commonly used by customers into the "More Actions" button on the Inventory list? More fields listed in the Bulk Update > Select A Field? Possible Bulk update Fields Preferred Supplier ( to quickly move items
      • Using Email Triggers on Zoho Flow

        Hello, I'm sending the email to create the variables as this article says: https://help.zoho.com/portal/en/kb/flow/user-guide/create-a-flow/articles/email-trigger#How_email_trigger_works But the collection of the variables only seems to work when the
      • Zoho Bookings - Provide Appointment System ID in Zoho Flow Variable

        Hi Bookings Team, It would be great if you could provide the system record ID for appointments as a variable in Zoho Flow trigger outputs and Fetch Appointments action. This would allow us to create a dymanic URL which can be clicked by a staff user to
      • Tip #7: Customize the appointment confirmation page

        A confirmation page plays a crucial role in creating the first impression, as that's where customers land when booking with you. It shows your brand identity, engages your audience, and drives more conversions. Yet, this section is often overlooked when
      • WhatsApp Calling Integration via Zoho Desk

        Dear Zoho Desk Team, I would like to request a feature that allows users to call WhatsApp numbers directly via Zoho Desk. This integration would enable sending and receiving calls to and from WhatsApp numbers over the internet, without the need for traditional
      • Show backordered items on packing slip

        We send out a lot of large orders, and often there are one or two things backordered. How can I fix the packing slips to show quantity ordered  & quantity packed There should also be the ability to "ship" 0 of an item so the receiver knows that things
      • How do you create an event/meeting in a different time zone?

        Does anyone know how do you create an event/meeting in a different time zone? 
      • Deluge Learning Series – Mastering file handling in Deluge | April 2026

        The Deluge Learning Series is conducted on the fourth thursday of every month. In each session, we discuss built-in functions and statements in Deluge and demonstrate how they are used across different Zoho products. With practical examples and real-world
      • Multi-currency and Products

        One of the main reasons I have gone down the Zoho route is because I need multi-currency support. However, I find that products can only be priced in the home currency, We sell to the US and UK. However, we maintain different price lists for each. There
      • Editing recurring tasks

        Hi there, I use recurring annual tasks quite often but sometimes I have a contact leave an organization so I want to re-assign that annual task to a new contact. When I go into the task to change the contact it only does so for the current year. Future
      • 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
      • On Duty Requests - Zoho People Data

        Hello Team, We are currently using the On Duty Form to record Work From Home (WFH) requests in our organization. However, we are facing an issue where pending On Duty requests are not appearing in the Attendance Module. For example, if I submit On Duty
      • Business Day Logic Update: More Accurate Scheduling for Your Workflows

        Hello everyone, We’re improving how business-day calculations work in workflows, especially when triggers happen on weekends. This update ensures that offsets like +0, +1, and +2 business days behave exactly as intended, giving you clearer and more predictable
      • Styling for Subform Fields using client script

        Currently we can add styles to list and detail page for fields using .addstyle in the Client Script But that is missing for fields of Subform We would really like the feature to addstyle for subforms in the detail page Can you please consider adding it,
      • Zoho Commerce -

        Zoho Commerce currently only allows merchants to define the United Kingdom as a single shipping zone, which creates a significant issue for businesses operating between the EU and the UK. Under the Northern Ireland Protocol, Northern Ireland follows EU
      • Add a way to connect Log360 Cloud logs with Zoho analytics

        Hi, Several month ago Log360 Cloud was added to zoho one - and this is great. But as far as I see there is no prebuilt way to connect Zoho analytics to the logs we have in Log360 Cloud. Please add a prebuilt connection like we have for so many other zoho
      • IP flagged as abusive

        I'm getting the error that 136.143.188.15 is listed as abusive. I've checked with mxtoolbox.com and it is indeed in the list
      • date & datetime client script getInput types

        Please add date & datetime as available types for the getInput client script function. https://www.zohocrm.dev/explore/client-script/clientapi/Client#getInput
      • Approval Workflow Not Triggering When Status Updated via Custom Button

        Hi Team, I’m facing an issue with an approval workflow in my application. I have a workflow that updates a record’s Status field from “Pending” to “Waiting for Approval.” I have configured an Approval Workflow with the condition: Status = "Waiting for
      • Automate the file import step

        Hello everyone, I have a Sales - 'Account' category, and currently import the file to update it as follows: Import Accounts - From File - Update existing Accounts only - select and match the field the CRM. Since we have been using Microsoft 365 SharePoint.
      • Data Import

        Hello Latha, Is there any option to enable data import option in Equipment module? Best regards, Chethiya.
      • Unable to Access /crm/v7/taxes – OAuth Scope Mismatch in Zoho CRM API

        I am currently integrating Zoho CRM (v7 API) with our system and I need clarification regarding the Taxes API and OAuth scopes. Context: We are creating Quotes via the API (/crm/v7/Quotes) Each quote contains line items with taxes (e.g., TVA 19%, 10%,
      • Email from CRM being Blocked or Marked as Spam by Google (and maybe more)

        In the past 24 hours we’ve noticed that emails sent via Zoho CRM are being blocked or flagged as phishing, particularly by Google. The issue seems to occur specifically when emails contain links. URLs like www.domain.com or www.example.com are automatically
      • Marketing Tip #29: Make it easier to shop by grouping products into collections

        A well-organized store helps customers find what they want faster, which directly improves conversions. When products are grouped into clear categories or collections, shoppers don’t have to scroll endlessly or search manually. It also makes your store
      • Next Page