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
Cannot see Application from Lookup field
Hi all, I am trying to access data for an application on our account via a lookup field; however, the application doesn't appear in the dropdown at all. Can anyone shed any light on this, please? I have asked Zoho support; however, they're just as confused,
Cannot see correct DNS config for mail after moving domain to another provider
I have moved my domain from one provider to another and after that zoho mail stopped working (expected). Problem is, zoho mail admin panel still shows (10 hours after move) that all records are correct while I haven't changed anything in my domain DNS
Zoho CRM Meetings Module Issues
We have a use-case that is very common in today's world, but won't work in Zoho CRM. We have an SDR (Sales Development Rep) who makes many calls per day to Leads and Contacts, and schedules meetings for our primary Sales Reps. He does this by logging
Zoho Books integration sync from Zoho CRM does not work
Hi Zoho Community & Zoho Support We just tried to get a sync some products into Zoho Books from CRM using the native sync and we're getting an error: "It looks like some mandatory fields you're trying to map are empty. Please provide valid field names
P & L Sub-categorized accounts
How can I show sub-categorized Income and Expense accounts on the P & L report?
Report showing Bill Details with Project and Sales Invoice Number
Hi There, I am hoping that someone can help, I am looking for report that can show the bill and expense details along with project its as assigned to and the invoice number that the sales has been raised in. The goal is I can filter a customer/project
Advanced Payment for Inventory Items with serial numbers
Hello, We sell equipment that we track the unique serial numbers on using Sales Orders. We can charge the customers an advanced payment, then the balance on delivery. We cannot figure out a way to do this in Books/Inventory: - Cannot part invoice a SO
Is it possible to restrict ZCRM user to see only custom views created by administrator
I have segmented data in my CRM and I want to allow different users to be able to see only parts of it based on some criteria. I've tried to create and share a custom view, but then there is always an option for user to see all open lead for example.
Issues Logging into ZOHO
Hello, one of my coworkers is having issues logging into ZOHO, she has requested a code when entering and the email is correct but she has not received the code. can you help us with this?
Google Fonts Integration in Pagesense Popup Editor
Hello Zoho Pagesense Team, We hope you're doing well. We’d like to submit a feature request to enhance Zoho Pagesense’s popup editor with Google Fonts support. Current Limitation: Currently, Pagesense offers a limited set of default fonts. Google Fonts
Add Popup Rejection Metrics to Reports
Hello Zoho PageSense Team, We would like to request improved reporting for popup interactions. Current Limitation: PageSense currently provides conversion data, but there is no clear visibility into: Popup rejections Popup closes (✕ button clicks) Dismissals
Ability to Reset / Reinitialize Popup Cookies
Hello Zoho PageSense Team, We would like to request the ability to manually reset popup cookies. Current Limitation: At the moment, it is not possible to initiate a new popup cookie from the our side. Visitors who rejected or closed a popup will not see
Control Popup Cookie Expiration Duration
Hello Zoho PageSense Team, We would like to request an enhancement related to popup cookie management. Current Limitation: Currently, PageSense popup cookies remain active for 365 days, and this duration cannot be modified by us. If a visitor closes or
Clone / Export Popup Design Across PageSense Projects
Hello Zoho PageSense Team, We hope you’re doing well. We would like to request an enhancement that allows popup designs to be reused across different PageSense projects. Problem Statement: Currently, Zoho PageSense allows popups to be duplicated only
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?
Automatically include all ticket attachments in the ticket resolution email
Hello Zoho Community, We are implementing Zoho Desk in a real customer-facing production environment and have run into a limitation that is becoming a blocking requirement for our clients. The problem When a ticket is closed or resolved, Zoho Desk sends
Finding text within a ticket: Expand All or Search this Ticket
The auto-collapse feature within a ticket is nice for screen scrolling, however it makes it difficult to find text within the ticket if the email is collapsed. In fact you cannot find text if it is collapsed. I would like to propose a feature that allows
Books & Desk. Client mapping
Hi, I’ve been using Zoho Books for several years and am now looking to improve my customer service. I'm experimenting with Zoho Desk and want to sync and map my client data from Zoho Books. However, it seems that mapping requires both contacts to have
String handling
If I cut a currency string from a quote and try and paste it into the Deal "Amount", it will fail unless I manually delete any commas. Dollar signs are no problem, but comma's seem to fail. Please correct this Input Validation error.
What's new in Zoho Sheet: Simplify data entry and collaboration
Hello, Zoho Sheet community! Last year, our team was focused on research and development so we could deliver updates that enhance your spreadsheet experience. This year, we’re excited to deliver those enhancements—but we'll be rolling them out incrementally
Feature Request - Allow Customers To Pick Meeting Duration
Hi Bookings Team, It would be great if there was an option to allow customers to pick a duration based on a max and minimum amount of time defined by me and in increments defined by me. For example, I have some slots which are available for customers
Support for Custom Fonts in Zoho Recruit Career Site and Candidate Portal
Dear Zoho Recruit Team, I hope you're doing well. We would like to request the ability to use custom fonts in the Zoho Recruit Career Site and Candidate Portal. Currently only the default fonts (Roboto, Lato, and Montserrat) are available. While these
YouTube Live streaming? how to? Zoom has this feature, built-in. Can't find it on zoho meetings.
YouTube Live streaming? how to? Zoom has this feature, built-in. Can't find it on zoho meetings.
Feature Request - A Way To Search Item Groups
Hi Inventory Team, I can't find any way to filter or search by fields of Item Groups. It would be great to see that functionality added. I have a use case where a single product might come from 5 or more suppliers and each supplier's item is an Item in
Feature Reqeust - Include MPN In Selectable FIelds
I have noticed that the MPN is not available to show in the list view of Items. Please consider adding it as EAN, UPC and ISBN are all available, so it doesn't make much sense to exclude this similar option. Thanks for considering my feedback.
Feature Request - Option To Hide Default System Fields on Items
Hi Zoho Inventory Team, As far as I know it is not possible to hid some of the defult system fields on Items, such as UPC, MPN, EAN, ISBN. A good use case is that in many cases ISBN is not relevant and it would be an improved user experience if we could
Making an email campaign into a Template
I used a Zoho Campaign Template to create an email. Now I want to use this email and make it a new template, but this seems to be not possible. Am I missing something?
Campaigns does not work!
I am running into so many problems trying to use Zoho Campaigns, that I am seriously considering dropping the app from my (shrinking) list of Zoho applications I actually use. Apart from having to fight the software trying to create a design and email,
Feature Request - Make Available "Alias Name" Field In Item List View
Hi Zoho Inventory Team, I have noticed that the "Alias Name" field does not appear on the list of selectable columns in the Customise Columns feature in the Items module. This would be very useful to see for businesses who are using the Alias Name field
Marketing Automation
L.S. Marketing Automation is and has always been part of the Zoho One bundle - according to the information provided on the Zoho Website. Why when I open Marketing Automation do I get the following message?: "Your trial has expired. We hope you enjoyed
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
Bigin, more powerful than ever on iOS 26, iPadOS 26, macOS Tahoe, and watchOS 26.
Hot on the heels of Apple’s latest OS updates, we’ve rolled out several enhancements and features designed to help you get the most from your Apple devices. Enjoy a refined user experience with smoother navigation and a more content-focused Liquid Glass
project name field issue- n8n
Hey guys, I have a question. I want to create a new product using the workflow. The problem is with the product name field; I don't know how to fill it in. The workflow starts with retrieving information from the leads table, retrieving links to scrape
How to filter Packages in zoho inventory api
Hi Team, I want to perform some tasks in a schedular on the packages which are in "Shipped" state. I tried to use filter_by in my api call but in return I get response as {"code":-1,"message":"Given filter is not configured"} My Api request is as follows
CRM
Is anyone else experiencing this issue? Our company is not moving out of using Gmail's web app. It just has more features and is a better email program than Zoho Mail. Gmail has an extension (Zoho CRM for Gmail) that we're using but we've found some serious
ZOHO add-in issue
I cannot connect ZOHO from my Outlook. I am getting this error.
Syncing with Google calendar, Tasks and Events
Is it possible to sync Zoho CRM calendar, task and events with Google Calendar's tasks and events. With the increasing adoption by many major tool suppliers to sync seamlessly with Google's offerings (for instance I use the excellent Any.do task planning
How can i view "Child" Accounts?
It can be very useful in our field of business to know the parent-child account relationship. However, there seems to be a shortcoming in the parent account view: no child account list. How can we view the child accounts per each account?
Ability to assign Invoice Ownership through Deluge in FSM
Hi, As part of our process, when a service appointment is completed, we automated the creation of the invoice based on a specific business logic using Deluge. When we do that, the "Owner" of the invoice in Zoho FSM is defaulted to the SuperAdmin. This
Easily perform calculations using dates with the new DATEDIF function
Hey Zoho Writer users! We've enhanced Zoho Writer's formula capabilities with the new DATEDIF function. This allows you to calculate the difference between dates in days, months, and years. Function syntax: =DATEDIF(start_date, end_date, unit) Inputs:
Next Page