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 #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.
    • Kaizen #210 - Answering your Questions | Event Management System using ZDK CLI

      Hello Everyone, Welcome back to yet another post in the Kaizen Series! As you already may know, for the Kaizen #200 milestone, we asked for your feedback and many of you suggested topics for us to discuss. We have been writing on these topics over the
    • Recent Topics

    • Depreciated mergeAndStore Function Help!

      Hello, I have a function designed to create a PDF containing information from the fields in a Deals record. There is a Writer Mail Merge template in WorkDrive that is populated via Deluge code, and a copy of the resulting PDF is then attached to the record.
    • Can I execute two 'functions' when completing a mail merge from CRM?

      Hi, I have set up a mail merge from CRM Deals to a template. I want a copy of this to be saved in Workdrive, and then a copy also saved back into the deal record from which the merge occurred. I can do both independent of each other, and managed to get
    • External Share > Edit: Cannot Create Zoho Files

      Hi Zoho, When we create an external share link with Edit permission, our external users are unable to create a Zoho file (Zoho Writer, Zoho Sheet and Zoho Show). They can only upload files. They can edit the Zoho files if we create them internally and
    • Using IMAP configuration for shared email inboxes

      Our customer service team utilizes shared email boxes to allow multiple people to view and handle incoming customer requests. For example, the customer sends an email to info@xxxx.com and multiple people can view it and handle the request. How can I configure
    • the custom domain forwards by default to the old career site / how to switch it off??

      dear friends, how to switch off the old version of the career site?? The set up custom domain forwards directly to the old site, so that I cant publish it... Any ideas? Thank you! KR, Victoria
    • E-Invoicing in Belgium with Zoho Books

      Starting January 1, 2026, Belgium is introducing mandatory electronic invoices (e-invoicing) for all B2B transactions between VAT-registered businesses. This means that invoices and credits notes must be exchanged in a prescribed digital format. How E-Invoicing
    • Managing functions

      Can someone let me know if there are any plans to improve the features for managing functions in CRM? I have lots of functions and finding them is hard. The search only works on the function name and the filter only works on function type. I have created
    • AI Interview Insights: Turn Recorded Interviews into Quick Transcripts & Summaries

      Evaluating interviews shouldn’t require replaying long recordings or taking manual notes. With AI Interview Insights, you can now review complete transcripts and AI-generated summaries of your One-way (Recorded) interviews right inside Zoho Recruit. This
    • Archiving Contacts

      How do I archive a list of contacts, or individual contacts?
    • Suggestion: Associating Assets with Company in Zoho FSM

      Hello Team, I would like to share an idea based on practical experience. Currently, all assets in the Zoho FSM Asset module are linked to a specific contact person. I would like to know if it is possible to associate assets with a company instead. This
    • Zoho Mail iOS app update - RTL languages support and access emails using permalink and universal link, image upload resolution

      Hello everyone! In the most recent version of the Zoho Mail iOS app update, we have brought in support for RTL languages(Arabic and Urudu), providing a seamless reading experience with proper text alignment and layout throughout the app. We have also
    • Presenting ABM for Zoho CRM: Expand and retain your customers with precision

      Picture this scenario: You're a growing SaaS company ready to launch a powerful business suite, and are looking to gain traction and momentum. But as a business with a tight budget, you know acquiring new customers is slow, expensive, and often delivers
    • Why are emails sending with @viazohocrm.com ?

      I just sent out mass emails from CRM. They are sending from the email below and people cannot reply, and they are getting this message: Address not found Your message wasn't delivered to sales.XXXXXXXX.com.au@viazohocrm.com because the address couldn't
    • 2024 Email Authentication Standards: Elevating Security with Google and Yahoo

      In contemporary email communication, email authentication plays a pivotal role in mitigating email fraud, spam, and phishing attacks. Brace yourself for a new level of security. Starting February 2024, Gmail and Yahoo will be implementing robust email
    • Duplicating and referencing datasets

      I am moving from PowerBI to Zoho Analytics and while I find Zoho easier to use in many ways, there is one function that I use in PowerBI that I have not been able to find in Zoho.   I have several data sets that I need to modify in different ways to get
    • 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
    • Zoho Inventory Now Supports VeriFactu for Businesses in Spain

      Starting from January 1, 2026, Spain requires real-time invoice reporting for all B2B transactions. From July 2026, this requirement will extend to B2C transactions as well. All reporting must be carried out through the VeriFactu to AEAT (Agencia Estatal
    • Why am I seeing deleted records in Zoho Analytics syncing with Zoho CRM?

      I have done a data sync between Zoho CRM and Zoho Analytics, and the recycle bin is empty. Why do I see deleted leads/deals/contacts in Zoho Analytics if it doesn't exist in Zoho CRM? How can I solve this problem? Thanks
    • Employee self-service portal: Onboarding and continuous learning platform for support reps

      Hello everyone, In any organization, employees must go through multiple courses to learn about the product, their organization's standards, and how to respond to customer queries using the knowledge base articles available. This typically requires completing
    • Enhancements to Zoho Map integration tasks

      Hello everyone, We're excited to announce enhancements to the Zoho Map integration tasks in Deluge, which will boost its performance. This post will walk you through the upcoming changes, explain why we're making them, and detail the steps you need to
    • Let’s Talk Recruit: Meet Zia, your all-in-one AI assistant (Part-3)

      Welcome back to the Let’s Talk Recruit series. In the part 2 post, we explored how Zia has evolved with smarter summaries and seamless AI-assisted content creation. This time, we’re diving into the latest upgrades that take productivity even further —
    • Announcing Early Access to "Zoho CRM for Everyone" — A new and exciting update to Zoho CRM

      Update : Zoho CRM For Everyone's Nextgen Interface gets an upgrade! Hello everyone, We’ve updated the Zoho CRM for Everyone Nextgen interface based on your feedback. The UI is now simpler with a unified sidebar, a more visible global search and features
    • Unable to verify domain for Zoho People

      I have added TXT records in my DNS (GoDaddy) [screenshot attached], but unable to verify even after 12 hours after adding. On checking the console, it shows some errors [screenshot attached]. It appears that the verification flow is broken - please provide
    • Zoho Invoice Now Supports VeriFactu for Businesses in Spain

      Starting from January 1, 2026, Spain requires real-time invoice reporting for all B2B transactions. From July 2026, this requirement will extend to B2C transactions as well. All reporting must be carried out through the VeriFactu to AEAT (Agencia Estatal
    • Zoho Billing Now Supports VeriFactu for Businesses in Spain

      Starting from January 1, 2026, Spain requires real-time invoice reporting for all B2B transactions. From July 2026, this requirement will extend to B2C transactions as well. All reporting must be carried out through the VeriFactu to AEAT (Agencia Estatal
    • Weekly Tips : Make your email content error free with Spell check in Zoho Mail

      As someone who writes multiple emails a day, we are bound to make both grammatical and spelling errors. Most of them we may not even notice, and even if we do, we may not have the time to correct each one individually when we are in a hurry. So how do
    • Introducing Enhanced Storage Management

      We’re excited to roll out two new enhancements in Zoho Recruit, Subscription Information and Storage Management — designed to give admins complete visibility into subscription details, feature limits, and storage consumption — all from one place inside
    • How to add Product Add-Ons, Mandatory Forms, and Auto-Save Address in Zoho Commerce

      Hi all, I need help setting up several behaviors in Zoho Commerce. I can’t find the correct configuration options, so I want to confirm whether these are supported or if there is a workaround. 1. Product-Specific Add-Ons (Example: GWB Subscription) When
    • how to download all my files

      We are in the middle of zoho docs to zoho workdrive migration. I can not access my zoho docs page. I get redirected immediately to a zoho workdrive page. I would like to download all my files so that I have a backup in case something goes wrong with the
    • Convert Zoho Books SalesOrder - Invoice

      Converting a Zoho Books Sales Order into an Invoice Using the SalesOrder Convert API Hello Zoho Developers, Today, we are sharing a simple and effective solution to convert a Zoho Books Sales Order into a Zoho Books Invoice using the SalesOrder Convert
    • Zoho Expense - Report Templates

      Hi Expense Team, I do a recurring trip once every week which has the same cost: Per diem Milage Toll Payment It would be great if there was a feature which allowed me to clone a previously submitted report or create a template reports. This would save
    • How to add tabular data when execute Add Record API

      Hi everyone! I was send api updateRecord follow by this request url : https://people.zoho.com/people/api/forms/json/<formLinkName>/updateRecord with parameters "inputData", "tabularData", "recordId". Ex picture below And response success: But. When I
    • Tip #51- Centralized Contact Management for Better Remote Support- 'Insider Insights'

      For our final topic of November, we’re diving into one of the most helpful features in Zoho Assist, the Contacts section on Zoho Assist;s dashboard. Whether you’re managing multiple clients, tracking past sessions, or simply looking to streamline your
    • Using gift vouchers

      We would like to be able to offer a limited number of gift vouchers, of varying values, to our customers, and are looking for the best way to do this. We have looked at Coupons and Gift Certificates, but neither seem to fit the bill perfectly. Coupons:
    • CRM Related list table in Zoho analytics

      In Zoho Analytics, where can I view the tables created from zoho crm related lists? For example, in my Zoho CRM setup, I have added the Product module as a related list in the Lead module, and also the Lead module as a related list in the Product module.
    • Option to Customize Career Site URL Without “/jobs/Careers”

      Dear Zoho Recruit Team, I hope you are doing well. We would like to request an enhancement to the Career Site URL structure in Zoho Recruit. In the old version of the career site, our URL was simply: 👉 https://jobs.domain.com However, after moving to
    • Zoho CRM for Everyone's NextGen UI Gets an Upgrade

      Hello Everyone We've made improvements to Zoho CRM for Everyone's Nextgen UI. These changes are the result of valuable feedback from you where we’ve focused on improving usability, providing wider screen space, and making navigation smoother so everything
    • Say Hello to Telephony in Zoho FSM

      Zoho FSM now brings complete telephony support so your team can manage inbound and outbound calls without switching tabs. Faster responses, smarter routing, and total call visibility—all in one place. Choose the telephony setup that works for you Zoho’s
    • Zoho Sign - Zoho CRM extension upgrade

      Hi everyone, We've updated Zoho Sign extension for Zoho CRM with significant internal changes. Impact on existing Zoho Sign extension users Users using the extension without customization If you are using the integration without implementing Zoho Sign's
    • Is there a way to create a desktop shortcut for a website course portal?

      Hello everyone, I recently got a laptop and bought an online course from a website, Skillwint.com, which I visit regularly. I open that site many times a day and want to create a desktop shortcut so I can open it directly instead of searching in the browser
    • Next Page