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 #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
    • Kaizen #152 - Client Script Support for the new Canvas Record Forms

      Hello everyone! Have you ever wanted to trigger actions on click of a canvas button, icon, or text mandatory forms in Create/Edit and Clone Pages? Have you ever wanted to control how elements behave on the new Canvas Record Forms? This can be achieved
    • Kaizen #142: How to Navigate to Another Page in Zoho CRM using Client Script

      Hello everyone! Welcome back to another exciting Kaizen post. In this post, let us see how you can you navigate to different Pages using Client Script. In this Kaizen post, Need to Navigate to different Pages Client Script ZDKs related to navigation A.
      • Recent Topics

      • Editing the Ticket Properties column

        This is going to sound like a dumb question, but I cannot figure out how to configure/edit the sections (and their fields) in this column: For example, we have a custom "Resolution" field, which parked itself in the "Ticket Information" section of this
      • Zoho Bookings and Survey Integration through Flow

        I am trying to set up flows where once an appointment is marked as completed in Zoho Bookings, the applicable survey form would be sent to the customer. Problem is, I cannot customise flows wherein if Consultation A is completed, Survey Form A would be
      • "Total Hours" on Employee Attendance Report

        I'm learning that in Zoho jargon, "total hours" does not include paid breaks. Or at least not the way that my setup is working. That seems a little weird to me, since most jurisdictions in the US don't differentiate between time spent on paid break and
      • Allow Managers to Create Shifts for Their Departments in Zoho People

        Hello Zoho People Product Team, Greetings and hope you are doing well. This feature request is related to Zoho People - please don't move it to zoho one! We would like to submit a feature request regarding shift management permissions in Zoho People.
      • Bulk upload image option in Zoho Commerce

        I dont know if I am not looking into it properly but is there no option to bulk upload images along with the products? Like after you upload the products, I will have to upload images one by one again? Can someone help me out here? And what should I enter
      • CRM Percent custom fields: When will it show the % symbol and behave like %?

        1. Actually Percent custom fields fail to show the % symbol. 2. When in formulas Percent fields work like number: 100 x 5% = 5 ideal world 100 x 5% = 500 what happens actually 3. When importing Percent fields the % symbol has to be removed and the data
      • Integration with...

        Dear Zoho Commerce team, Please could you consider the integration within Zoho Commerce / Inventory and Qapla'? (https://www.qapla.it/en/) This app is better than Aftership in many ways: - Aftership integration require PRO plan and price start from more
      • Image field in custom module

        Hi guy, Is there any hope of adding a custom image field in the custom module? We created a custom module to keep track of assets, and it would be helpful if we could attach an image to the record. Thanks Rudy
      • Repeat Column merge in ZOHO writer columns doesn't allow to set max columns per row

        I'm using ZOHO writer to merge data from a ZOHO CRM subform and I want it to make a table. We're using Insert Table for Column Repeat, because this is what we need. (Name of column (Teamname) and underneath that a list of names of teammembers). It works
      • Generate leads from instagram

        hello i have question. If connect instagram using zoho social, it is possible to get lead from instagram? example if someone send me direct message or comment on my post and then they generate to lead
      • IF Statement in Zoho CRM Formula Field

        Hi, I am attempting to write a formula field that will give me one result if one statement AND another statement are true, then a different value if the first statement AND a different statement are true, else 0. Stated differently: if account = destination
      • Automatically CC an address using Zoho CRM Email Templates

        Hi all - have searched but can't see a definitive answer. We have built multiple email templates in CRM. Every time we send this we want it to CC a particular address (the same address for every email sent) so that it populates the reply back into our
      • Adding Markdown text using Zoho Desk API into the Knowledge Base

        Hi Zoho Community members, We currently maintain the documentation of out company in its website. This documentation is written in markdown text format and we would like to add it in Zoho Knowledge Base. Do you know if there is REST API functionality
      • Create case via email

        Good Afternoon, I have just registered and am taking a look around the system. Is it possible to create a case via email.  I.e. an employee/client/supplier emails a certain address and that auto generates the case which then prompts a member of staff
      • Need a Universal Search Option in Zohobooks

        Hello Zoho, Need a Universal Search Option in Zohobooks to search across all transactions in our books of accounts. Please do the needful Thanks
      • Custom Sorting based on other columns in table

        I need the ability to apply custom sorting to a text-based dimension in the X axis where the sorting is based on another column in the table. For example, I have a chart report where the X axis is a text label. I would like to be able to sort those text
      • Locked Notebook

        Hi, I hadn't used my Notebook in some time and was refamiliarizing myself with it. I clicked a lock icon and now I can't unlock. When I hit the information or unlock icons I'm taken to a page with the notebook icon and a keyboard. When I type, nothing
      • Zoho Books blocks invoicing without VeriFactu even though it is not mandatory until 2027

        I would like to highlight a very serious issue in Zoho Books for Spain. 1. The Spanish government has postponed the mandatory start of VeriFactu to January 1st, 2027. This means that during all of 2026 businesses are NOT required to transmit invoices
      • Unable to produce monthly P&L reports for previous years

        My company just migrated to Books this year. We have 5+ years financial data and need to generate a monthly P&L for 2019 and a monthly P&L YTD for 2020. The latter is easy, but I'm VERY surprised to learn that default reports in Zoho Books cannot create
      • Hide fields only for creation

        Hello, I'd like to hide some fields only during the creation of a contact in Zoho CRM. In fact I have some fields that are automatically calculated thanks to an automation, so when my users create a contact I don't want them to fill those fields. I know
      • Can I hide empty Contact fields from view?

        Some contacts have a lot of empty fields, others are mostly filled. Is there a way I can hide/show empty fields without changing the actual Layout? I would like to de-clutter my view, and also be able to add information later as I am able. I would be willing to learn to code a button, but I am highly confused about it and thus worried it would be beyond me.  I've looked at a lot of the developer documents and I'm not able to make a lot of sense of them.  Thank you in advance to anyone who knows the
      • Issues with Zoho Sheet in Mac

        I have downloaded the Zoho App from App Store but It is failing to Save As, Open & Download Operations. App Store
      • Weekly Sales Summary

        Is it possible to generate a weekly report in Zoho Books to show -$$ amount of estimates generated -# of estimates generated by Salesperson -$$ amount of Sales Orders created -$$ amount of Invoices generated
      • 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. 
      • OpenAPI Specs are just plain wrong

        The provided yml files for generating the OpenAPI specs are absolutely riddled with errors and inconsistencies. From missing fields on the objects, to just incorrectly named resource objects. I'm having to go through and manually changing the spec to
      • Why Sharing Rules do Not support relative date comparison???

        I am creating a Sharing Rule and simply want to share where "Last Day of Coverage" (Date field) is Greater than TODAY (Starting Tomorrow). However, sharing rules don't have the option to compare a date field to a relative date (like today), only to Static
      • How create a draft via workflow?

        I wish to create a workflow rule for specific emails that creates a draft response - not an automatic email reply, but just a draft with a set response ready to be verified by an agent who can then manually select recipients. Alternatively, the workflow
      • About Meetings (Events module)

        I was working on an automation to cancel appointments in zoho flow , and in our case, we're using the Meetings module (which is called Events in API terms). But while working with it, I'm wondering what information I can display in the image where the
      • Custom Footer – Zoho Writer Document

        Hello everyone, I’m having an issue adding a custom footer in a Zoho Writer document. I would like to insert my company information (including a logo + address) in the footer. The problem is that when I add these elements, the main content of my pages
      • From Zoho CRM to Paper : Design & Print Data Directly using Canvas Print View

        Hello Everyone, We are excited to announce a new addition to your Canvas in Zoho CRM - Print View. Canvas print view helps you transform your custom CRM layouts into print-ready documents, so you can bring your digital data to the physical world with
      • Workflow Down/Bug

        We have a workflow that sends an email to one of our internal departments 10 minutes after a record is created in a custom module. The workflow actually works correctly. However, we have now noticed that on January 8, between 3:55 p.m. and 4:33 p.m.,
      • Report grouping

        I have added a grouping in a report but it is not working how i had expected. I wanted to group a summary on a field named Size but when i add the grouping the report is still showing me each record and making a summary at the bottom of the report. What
      • Social Media Simplified with Zoho Social: Preview your Instagram grid before posting

        For a platform like Instagram that relies on visual appeal, it's important that you plan your image and video content in a way that holds your audience's attention. Planning your grid ahead of time gives you the benefit of understanding how your posts
      • FSM - Timesheet entires for Internal Work

        Hi FSM Team, Several of my clients have asked how they can manage internal timesheets within Zoho FSM. Since their technicians already spend most of their day working in FSM, it would be ideal if they could log all working hours directly in the FSM app.
      • Free Webinar: Zoho Sign for Zoho Projects: Automate tasks and approvals with e-signatures

        Hi there! Handling multiple projects at once? Zoho Projects is your solution for automated and streamlined project management, and with the Zoho Sign extension, you can sign, send, and manage digital paperwork directly from your project workspace. Join
      • VAT rates - exempt and out of scope

        Good Evening, UK based company here. I am a bit confused in respect of setting up VAT rates for exempt goods and services; at present I am simply leaving the VAT rate blank in the transactions in order to prevent any VAT appearing in the VAT return. When
      • Are there settings for hyperlinks?

        Clicking a hyperlinked cell in Sheet creates this little pop-up with the actual hyperlink inside. Is it possible to have a 1-click link where if you click the cell it opens the link directly with no pop-up?
      • How to loop through Multiple Upload and Display Actual File Name

        I have been reading the help on the File Upload Control and reviewed the Deluge help on files and I can not figure out how to loop through the uploaded files and do anything but get the automatically created file names. The code below will run but each
      • abou arattai

        I want to use the Arattai app for business purposes, so please convert my account to a business account.I have my own invoice app, and I want to link it with the Arattai app for direct messaging.
      • Sending automated messages that appear in the ticket's conversation thread

        Good morning, esteemed Zoho Desk community, warm greetings Today I am here to raise the following problem, seeking a solution that I can implement: I need to implement an automation that allows me to send reminder messages to customers when I am waiting
      • Next Page