Hey folks! Welcome to a fresh week of Kaizen.
In this post, we will be looking at the Field Trackers in ZOHO CRM APIs. Currently, this support is provided to all the picklist fields (system-defined and custom) and is available by default for a picklist field (Stage) in the Deals module and a datetime field (Rescheduled_To) in the Appointments module.
Field Trackers
Field trackers in ZOHO CRM help you to monitor the changes made to a specific field. It ensures data integrity and compliance as it helps in maintaining the history of changes applied to the critical data.
It captures the details such as who made the change, when the change occurred, the previous and current values of the field. Users can use this data to analyse how a field's value evolved and identify the important patterns/trends in the business.
Picklist Field Trackers
Both system-defined and custom picklist fields support Field Tracker. The history details of the field will be available in a related list with five default fields - picklist values, duration, modified time, modified by, and moved to.
To enable this support for a picklist, follow these steps.
- Go to Setup > Customization > Modules and Fields in your ZOHO CRM account.
- Select your desired module in which you want to create a picklist field tracker.
- Select the settings icon (...) of the required picklist field and click Edit Properties.
- In the Picklist properties page, select the Enable history tracking for picklist values checkbox.
Refer to
this help guide to learn more about picklist trackers and how to add additional fields that you want to view in the picklist history related list. At most, only one picklist field can be tracked within a module.
Consider you are a Manager and you have enabled field tracking for the Lead Status picklist field within the Leads module to trace the timeline of your leads' status changes. Now, take the following steps to obtain the picklist history details:
STEP 2: In the response, check for the history_tracking key in the Lead Status field.
In the history_tracking key,
- the module key, provides both the api_name and id of the new module responsible for tracking picklist history details. As a result, it naturally establishes a relationship with the Leads module, and it will be accessible as a new related list within the same module.
- the duration_configured_field key provides the field api_name and id of the key which contains the duration of the picklist values in that picklist tracking module.
STEP 3: With the api_name of new picklist tracking module, you can fetch the history details in two ways.
(i) Fetching picklist changes of all the leads records from that new module
As we already know that picklist tracking details are maintained in a new module, make a
GET Records API call with the following details.
Replace the module_api_name with the api_name of the picklist tracking module(Lead_Status_History), which is obtained from the fields metadata of the Leads module.
Request URL: {api-domain}/crm/{version}/{module_api_name}
For our case, it will be provided as https://www.zohoapis.com/crm/v5/Lead_Status_History.
Possible Parameters: fields, page, per_page, sort_by and sort_order.
For our case, make a
GET Fields Metadata API call to the related list (
Lead_Status_History). The response will give you the list of fields available in the related list.
Scope: ZohoCRM.modules.ALL (or) ZohoCRM.modules.{module_name}.READ
To fetch individual history records, use this {api-domain}/crm/{version}/{module_api_name}/{record_id} request url and replace the record_id with the id fetched in this response.
(ii) Fetching the history details of a particular lead
This approach fetches the related list data of a particular record in a module (here it is Leads).
Request URL: {api-domain}/crm/{version}/{module_api_name}/{record_id}/{related_list_api_name}
For our case, it will be given as https://www.zohoapis.com/crm/v5/Leads/5545974000004023008/Lead_Status_History.
Request Method: GET
Possible Parameters: fields, page, per_page, sort_by and sort_order.
Scope: ZohoCRM.modules.ALL (or) ZohoCRM.modules.{module_name}.READ
To fetch individual history records, use this {api-domain}/crm/{version}/{module_api_name}/{record_id}/{related_list_api_name}/{related_record_id} request url and replace the related_record_id with the id fetched in this response.
Stage History
In the Deals module, a picklist field called Stage acts as a default field tracker. The history details of this picklist are recorded in a new module called DealHistory. In this module, there are four default fields followed from the Deals module which cannot be unfollowed. They are Expected Revenue, Amount, Probability and Closing date. You can add additional fields from the Deals module to this list based on your requirement.
The module's relationship with the Deals module identifies it as a related list within the Deals module as Stage History. You can retrieve the history details of this default picklist field tracker in those aforementioned two ways.
Let us show you a sample of each way for better understanding.
(i) Fetching picklist changes of all the deals records from DealHistory
Make a
GET Records API call to the DealHistory module with the following details.
Request URL: {api-domain}/crm/{version}/Stage_History or {api-domain}/crm/{version}/DealHistory/{record_id}
Possible Parameters: fields, page, per_page, sort_by and sort_order.
Scope: ZohoCRM.modules.ALL (or) ZohoCRM.modules.DealHistory.READ
(ii) Fetching the history details of a particular deal
Request URL: {api-domain}/crm/{version}/Deals/{record_id}/Stage_History or {api-domain}/crm/{version}/Deals/{record_id}/Stage_History/{related_record_id}
Possible Parameters: fields, page, per_page, sort_by and sort_order.
Scope: ZohoCRM.modules.ALL (or) ZohoCRM.modules.Deals.READ

Appointments' Rescheduled History
In the Appointments module, a datetime field named Rescheduled_To acts as a default field tracker. The history details of this particular field are stored in a separate module with the API Name Appointments_Rescheduled_History__s. It is also accessible as a related list under the Appointments module with the same module API name as the related lists API name. Only the recent 20 rescheduled data of an appointment will be available in this tracker module.
This module has six default fields - Appointment_Name, Rescheduled_Time, Rescheduled_By, Rescheduled_From, Rescheduled_To, Reschedule_Note and Reschedule_Reason. You cannot remove the existing fields or add new fields to this module. The lookup field with display label Appointment Name and API name Appointment_Name points to the corresponding appointment to which the history data belongs.
Apart from fetching the rescheduled history data, Zoho CRM also helps you to CREATE, UPDATE and DELETE the history records for this field. This helps you to synchronise the rescheduled history when importing the Appointments records from a third party application.
Let us look into a few scenarios in which the use of each of the Appointments Rescheduled History CRUD operations.
Scenario 1
As a Manager, you might want to retrieve all the rescheduled appointment history data to determine the most common reasons for rescheduling.
Request URL: {api-domain}/crm/{version}/Appointments_Rescheduled_History__s (or)
{api-domain}/crm/{version}/Appointments__s/{appointment_id}/Appointments_Rescheduled_History__s
Scope: ZohoCRM.modules.appointments_rescheduled_history.READ
Possible Parameters: fields, page, per_page, sort_by and sort_order
The
'204 - No Content' response will be thrown if the reschedule count of the specific appointment is 1. This response will not include the current appointment time, which is the last rescheduling of the appointment. You can retrieve it only using the
GET Appointments API.
Scenario 2
For instance, you are using a third party application for booking appointments and have decided to move to ZOHO CRM. But, losing the rescheduled history data for "not completed" appointments can be a major concern. In such a scenario, you can seamlessly transfer and incorporate the rescheduled data for these appointments with the help of
Add Appointments Rescheduled History API.
In this context, we are just adding new records of rescheduled data to the tracking module(Appointments_Rescheduled_History__s), which records the details of the Rescheduled_To field. Given that Appointments_Rescheduled_History__s is a module, it also allows us to execute UPDATE and DELETE operations, as elaborated in the forthcoming scenarios.
Following are the details of the API:
Request URL: {api-domain}/crm/{version}/Appointments_Rescheduled_History__s
Request Method: POST
Scope: ZohoCRM.modules.appointments_rescheduled_history.CREATE
Sample Request Body:
{ "data": [ { "Rescheduled_From": "2023-09-19T15:00:00+05:30", "Rescheduled_To": "2023-09-22T10:30:00+05:30", "Appointment_Name": { "name": "AC Service - Leota Dilliard (Sample)", "id": "5545974000004330038" }, "Rescheduled_Time": "2023-09-19T15:30:00+05:30", "Rescheduled_By": { "name": "Patricia Boyle", "id": "5545974000000393001" }, "Reschedule_Note": "Customer unavailable", "Reschedule_Reason": "By Customer" } ] } |
You can add up to 100 records in a single API call, with a limit of 20 rescheduled history records allowed for a single appointment.
Scenario 3
To ensure accuracy and completeness, you may want to update the reason and other details for rescheduling the appointment. At times you would even want to insert additional information to the existing history data. In situations like these, use the
Update Appointments Rescheduled History API.
Following are the particulars about this API,
Request URL: {api-domain}/crm/{version}/Appointments_Rescheduled_History__s (or) {api-domain}/crm/v5/Appointments_Rescheduled_History__s/{record_id}
Scope: ZohoCRM.modules.appointments_rescheduled_history.UPDATE
{ "data": [ { "id": "5545974000004365002", "Reschedule_Note": "Team unavailable", "Reschedule_Reason": "By Team" } ] } |
You can update all the POST request JSON keys except the Appointment_Name key. Using this API, you can update a maximum of 100 rescheduled history records per API call.
Scenario 4
As a Manager, you may want to delete certain history entries that contain sensitive or outdated information to comply with the data privacy regulations. You can use the
Delete Appointments Rescheduled History API to remove sensitive/outdated and even duplicate entries.
Following are the details of this API:
Request URL: {api-domain}/crm/{version}/Appointments_Rescheduled_History__s/{record_id}
Scope: ZohoCRM.modules.appointments_rescheduled_history.DELETE
You can delete only one rescheduled history record per API call. The rescheduled history records of an appointment in the recycle bin will still be available in the related list. To remove them, you have to delete the appointment from the recycle bin.
We trust you found this post both beneficial and informative!
Your thoughts and perspectives matter to us. If there is a topic you would like us to delve into or if you have any questions, please feel free to drop a comment below or send us an email at
support@zohocrm.com.
Stay tuned until we circle back to you on next Friday!
Cheers!
Recent Topics
Searching customer field
Hello, When entering a receipt, we select customer information. The customer information is synced with Zoho CRM. However, we can't find the customer information because it searches for words that begin with the entered value. It needs to search for words
Introducing Version-3 APIs - Explore New APIs & Enhancements
Happy to announce the release of Version 3 (V3) APIs with an easy to use interface, new APIs, and more examples to help you understand and access the APIs better. V3 APIs can be accessed through our new link, where you can explore our complete documentation,
Rotate an Image in Workdrive Image Editor
I don't know if I'm just missing something, but my team needs a way to rotate images in Workdrive and save them at that new orientation. For example one of our ground crew members will take photos of job sites vertically (9:16) on his phone and upload
Improved RingCentral Integration
We’d like to request an enhancement to the current RingCentral integration with Zoho. RingCentral now automatically generates call transcripts and AI-based call summaries (AI Notes) for each call, which are extremely helpful for support and sales teams.
Resume Harvester: New Enhancements for Faster Sourcing
We’re excited to share a set of enhancements to Resume Harvester that make sourcing faster and more flexible. These updates help you cut down on repetitive steps, manage auto searches more efficiently, and review candidate profiles with ease. Why we built
Using Zoho Flow to create sales orders from won deal in Zoho CRM
Hi there, We are using Zoho Flow to create sales orders automatically when a deal is won in Zoho CRM. However, the sales order requires "Product Details" to be passed in "jsonobject", and is resulting in this error: Zoho CRM says "Invalid input for invalid
WIDGET in related record list ZOHO CRM; how to get and put data to subform custom fields?
he need: Read and write two custom subform line-item fields on Quotes: Segment_wyceny (picklist/text) and W_pakiecie (number). Write works; read does not return these fields via SDK. Environment Zoho CRM Widget Zoho Embedded App SDK v1.2 Module: Quotes
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
Zoho CRM Tracking Google Enhanced Conversions
Can anyone @Zoho, consultants, or users help me understand if Zoho CRM is going to support Google's Enhanced Conversions? I included some information from Google below about it. We use Google Adwords for our pay per click advertising for lead generation,
zoho click, and nord VPN
Unfortunately, we've been having problems with Zoho Click, where essentially the line cuts off after about a minute's worth of conversation every time we are on VPN. Is there a way we can change this within the settings so it does not cut the line off
Recurring Supervisor Rule Reminders for Open/In-Progress Tickets
Hello Zoho Support Team, I would like to suggest a potential improvement regarding reminders for tickets and activities in Zoho Desk. Currently, it is possible to set reminders only once. In the Supervisor Rules section, it is possible to configure reminders
Connecting Portals from different Zoho apps
Hi, I note that Zoho has functionality for customer portals for several of the Zoho apps, like CRM, Projects, Desk etc. Is there any way to connect these portals? It would be great if we could give our customers access to a portal in which they could
Billing Management: #5 Usage Billing
After understanding the nuances of Advance Billing and Retainers, we will explore one of the booming billing models. Long ago, villagers drew water from a shared well in a small village. The well was a lifeline for the entire community. Ravi, the well
Function #10: Update item prices automatically based on the last transaction created
In businesses, item prices are not always fixed and can fluctuate due to various factors. If you find yourself manually adjusting the item rates every time they change, we have the ideal time-saving solution for you. In today's post, we bring you custom
Inventory Adjustments
Hi, How to transfer the material from one head to another ? Like materials purchased for manufacturing the laptop need to transfer from consumption inventory (Quantity of raw materials reduced) to destination inventory ( Quantity of Laptop increased)
Zoho CRM Community Digest - Aug 2025 | Part 1
Hey everyone! The first half of August went by, and we have a few announcements and some good noteworthy discussions. So, let's take a look at them! Product Updates: Introducing Connected Records feature: Zoho CRM’s Next-Gen UI now includes Connected
Problems with email templates (HTML - Outlook)
Hi there, I've been trying to create a newsletter from the template "Business 4". Everything looks great in the preview, but when I send it to my Outlook inbox, the layout doesn't seems to stick. More particularly: - The line-height is way more reduced, even though I used the line-height tool from the template - Columns but they are sometimes misaligned - Font size is not always the one I've selected. Could you help? Thanks!
Please make it easier to Pause syncing
right now it takes 3 clicks to get there. sounds silly, but can you make it just 2 clicks to get it done instead? thats how dropbox does it, 2 clicks to pause instead of 3.
How to create a Zoho CRM report with 2 child modules
Hi all, Is it possible to create a Zoho CRM report or chart with 2 child modules? After I add the first child module, the + button only adds another parent module. It won't let me add multiple child modules at once. We don't have Zoho Analytics and would
Create static subforms in Zoho CRM: streamline data entry with pre-defined values
Last modified on (9 July, 2025): This feature was available in early access and is currently being rolled out to customers in phases. Currently available for users in the the AU, CA, and SA DCs. It will be enabled for the remaining DCs in the next couple
SalesIQとPageSenseの利用について
初めての投稿で場違いだったらすいません。 弊社ではSalesIQを運用しているのですが、追加でPageSenseの導入もしたいと現場からの声があります。 両サービスともクッキー同意バナーが必要なサービスなのですが 弊社では同意無しに情報はとりませんという方針なので 2つ入れると2つバナーを出す必要がでてきます・・・ 両サービスを運用されてる方があれば運用状況とか教えてほしいです。 PageSenseについては詳細まで機能を理解してないなかでの質問です。
How to integrate Zoho Forms with Zoho CRM on Standard Plan
Hello Zoho Support Team, I am using the Standard Zoho Forms plan (USD 30/user) and I would like to integrate Zoho Forms with Zoho CRM so that certain fields in my forms can be automatically prefilled using data from Deals in CRM. Specifically, I want
CRM : Function to add user name to text field
I have a lookup field in a module that is linked to the CRM users so we can assign a Project Lead to the customer. Sadly Zoho Marketing Automation doesn't sync Lookup fields so I need to extract information from the lookup to text fields: Lookup field
Export PDF File Name
Is it possible to change the default Zoho .pdf naming scheme for inventory items like quotations? Would like to use the the Subject as the default quote name. Is this possible?
How to change the from address from 'no reply' for an email template in CRM
Hi, We have our CRM set up with the from field as sales@XXX. I have just created a series of email templates and sent a test and they are sending from noreply@zoho I have tried searching for how to change the email template but don't have the options
Zoho CRM Client Script - SetCriteria in lookup Field
Hello All One More Zoho CRM Client Script Tips & Trick. Now you can Set the Criteria on Your lookup in zoho CRM, It Comes With a Create Page, Edit Page, and Details Page (Standard). Example:- We have a Room Module that includes Room Name, Status, Campus,
Kaizen #71 - Client Script ZDKs for Detail (Canvas) Page
Hello everyone! Welcome back to another interesting Kaizen post. In this post, we can discuss Client Script ZDKs support for Detail (Canvas) Page. What is Detail (Canvas) Page? A Detail(Canvas) Page allows you to customize the record detail page to your
how to use validation rules in subform
Is it possible to use validation rules for subforms? I tried the following code: entityMap = crmAPIRequest.toMap().get("record"); sum = 0; direct_billing = entityMap.get("direct_billing_details"); response = Map(); for each i in direct_billing { if(i.get("type")
Add Custom Reports To Dashboard or Home Tab
Hi there, I think it would be great to be able to add our custom reports to the Home Tab or Dashboards. Thanks! Chad
Rich-text fields in Zoho CRM
Hello everyone, We're thrilled to announce an important enhancement that will significantly enhance the readability and formatting capabilities of your information: rich text options for multi-line fields. With this update, you can now enjoy a more versatile
Create Lead Button in Zoho CRM Dashboard
Right now to create Leads in the CRM our team is going into the Lead module, selecting the "Create Lead" button, then building out the lead. Is there anyway to add the "Create Lead" button or some sort of short cut to the Zoho CRM Dashboard to cut out
Zoho Reports Duplicating Entries
I have a custom costing tab with a table where we entre invoices. These are under a Heading (PO Subject) and notes added in the form with different line items. In the reports, I have organised the report to group per PO Subject, with the total of the
Validation Rule Not Working for Mandatory Field in Zoho Blueprint
As a Zoho user, we created a validation rule for a specific field. However, we noticed that when we made the same field mandatory within a Blueprint, the validation rule we defined did not work. When we reported this issue to Zoho Support, they stated
Notes Issues
Been having issues with Notes in the CRM. Yesterday it wasn't showing the notes, but it got resolved after a few minutes., Now I have been having a hard time saving notes the whole day. Notes can't be saved by the save button. it's grayed out or not grayed
Export from Contacts module to Products module in Zoho CRM
Good afternoon, I would like to send a number of contact info from the Contacts module into the customized module (tickets to an event) in one operation. I have selected several contacts in the Contact module (people who I have labelled as people I want
Zoho Commerce
Hi, I have zoho one and use Zoho Books. I am very interested in Zoho Commerce , especially with how all is integrated but have a question. I do not want my store to show prices for customers that are not log in. Is there a way to hide the prices if not
Can’t receive emailI c
I have generated a basic for but when I submit it I don’t get a email, I’ve been in the settings and tested me email, all appears correct, can you please help me
Data Capture for Historical Activity (Especially One Lead Downloading Variois reports without Overwriting the info)
Is there a better way in Zoho CRM to capture and archive a lead’s historical activity—specifically whenever they download reports—so that the data is stored without being overwritten?”
Client Script - Updating Field Value in Detail Page of a Lead
Hello, I'm trying to use Client Script To enrich some data of the Lead when one of my User fill the "City" field in the detail page of the Lead. This is my Script: log (value); var response = ZDK.Apps.CRM.Functions.execute("getInfoCitta", { "nomeCitta":
Auto shapes in Zoho sheet.
Does Zoho sheet supports inserting auto shapes (rectangle, circle...). I did not see any option to do so. If its not supported currently, is there any plans on bring in this features. Any timelines ?
Next Page