Kaizen #193: Creating different fields in Zoho CRM through API

Kaizen #193: Creating different fields in Zoho CRM through API

🎊 Nearing 200th Kaizen Post – We want to hear from you!
Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone. 

Hello all, welcome back to another exciting Kaizen post!

In Zoho CRM, you have the option to tailor modules according to your organization's unique needs using custom fields. These can be created manually in the module builder or via API.

From Zoho CRM API version 6, you can add custom fields via API using the below endpoint:
POST 
{api-domain}/crm/{version}/settings/fields?module={module_API_name}

From Zoho CRM API version 8, additional field types like multi-select lookups, multi-user lookup additions are also supported.
This article is intended to be a guide on how to create fields through the API.

Field Type (UI)
Field Data Type 
Single Line
text
Multi-Line
textarea
Email
email
Phone
phone
Pick List
picklist
Multi Select
multiselectpicklist
Date
date
Date/Time
datetime
Number
integer
Auto-Number
autonumber
Currency
currency
Decimal
double
Percent
percent (only in POST)
Long Integer
bigint
Checkbox
Boolean
URL
website
Lookup
lookup
Formula
formula
User (Type- Single User)
userlookup
User (Type- Multiple Users)
multiuserlookup
File Upload
fileupload
Image Upload
imageupload
Rollup Summary
rollup_summary
Multi-Select Lookup
multiselectlookup

The fields in below JSON are common for all fields. Field types such as single line text, phone, email, date, datetime, integer, and url fields consists of the below common fields alone and there are no dependent fields for them. 
{
  "fields": [
    {
      "field_label": "Your Field Label",
      "data_type": "<field_type>",
      "length": "<length>",
      "tooltip": {
        "name": "static_text",
        "value": "Tooltip message"
      },
      "profiles": [
        {
          "id": "<profile_id_1>",
          "permission_type": "read_write"
        },
        {
          "id": "<profile_id_2>",
          "permission_type": "read_only"
        }
      ],
      "external": {
        "type": "user",
        "show": false
      },
      "crypt": {
        "mode": "decryption"
      }
    }
  ]
}


Key
Mandatory
Description
field_label



Yes
Display name of the field
date_type
Yes
Field type
length
No
Max number of characters allowed for a field
filterable
No
Whether field can be used in filters. When set to true, the field will be available for use in Criteria Pattern Editors. Note that it is not applicable for imageupload, fileupload, textarea, and formula fields 
tooltip
No
Field help text; name can be static_text or info_icon 
profiles
No
Access control per profile (read_write, read_only, hidden)
crypt
No
Whether to encrypt the field (encryption or decryption)
unique
No
Enforce uniqueness across records
hipaa_compliance_enabled
No
Enable HIPAA protection
private
No
Enable GDPR-level handling (Low or High)

Single line Field

The single line field is a string field that can store 255 characters, and alphanumeric and special characters. It can be used to store fields like name, company, account name, etc. To create a single line field, give data_type as text
A single line field can be marked as an external field. An external field is used to hold a record's unique ID available in an external system.
{
    "fields": [
        {
            "data_type": "text",
            "field_label": "External ID",
            "external": {
                "type": "org",
                "show": true
            }
        }
    ]
}

Multiline Fields

The multi line field is a string field that can be used when you need a larger string field. It accepts alphanumeric and special characters. Multiline fields are of three types: plain text small, plain text large, and rich text field.
Multi-line field type
Character limit
Can be marked Mandatory?
Can be Encrypted?
Plain text small
Up to 2000
Yes
Yes
Plain text large
Up to 32000
Yes
No
Rich text (RTF)
Up to 50000
No
No

1) Plain Text Small Field

This type of multi-line field is ideal for concise entries up to 2000 character size. To create a plain text small multi line field, give data_type as textarea and type key in text area JSON object as "small".
{
    "fields": [
        {
            "field_label": "Apartment_details",
            "data_type": "textarea",
            "length" : 2000,
            "textarea": {
                "type": "small"
            }
        }
    ]
}

2) Plain Text Large Field

This type of multi line field is ideal for more extensive entries of up to 32000 character size. To create a plain text large multi line field, give data_type as textarea and type key in text area JSON object as "large".

{
    "fields": [
        {
            "field_label": "Apartment_details",
            "data_type": "textarea",
            "length" : 32000,
            "textarea": {
                "type": "large"
            }
        }
    ]
}

3) Rich text Field

Rich text field is ideal when formatted text needs to be entered. The length of the entry can be up to 50000 characters. To create a plain text large multi line field, give data_type as textarea and type key in text area JSON object as "rich_text"
{
    "fields": [
        {
            "field_label": "Apartment_details",
            "data_type": "textarea",
            "length" : 50000,
            "textarea": {
                "type": "rich_text"
            }
        }
    ]
}

Picklist Field

Picklist is a field that lets you choose a value from a set of predefined values. The pick list value accepts all alphanumeric and special characters.
To create a picklist field, give data_type as picklist .Picklist fields have dependent JSON array - pick_list_values.  
  • pick_list_values: This JSON array comprises the options for the picklist field. Inside the array, display_value and actual_values stores the label shown for the picklist value in the CRM UI and the actual internal value of the picklist option respectively.  The colour_code field consists of the color code of the picklist option in hex format, if color code is enabled.
  • enable_colour_code - Boolean value that represents whether color code is enabled for the script
  • history_tracking_enabled -   This key when set as true audit/history tracking for the picklist field is enabled. Users with Module Customization permission can enable picklist history tracking. You can enable tracking for one picklist field per module, and this will be applicable across all layouts.
{
  "fields": [
    {
      "field_label": "Your picklist's field label",
      "data_type": "picklist",
      "enable_colour_code": true,
      "history_tracking_enabled": true,
      "pick_list_values": [
        {
          "display_value": "Option 1",
          "colour_code": "#af38fa",
          "actual_value": "Option 1"
        },
        {
          "display_value": "Option 2",
          "colour_code": "#ffd6bc",
          "actual_value": "Option 2"
        },
        {
          "display_value": "Option 3",
          "colour_code": "#cfddbc",
          "actual_value": "Option 3"
        }
      ]
    }
  ]
}

Global picklist Field

Global sets in Zoho CRM is a type of picklist that helps you easily manage picklist values that recur across modules. To create a global picklist, use the Create Global Picklist API. The global picklist can then be associated to a module in the below format using the Create Custom Field API.
{
  "fields": [
    {
      "field_label": "Source",
      "data_type": "picklist",
      "global_picklist": {
        "id": "72223455366"//Id of the global picklist
      }
    }
  ]
}

Multi-Select Picklist Field

Multi-select picklist allows you to select multiple values while creating or editing record. The pick list value accepts all alphanumeric and special characters. To create a multi select picklist, give data type as multiselectpicklist.
Note that Picklist tracking is not supported for multi-select picklists
{
    "fields": [
        {
            "field_label": "Preferred working days",
            "data_type": "multiselectpicklist", // Specify the data type as multiselectpicklist* 
            "pick_list_values": [
                {
                    "display_value": "Monday",
                    "actual_value": "1"
                },
                {
                    "display_value": "Tuesday",
                    "actual_value": "2"
                },
                {
                    "display_value": "Wednesday",
                    "actual_value": "3"
                },
                {
                    "display_value": "Thursday",
                    "actual_value": "4"
                },
                {
                    "display_value": "Friday",
                    "actual_value": "5"
                }
            ],
            "pick_list_values_sorted_lexically": true,
            "enable_colour_code": true
        }
    ]
}

Auto Number Field

Auto Number fields are used for assigning a unique incremental number automatically to each record, making identification easy. To create an auto number field, set "data_type" as "autonumber" and include an auto_number object with the following keys:

  • start_number (mandatory) – Starting value for the auto-number sequence.
  • prefix (optional) – (String) to prepend to the number.
  • suffix (optional) – (String) to append to the number.
  • _update_existing_records (optional) – (Boolean). If set to true, updates existing records with new auto-numbers based on the current format. Default value is false.
{
  "fields": [
    {
      "field_label": "Order ID",
      "data_type": "autonumber",
      "auto_number": {
        "start_number": 1000,
        "prefix": "ORD-",
        "suffix": "-2025",
        "_update_existing_records": true
      }
    }
  ]
}

Currency Field

Currency field is used to store amount values. To create a currency field, set "data_type" as "currency" and define the currency JSON object with the following keys:
  • rounding_option(mandatory) – Specifies how values should be rounded:
    • "normal" – No rounding.
    • "round_off" – Rounds to nearest based on precision.
    • "round_up" – Always rounds up based on precision.
    • "round_down" – Always rounds down based on precision.
  • precision(optional) – Number of decimal places displayed in the UI (e.g., 123.466 with precision 2 becomes 123.47).
  • decimal_place(optional) – Maximum number of decimal places stored. Values beyond this are truncated. Max allowed decimal places: 9.
{
  "fields": [
    {
      "field_label": "Deal Amount",
      "data_type": "currency",
      "currency": {
        "rounding_option": "round_up",
        "precision": 2,
        "decimal_place": 3
      }
    }
  ]
}

Decimal Field

Decimal field is used to store decimal numbers. To add a decimal (floating point) number field, use "data_type": "double".
  • length(optional) – Total number of digits allowed, including both sides of the decimal point.
  • decimal_place(optional) – Number of digits to allow after the decimal point (e.g., 2 means values like 123.45).
{
  "fields": [
    {
      "field_label": "Discount Rate",
      "data_type": "double",
      "length": 16,
      "decimal_place": 2
    }
  ]
}

Percent Field

This field type is used to capture percentage values, such as scores or growth rates. To create a percentage field, use "data_type": "percent". 
{
  "fields": [
    {
      "field_label": "Enrollment number",
      "data_type": "bigint",
      "length": 18,
      "separator": true
    }
  ]
}

Long Integer Field

Long Integer Fields are number fields that accept up to 18 digits. To create a long integer field, use "data_type": "bigint".  
{
  "fields": [
    {
      "field_label": "Enrollment number",
      "data_type": "bigint",
      "length": 18,
      "separator": true
    }
  ]
}

Separator: a Boolean key that indicates whether the number is formatted for better readability. It is applicable for data types integer, double, bigint. Refer to this article on changing locale information for information on how to change it.

Checkbox Field

Checkbox value allows you to select or unselect a value indicating true or false. To create a checkbox field, use "data_type": "boolean".
{
  "fields": [
    {
      "field_label": "Previously Employed?",
      "data_type": "boolean"
    }
  ]
}

Lookup Field

Use "data_type": "lookup" to associate records from another module. The lookup JSON object defines the target module, display label, and optional filter criteria.
  • module.api_name(mandatory) – API name of the target module (get via Modules API).
  • display_label(mandatory) – Label shown in the related list.
  • query_details(optional) – Used to define lookup filters. Inside query_details JSON Object following keys are present:
    • criteria(mandatory if query_details is used) – Filter logic.
    • group_operator – "AND"/"OR" (required for multiple conditions).
    • group – Array of filter conditions. Each condition includes:
      • field.api_name: Field in the target module
      • comparator: Operator like contains, equal
      • value: Value to match
  • revalidate_filter_during_edit(optional) – If true, validates filter conditions on record edit.
{
  "fields": [
    {
      "field_label": "Your lookup",
      "data_type": "lookup",
      "lookup": {
        "module": {
          "api_name": "Contacts"
        },
        "display_label": "Contact Lookup",
        "revalidate_filter_during_edit": true,
        "query_details": {
          "criteria": {
            "group_operator": "AND",
            "group": [
              {
                "field": {
                  "api_name": "Phone"
                },
                "comparator": "contains",
                "value": "91"
              },
              {
                "field": {
                  "api_name": "Lead_Source"
                },
                "comparator": "equal",
                "value": [
                  "Cold Call"
                ]
              }
            ]
          }
        }
      }
    }
  ]
}

Formula Field

Formula fields are used to calculate different types of values, including numeric values, text values, date values, etc. Use "data_type": "formula" to calculate dynamic values based on other fields.
For more details on all the available usages in the formula field, refer to this help doc on formula field. The formula object defines the logic and output type.
  • formula.return_type (mandatory for formula field) – Output type of the formula. Possible values: double, currency, text, date, datetime, boolean
  • formula.expression(mandatory) – The actual formula logic (e.g., "Sqrt(Len(${Email}))").
  • decimal_place(optional) – Number of decimal places (only for double or currency).
  • number_separator(optional) – If true, formats the number using separators (default is true).
{
  "fields": [
    {
      "field_label": "Total amount",
      "data_type": "formula",
      "formula": {
        "return_type": "double",
        "expression": "${Amount} + 150"
      },
      "decimal_place": 0,
      "number_separator": false
    }
  ]
}

Auto refresh formula field

These type of formula fields are used when you need an accurate time measurement whenever you view the record. The key "dynamic" set as true indicates that the field is an auto refresh formula field.
 For example, the age of a deal can be calculated by comparing the created time of the deal with the current time. A condition can be given to stop computing the value of the auto refresh field. 
  • dynamic: When set as true, indicates that the formula field is an auto refresh field.
  • stop_compute_conditionally:  When set as true, indicates that the computation of field stops when the condition given in stop_compute_expression key
  • stop_compute_expression:  Mandatory when stop_compute_conditionally is true. Consists of the condition for stopping computation of the auto refresh formula field.
{
    "fields": [
        {
            "field_label": "Deal Age",
            "data_type": "formula",
            "formula": {
                "expression": "Datecomp(${Created_Time},Now())",
                "return_type": "double",
                "dynamic": true,
                "stop_compute_conditionally": true,
                "stop_compute_expression": "${Probability}==100"//When the deal probability is 100, the calculation gets stopped.
            }
        }
    ]
}

User lookup Field

User lookup field is used to associate a specific user to a record of the module. Use "data_type": "userlookup" to add a user lookup field.
The lookup JSON object defines the key properties of the user lookup
  • query_details (JSON object): Defines filters to restrict which users are selectable.
  • criteria: Uses a group of field conditions (field, comparator, value) with a group_operator (AND, OR) to filter users.
  • revalidate_filter_during_edit (Boolean): If true, the criteria is reevaluated on record edit for the value selected on the record creation. This option is useful when associated values or fields have changed due to updates. It allows users to re-check and confirm that the correct records are still linked when editing the record.
  • sharing_properties (JSON object):  Contains details of access given to users
    •  share_preference_enabled (Boolean): If true, enables access to the records for the users.
    • share_permission (String): Defines what level of access the associated user has (e.g., "read-only", "full-access", "read-write").

{
  "fields": [
    {
      "field_label": "Assigned Sales Rep",
      "data_type": "userlookup",
      "tooltip": {
        "name": "info_icon",
        "value": "Sales user responsible for this lead"
      },
      "lookup": {
        "revalidate_filter_during_edit": true,
         //associate only users from countries India, and email containing "zylker.com".
        "query_details": {
          "criteria": {
            "group_operator": "AND",
            "group": [
              {
                "field": {
                  "api_name": "country"
                },
                "comparator": "equal",
                "value": "India"
              },
              {
                "field": {
                  "api_name": "email"
                },
                "comparator": "contains",
                "value": "@zylker.com"
              }
            ]
          }
        }
      },
      "sharing_properties": {
        "share_preference_enabled": true,
        "share_permission": "read-only"
      }
    }
  ]
}

Multiuser lookup Field

Multi-user look up is a lookup field that lets you add multiple users to a module record. It allows you to establish many-to-many relationships between modules and users in CRM.
Multi user lookup can be added by using the data_type "multiuserlookup". 
  • record_access: This Boolean key when marked as true indicates that the added user has access to the record. The users selected in the multi-user lookup field will be able to 'Edit', 'Delete', 'Change the owner' of that respective record
{
  "fields": [
    {
      "field_label": "Associated_Agents",
      "data_type": "multiuserlookup",
      "multiuserlookup": {
        "record_access": true
      }
    }
  ]
}


File Upload Field

User data type "fileupload" to add a file upload field 
{
  "fields": [
    {
      "field_label": "Resume Upload",
      "data_type": "fileupload",
      "length": 1,// Allow only 1 file, Maximum length : 5
      "tooltip": {
        "name": "info_icon",
        "value": "Upload the applicant's resume in PDF or DOC format"
      }
    }
  ]
}


Image Upload Field

User data type "imageupload" to add an image upload field
{
  "fields": [
    {
      "field_label": "Profile Photo",
      "data_type": "imageupload",
      "length": 1, // Only 1 profile photo allowed, Maximum length 10
      "tooltip": {
        "name": "info_icon",
        "value": "Upload a professional head shot for the employee record"
      }
    }
  ]
}

Rollup Summary Field

Rollup Summary is a field that aggregates or summarizes a desired related list field. Rollup Summary Fields are of two types - Custom Rollups and Predefined Rollups. You can create only custom rollups using APIs. Supported related modules for APIs are Calls, Meetings, and Tasks
  • function - Indicates the mathematical function applied to calculate the rollup summary.
  • field_label - Represents the label of the field as it appears in the UI. 
  • data_type - This must be set to "rollup_summary" for rollup summary field.
  • rollup_summary -  This object contains all the configuration details for the rollup field.
  • return_type - Specifies the type of value returned.
  • expression - Defines the calculation logic for the rollup. 
    • function_parameters  An array containing parameters needed by the function, typically including:
      • api_name: The field being summarized.
    • criteria Defines the filters to apply to the related records. Each condition includes:
      • group_operator:  If there are multiple conditions, you should also include AND or OR as the group operator for the conditions. It consists of an array of conditions.
      • group: Array element of a condition
        • field
          • api_name: The API name of the field.
        • comparator: The comparison operator (e.g., equal, greater_than, contains).
        • value: The value used in the comparison.
  • function - The function to be applied to the filtered records.  Allowed functions : COUNT, MAXIMUM, MINIMUM, AVERAGE, RECENT, UPCOMING, EARLIEST.
  • based_on_module - Specifies the module from which to summarize related records.
  • related_list - Indicates the related list within the module (e.g., "Deals", "Contacts") to summarize from.
{
    "fields": [
        {
            "field_label": "Total Invoice Amount",
            "data_type": "rollup_summary",
            "rollup_summary": {
                "return_type": "currency",
                "expression": {
                    "function_parameters": [
                        {
                            "api_name": "Grand_Total"
                        }
                    ],
                    "criteria": {
                        "group_operator": "AND",
                        "group": [
                            {
                                "comparator": "equal",
                                "field": {
                                    "api_name": "Billing_Country"
                                },
                                "value": "United States"
                            },
                            {
                                "comparator": "greater_than",
                                "field": {
                                    "api_name": "Invoice_Date"
                                },
                                "value": "2024-01-01"
                            }
                        ]
                    },
                    "function": "SUM"
                },
                "based_on_module": {
                    "api_name": "Invoices"
                },
                "related_list": {
                    "api_name": "Invoices"
                }
            }
        }
    ]
}


Multi-Select Lookup Field

 Multi-Select Lookup Field enables you to establish a many-to-many relationship between two modules in CRM.
  • multiselectlookup : The mulitselectlookup JSON object specify the linking details between the module in which the field is present and another module 
    • connected_details: This JSON object contains details about the module you want to connect the current module with.
      • module.api_name:  Specify the module API name you want to link the current module with.
      • field.field_label: When connecting a module, the system creates a new lookup field in the connected module for the current module. Use this key to specify a field label in the connected module.
  • linking_details: When creating a multi-select lookup field, the system creates a separate module connecting these two modules, which contains their common details. This module is called the linking module
    • module: Consists of the details of the linking module.
      • plural_label: Specify a plural label for the linking module.

{
    "fields": [
        {
            "field_label": "Skills",
            "data_type": "multiselectlookup",
            "multiselectlookup": {
                "connected_details": {
                    "module": {
                        "api_name": "Skills"
                    },
                    "field": {
                        "field_label": "SkillName"
                    }
                },
                "linking_details": {
                    "module": {
                        "plural_label": "EmpXSkill"
                    }
                }
            }
        }
    ]
}


    • Sticky Posts

    • Kaizen #198: Using Client Script for Custom Validation in Blueprint

      Nearing 200th Kaizen Post – 1 More to the Big Two-Oh-Oh! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
    • Kaizen #226: Using ZRC in Client Script

      Hello everyone! Welcome to another week of Kaizen. In today's post, lets see what is ZRC (Zoho Request Client) and how we can use ZRC methods in Client Script to get inputs from a Salesperson and update the Lead status with a single button click. In this
    • Kaizen #222 - Client Script Support for Notes Related List

      Hello everyone! Welcome to another week of Kaizen. The final Kaizen post of the year 2025 is here! With the new Client Script support for the Notes Related List, you can validate, enrich, and manage notes across modules. In this post, we’ll explore how
    • Kaizen #217 - Actions APIs : Tasks

      Welcome to another week of Kaizen! In last week's post we discussed Email Notifications APIs which act as the link between your Workflow automations and you. We have discussed how Zylker Cloud Services uses Email Notifications API in their custom dashboard.
    • Kaizen #216 - Actions APIs : Email Notifications

      Welcome to another week of Kaizen! For the last three weeks, we have been discussing Zylker's workflows. We successfully updated a dormant workflow, built a new one from the ground up and more. But our work is not finished—these automated processes are
    • Recent Topics

    • Payroll and BAS ( Australian tax report format )

      Hello , I am evaluating Zoho Books and I find the interface very intuitive and straight forward. My company is currently using Quickbooks Premier the Australian version. Before we can consider moving the service we would need to have the following addressed : 1.Payroll 2.BAS ( business activity statement ) for tax purposes 3.Some form of local backup and possible export of data to a widely accepted format. Regards Codrin Mitin
    • Zoho Books Payroll

      How am I supposed to do payroll and pay my employees with Zoho Books? I think it's pretty strange that an accounting software doesn't have the ability to perform one of the most common functions in business; paying your employees. Am I missing something,
    • Layout Rules Don't Apply To Blueprints

      Hi Zoho the conditional layout rules for fields and making fields required don't work well with with Blueprints if those same fields are called DURING a Blueprint. Example. I have field A that is used in layout rule. If value of field A is "1" it is supposed to show and make required field B. If the value to field A is "2" it is supposed to show and make required field C. Now I have a Blueprint that says when last stage moves to "Closed," during the transition, the agent must fill out field A. Now
    • validation rules doesn't work in Blueprint when it is validated using function?

      I have tried to create a validation rule in the deal module. it works if I try to create a deal manually or if I try to update the empty field inside a deal. but when I try to update the field via the blueprint mandatory field, it seems the validation
    • Sort Legend & stacked bar chart by value

      I'd love to see an option added to sort the legend of graphs by the value that is being represented. This way the items with the largest value in the graph are displayed top down in the legend. For example, let's say I have a large sales team and I create
    • Analytics : How to share to an external client ?

      We have a use case where a client wants a portal so that several of his users can view dashboards that we have created for them in Zoho Analytics. They are not part of our company or Zoho One account. The clients want the ability to have user specific,
    • Is It Possible to Convert a Custom Module to a Quote?

      I recently created a custom module in our CRM environment for RFQs so that our sales team can submit quote requests directly in Zoho rather than by email/phone. This allows for a cleaner overall process, minimizing potential errors and potentially encouraging
    • All new Address Field in Zoho CRM: maintain structured and accurate address inputs

      The address field will be available exclusively for IN DC users. We'll keep you updated on the DC-specific rollout soon. It's currently available for all new sign-ups and for existing Zoho CRM orgs which are in the Professional edition. Latest update
    • How can Data Enrichment be automatically triggered when a new Lead is created in Zoho CRM?

      Hi, I have a pipeline where a Lead is created automatically through the Zoho API and I've been trying to look for a way to automatically apply Data Enrichment on this created lead. 1) I did not find any way to do this through the Zoho API; it seems like
    • Client Side Scripts for Meetings Module

      Will zoho please add client side scripting support to the meetings module? Our workflow requires most meeting details have a specific format to work with other software we have. So we rely on a custom function to auto fill certain things. We currently
    • Proposal: Actionable API Error Messages to Reduce Support Ticket Volume

      I've encountered a long-standing frustration with how Zoho Creator's API communicates errors to developers, and I'm hoping the Zoho team can address this in a future update. This issue has persisted for over 9 years based on community discussions, and
    • Zoho CRM - Option to create Follow-Up Task

      When completing a Zoho CRM Task, it would be very helpful if there was an option to "Complete and Create Follow-Up Task" in the pop-up which appears. It could clone the task you are closing and then show it on the screen in edit mode, all the user would
    • Dynamic Field Folders in OneDrive

      Hi, With the 2 options today we have either a Dynamic Parent Folder and lots of attachments all in that one folder with only the ability to set the file name (Which is also not incremented so if I upload 5 photos to one field they are all named the same
    • Drag 'n' Drop Fields to a Sub-Form and "Move Field To" Option

      Hi, I would like to be able to move fields from the Main Page to a Sub-Form or from a Sub-Form to either the Main Page or another Sub-Form. Today if you change the design you have to delete and recreate every field, not just move them. Would be nice to
    • File Conversion from PDF to JPG/PNG

      Hi, I have a question did  anyone every tried using custom function to convert a PDF file to JPG/PNG format? Any possibility by using the custom function to achieve this within zoho apps.  I do know there are many third parties API provide this with
    • Allocating inventory to specific SO's

      Is there a way that allocate inventory to a specific sales order? For example, let's say we have 90 items in stock. Customer 1 orders 100 items. This allocates all 90 items to their order, and they have a back order for the remaining 10 items which could
    • Cliq iOS can't see shared screen

      Hello, I had this morning a video call with a colleague. She is using Cliq Desktop MacOS and wanted to share her screen with me. I'm on iPad. I noticed, while she shared her screen, I could only see her video, but not the shared screen... Does Cliq iOS is able to display shared screen, or is it somewhere else to be found ? Regards
    • Closing the Loop: Why Lookup Asymmetry is Harming Data Integrity in Creator

      TL;DR: Lookup fields allow users to add new related records inline via the "+" icon, but there's no equivalent ability to edit an existing related record without navigating away and losing form context. Adding a native "Edit" icon—with automatic User
    • Add the ability to Hide Pages in Page Rules

      Hi, We have Field Rules to show and hide fields and we have page Rules, but we can't hide a page in Page Rules so it isn't completed before the previous page (And then have the Deny Rules to prevent submitting without both pages completed), we can only
    • Enable Free External Collaboration on Notecards in Zoho Notebook

      Hi Zoho Notebook Team, I would like to suggest a feature enhancement regarding external collaboration in Zoho Notebook. Currently, we can share notes with external users, and they are able to view the content without any issue. However, when these external
    • Zoho Desk API - Send Reply to CUSTOMERPORTAL

      Hello! I'll try to send a reply to Customer Portal, But the response is 500 (INTERNAL_SERVER_ERROR in service response). {"Error":"{\"errorCode\":\"INTERNAL_SERVER_ERROR\",\"message\":\"An internal server error occurred while performing this operation.\"}"}
    • using the Client script on the load of the form if service no is empty means then i want to make issue relate to is Service

      using the Client script on the load of the form if service no is empty means then i want to make issue relate to field is Service if Purchae no is empty means then i want to make issue relate to is Purchase
    • Changes to the send mail Deluge task in Zoho CRM

      Hello everyone, At Zoho, we continuously enhance our security measures to ensure a safer experience for all users. As part of our ongoing security enhancements, we're making an important update on using the send mail Deluge task in Zoho CRM. What's changing?
    • Work Order wont mark as Completed

      I have a couple of work orders that won't mark as completed even when I've marked the Service Appointments as completed fully.
    • Item name special charaters <>

      Im trying to input speical characters such as < and > into item name and item description but comes up with following error: Invalid value passed for Item Name and Invalid value passed for Item Description How do i allow speical characters?
    • Zoho Analytics Dashboard - How to hide the user filter

      I am using the same dashboard template across different external clients and applying a user filter to the data by site URL. How can I hide the user filter in View Mode so the external client won't see the list of other clients in the drop-down menu?
    • Customer Parent Account or Sub-Customer Account

      Some of clients as they have 50 to 300 branches, they required separate account statement with outlet name and number; which means we have to open new account for each branch individually. However, the main issue is that, when they make a payment, they
    • Cannot get code to work with v2.mergeAndStore!

      Please can someone help me pass subform items into a repeating mail merge table row using v2.mergeAndStore? I have a mail merge template created in Writer and stored in Workdrive. This template is referenced by a custom CRM function which merges all of
    • Kaizen #229: Email-Deal Associations in Zoho CRM

      Hi All, Welcome back to another week of Kaizen! Emails are a core channel for customer communication in any CRM system. In Zoho CRM, emails can be associated with records across multiple modules. In this post, we will focus on email associations with
    • Deprecation of the Zoho OAuth connector

      Hello everyone, At Zoho, we continuously evaluate our integrations to ensure they meet the highest standards of security, reliability, and compliance. As part of these ongoing efforts, we've made the decision to deprecate the Zoho OAuth default connector
    • Action Required: Update Microsoft SQL Server Security Settings Before February 2026

      Dear Users, We recently deployed security updates in Zoho Analytics that inadvertently caused connection failures for a few customers using Microsoft (MS) SQL Server hosted on older Windows versions (Windows Server 2012, 2012 R2, and 2014). To restore
    • Contacts limit in basic vs standard - what counts? Are customers contacts?

      I’ve been using books for a number years for my small business. I only ever work with 20 clients at any given time. I do purchase services from a number of vendors to run my business, so there are some comtacts there too. I used to use the basic package,
    • Saving issue

      First problem I opened a MS word file in writer. after the work is done, it does not save instantly, I waited for like 10min and it still did not save. second problem When I save a file, then file gets saved as another copy. I just did save, not save
    • Automating Employee Birthday Notifications in Zoho Cliq

      Have you ever missed a birthday and felt like the office Grinch? Fear not, the Cliq Developer Platform has got your back! With Zoho Cliq's Schedulers, you can be the office party-cipant who never forgets a single cake, balloon, or awkward rendition of
    • Create Tasklist with Tasklist Template using API v3

      In the old API, we could mention the parameter 'task_template_id' when creating a tasklist via API to apply a tasklist template: https://www.zoho.com/projects/help/rest-api/tasklists-api.html#create-tasklist In API v3 there does not seem to be a way to
    • How to mix different types of inputs (such as dropdown list and textbox)

      Hi, I'm creating a form called "Room Reservations" for a company. I created a "table" using "Matrix Choice". I created "Room 1", "Room 2" and "Room 3" with the "Questions". I would then like to create two columns with the "Answers", one called "Department"
    • Ability to Set a Unified Tab Order/View for All Users in Zoho Projects

      Hello Zoho Projects Team, We hope you are doing well. We would like to submit a feature request regarding tab/menu organization in Zoho Projects. Current Behavior: The tab (module) order in Zoho Projects is user-specific. Each user (internal or external)
    • Task Order

      Hello! I've recently switched to Zoho Projects and a long time user of MS Project, Asana and LiquidPlanner (which has recently been purchased) and I'm running into a frustration I'm hoping someone can assist with. It has to do with how tasks are ordered
    • Automating CRM backup storage?

      Hi there, We've recently set up automatic backups for our Zoho CRM account. We were hoping that the backup functionality would not require any manual work on our end, but it seems that we are always required to download the backups ourselves, store them,
    • Zoho Books | Product updates | January 2026

      Hello users, We’ve rolled out new features and enhancements in Zoho Books. From e-filing Form 1099 directly with the IRS to corporation tax support, explore the updates designed to enhance your bookkeeping experience. E-File Form 1099 Directly With the
    • Next Page