Kaizen #150 : Track and Monitor Activities in Zoho CRM using the Export Audit Log API

Kaizen #150 : Track and Monitor Activities in Zoho CRM using the Export Audit Log API

Hello all!

Welcome back to another post in our Kaizen series



This post details how to back up and track history of actions, such as those performed on a module (example: Leads), track actions performed by specific CRM users, and filter entries within a specific time range, using the Export Audit Log API introduced in Version 7.

Use Case

Zylker, a startup IT firm, has hired 10 project trainees for a six-month training program for the role of Technical Support Engineers. The manager at Zylker has added each trainee to the Zoho CRM as a user. These trainees interact with customers by giving product demos, attending meetings and calls, creating tasks, and being responsible for making deals won. 

Solution 

Zylker uses Zoho CRM's Export Audit Log API to track trainee activities. By exporting audit logs, the manager monitors how many calls, meetings, and tasks each trainee has completed. This helps the manager highlight areas where trainees need improvement and adjust training programs. After six months, the manager reviews the logs to decide which trainees performed well and should be offered permanent positions.

Note:
Users in the Administrator profile or CEO Role can access the audit logs. However, other users can only view their own and their sub-ordinates' audit Logs.

Exporting Audit Log

The Export Audit Log API is an asynchronous API, and an export job will be scheduled to export the audit log details. The exported audit log will be downloaded in either CSV or ZIP format, depending on the number of entries in the result. You can check the job's status using the Get the Status of the Export Audit Log Job API. Once the job is complete, you can download the results using the Download Export Audit Log Result API.

Let us see how Zylker uses the Zoho CRM API to monitor their trainees' performance.

Create Export Audit Log Job

Sample Request: {api-domain}/crm/{version}/settings/audit_log_export

Request Method: POST

Scope: ZohoCRM.settings.audit_logs.CREATE 

Notes:
  • The above sample request exports up to the last three years of audit log data across all modules in your Zoho CRM. 
  • The input request is optional i.e., if you skip the input request, the system will still export all actions in Zoho CRM. 
  • Use filters to export specific audit entries.

The sample input below is used to export an audit log for all 10 trainees in the Calls, Events, and Tasks modules over a six-month time range.
{
    "audit_log_export": [
        {
            "criteria": {
                "group_operator": "and",
                "group": [
                    {
                        "field": {
                            "api_name": "done_by"
                        },
                        "comparator": "in",
                        "value": [
                            {
                                "name": "Joe",
                                "id": "5725767000000583089"
                            },
                            {
                                "name": "Boyle",
                                "id": "5725767000000583000"
                            },
                            {
                                "name": "John",
                                "id": "5725767000000583001"
                            },
                            .
                            .
                            .

                        ]
                    },
                    {
                        "group_operator": "and",
                        "group": [
                            {
                                "group_operator": "and",
                                "group": [
                                    {
                                        "field": {
                                            "api_name": "audited_time"
                                        },
                                        "comparator": "between",
                                        "value": [
                                            "2024-01-05T00:00:00+05:30",
                                            "2024-06-04T23:59:59+05:30"
                                        ]
                                    },
                                    {
                                        "field": {
                                            "api_name": "module"
                                        },
                                        "comparator": "in",
                                        "value": [
                                            {
                                                "api_name": "Calls",
                                                "id": "5725767000000033015"
                                            },
                                            {
                                                "api_name": "Events",
                                                "id": "5725767000000002195"
                                            },
                                            {
                                                "api_name": "Tasks",
                                                "id": "5725767000000002193"
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    }
                ]
            }
        }
    ]
}
The above input schedules a job to export data that matches the criteria. The response to the above request is given below, and we will discuss how to see the status of the export audit log job and how to download the result in the upcoming sections in this post.

Refer to the Input JSON Keys to Export Audit Log Using Multiple Filters for input keys' explanations.

Note
With filters (either single or multiple criteria), you can export up to 6 months (180 days) of audit log data. Note that the time range should not exceed 180 days. 

Sample Response:

{
    "audit_log_export": [
        {
            "status": "success",
            "code": "SCHEDULED",
            "message": "ExportAuditlog scheduled successfully.",
            "details": {
                "id": "5725767000003525045" //unique job ID of the export audit log job.
            }
        }
    ]
}


The manager has scheduled an export audit log job to review their trainees' activities within the specified time range (six months).

Get the Status of the Export Audit Log Job

The manager at Zylker retrieves the details of the export audit log jobs that were scheduled previously using the POST Export Audit Log API.
  • Exporting All Trainees' Activities: By reviewing the complete log, the manager can analyze the overall performance of all trainees.
  • Filtering Specific trainees' Activities: Once after reviewing the entire log, the manager could filter data of only those trainees with average performance and provide them with the required training to help them improve.
Zylker retrieves the status of all scheduled export audit log jobs using the following URL: 

{api-domain}/crm/{version}/settings/audit_log_export

By default, it returns all the scheduled export jobs.

For retrieving the status of a specific scheduled export audit log job, Zylker uses the following URL:

{api-domain}/crm/{version}/settings/audit_log_export/{export_job_id}

Request Method: GET

Scope:  ZohoCRM.settings.audit_logs.READ 

Here is the sample response showing the status of the export audit log job for all the trainees:

{
    "audit_log_export": [
        {
            "id": "5725767000003525048",
            "status": "finished",
            "job_start_time": "2024-08-07T12:12:39-07:00",
            "job_end_time": "2024-08-07T12:12:44-07:00",
            "expiry_date": "2024-08-14T12:12:39-07:00",
            "created_by": {
                "name": "Jim", //Zylker's Manager
                "id": "5725767000000411001"
            },
            "criteria": {
                "group_operator": "and",
                "group": [
                    {
                        "comparator": "between",
                        "field": {
                            "api_name": "audited_time"
                        },
                        "value": [
                            "2024-01-05T00:00:00+05:30",
                            "2024-06-04T23:59:59+05:30"
                        ]
                    },
                    {
                        "comparator": "in",
                        "field": {
                            "api_name": "module"
                        },
                        "value": [
                            {
                                "api_name": "Tasks",
                                "id": "5725767000000002193"
                            },
                            {
                                "api_name": "Events",
                                "id": "5725767000000002195"
                            },
                            {
                                "api_name": "Calls",
                                "id": "5725767000000033015"
                            }
                        ]
                    }
                ]
            },
            "download_links": [
            ]
        }
    ]
}


Response JSON Keys explanation: 
  • audit_log_export (JSON array) : Contains the details for the audit log export request of the trainees.
  • id (string) : Represents the unique job ID of the export audit log job.
  • status (string) : Represents the status of the export audit log job. Possible values: Progress, Scheduled, Finished, and Failed.
  • job_start_time (string) : Represents the time at which the export job started.
  • job_end_time (string) : Represents when the export job was completed.
  • expiry_date (string) : Represents the expiry time of the exported audit log available in the download links.
  • created_by (JSON object) : Represents the ID and Name of the Zoho CRM user who initiated the export job.
  • criteria (JSON object) : Represents the conditions specified for a specific export audit log job using the Create Export Audit Log API.
  • download_links (JSON array) : Represents the unique downloadable link for the exported audit log. You can use this link to download the log data using the GET - Download Export Audit Log Result API

Download Export Audit Log Result

The manager at Zylker can download the result logs using the the "download_links" JSON array key in the response Get the Status of the Export Audit Log Job API.

An export audit log will be in either CSV or ZIP format, depending on the number of entries in the result. If the audit log contains 100,000 or fewer entries, the system will automatically export the logs in a CSV file. If there are more than 100,000 entries, the logs will be split into multiple CSV files inside a ZIP file, with each CSV file holding up to 100,000 entries. A maximum of 10,00,000 audit entries will be exported in a ZIP file.

Request Method: GET 

Scope: ZohoFiles.files.READ

In our case, download the audit log result in the CSV file format. 
Based on the downloaded results, the manager will analyze the trainees' performance to make hiring decisions and identify areas where those with average performance may need additional training. This approach helps the manager at Zylker to keep track of all trainees' activities regularly.

We trust that this post meets your needs and is helpful. Let us know your thoughts in the comment  or reach out to us at support@zohocrm.com
Stay tuned for more insights in our upcoming Kaizen posts!







    • Sticky Posts

    • Kaizen #197: Frequently Asked Questions on GraphQL APIs

      🎊 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.
    • Kaizen #198: Using Client Script for Custom Validation in Blueprint

      Nearing 200th Kaizen Post – 1 More to the Big Two-Oh-Oh! Do you have any questions, suggestions, or topics you would like us to cover in future posts? Your insights and suggestions help us shape future content and make this series better for everyone.
    • Celebrating 200 posts of Kaizen! Share your ideas for the milestone post

      Hello Developers, We launched the Kaizen series in 2019 to share helpful content to support your Zoho CRM development journey. Staying true to its spirit—Kaizen Series: Continuous Improvement for Developer Experience—we've shared everything from FAQs
    • 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.
    • Client Script | Update - Introducing Commands in Client Script!

      Have you ever wished you could trigger Client Script from contexts other than just the supported pages and events? Have you ever wanted to leverage the advantage of Client Script at your finger tip? Discover the power of Client Script - Commands! Commands
    • 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
    • How I set default email addresses for Sales Orders and Invoices

      I have customers that have different departments that handle Sales Orders and Invoices. How can i set a default email for Sales Orders that's different than the default email for Invoices? Is there a way I can automate this using the Contact Persons Departments
    • Modular Permission Levels

      We need more modular Permissions per module in Books we have 2 use cases that are creating problems We need per module export permission we have a use case where users should be able to view the sales orders but not export it, but they can export other
    • Kaizen #157: Flyouts in Client Script

      Hello everyone! Welcome back to another exciting edition of our Kaizen series, where we explore fresh insights and innovative ideas to help you discover more and expand your knowledge!In this post, we'll walk through how to display Flyouts in Client Script
    • How get stock name from other column ?

      How get stock name from other column ? e.g. =STOCK(C12;"price") where C12 is the code of the stock
    • Adding a developer for editing the client application with a single user license

      Hi, I want to know that I as a developer I developed one application and handed over to the customer who is using the application on a single user license. Now after6 months customer came back to me and needs some changes in the application. Can a customer
    • Download an email template in html code

      Hello everyone, I have created an email template and I want to download it as html. How can i do that? I know you can do it via the campaigns-first create a campaign add the template and download it as html from there. But what if i don't want to create
    • Attachment is not included in e-mails sent through Wordpress

      I have a Wordpress site with Zeptomail Wordpress plugin installed and configured. E-mails are sent ok through Zeptomail but without the included attachment (.pdf file) Zeptomail is used to send tickets to customers through Zeptomail. E-Mails are generated
    • Upcoming Changes to the Timesheet Module

      The Timesheet module will undergo a significant change in the upcoming weeks. To start with, we will be renaming Timesheet module to Time Logs. This update will go live early next week. Significance of this change This change will facilitate our next
    • Best way to schedule bill payments to vendors

      I've integrated Forte so that I can convert POs to bills and make payments to my vendors all through Books. Is there a way to schedule the bill payments as some of my vendors are net 30, net 60 and even net 90 days. If I can't get this to work, I'll have
    • Cant update image field after uploading image to ZFS

      Hello i recently made an application in zoho creator for customer service where customers could upload their complaints every field has been mapped from creator into crm and works fine except for the image upload field i have tried every method to make
    • Billing Management: #4 Negate Risk Free with Advances

      In the last post, we explored how unbilled charges accumulate before being invoiced. But what happens when businesses need money before service begins? Picture this: A construction company takes on a $500,000 commercial building project expected to last
    • Is there an equivalent to the radius search in RECRUIT available in the CRM

      We have a need to find all Leads and/or Contacts within a given radius of a given location (most likely postcode) but also possibly an address. I was wondering whether anyone has found a way to achieve this in the CRM much as the radius search in RECRUIT
    • Zoho CRM Inventory Management

      What’s the difference between Zoho CRM’s inventory management features and Zoho Inventory? When is it better to use each one?
    • Cannot Enable Picklist Field Dependency in Products or Custom Modules – Real Estate Setup

      Hello Zoho Support, I am configuring Zoho CRM for real estate property management and need picklist field dependency: What I’ve tried: I started by customizing the Products module (Setup > Modules & Fields) to create “Property Type” (Housing, Land, Commercial)
    • Get Workflow Metadata via API

      Is there a way to get metadata on workflows and/or custom functions via API? I would like to automatically pull this information. I couldn't find it in the documentations, but I'm curious if there is an undocumented endpoint that could do this. Moderation
    • Zoho Projects - Q2 Updates | 2025

      Hello Users, With this year's second quarter behind us, Zoho Projects is marching towards expanding its usability with a user-centered, more collaborative, customizable, and automated attribute. But before we chart out plans for what’s next, it’s worth
    • FSM setup

      So we have been tinkering with FSM to see if it is going to be for us. Now is the time to bite the bullet and link it to our zoho books and zoho crm. The help guides are good but it would really help if they were a bit more in depth on the intergrations.
    • Upcoming Updates to the Employees Module in Zoho Payroll (US)

      We've made a couple of updates to the Employees module in Zoho Payroll (latest version of the US edition). These changes will go live today. While creating an employee Currently, the Compensation Details section is part of the Basic Details step, where
    • Possible to Turn Off Automatic Notifications for Approvals?

      Hello, This is another question regarding the approval process. First a bit of background: Each of our accounts is assigned a rank based on potential sales. In Zoho, the account rank field is a drop-down with the 5 rank levels and is located on the account
    • ZOHO Creator subform link

      Dear Community Support, I am looking for some guidance on how to add a clickable link within a Zoho Creator subform. The goal is for this link to redirect users to another Creator form where they can edit the data related to the specific row they clicked
    • Allow Resource to Accept or Reject an Appointment

      I have heard that this can be done, is there any documentation on how?
    • Create new Account with contact

      Hi I can create a new Account and, as part of that process, add a primary contact (First name, last name) and Email. But THIS contact does NOT appear in Contacts. How can I make sure the Contact added when creating an Account is also listed as a Contact?
    • Custom Fonts in Zoho CRM Template Builder

      Hi, I am currently creating a new template for our quotes using the Zoho CRM template builder. However, I noticed that there is no option to add custom fonts to the template builder. It would greatly enhance the flexibility and branding capabilities if
    • Python - code studio

      Hi, I see the code studio is "coming soon". We have some files that will require some more complex transformation, is this feature far off? It appears to have been released in Zoho Analytics already
    • Sync desktop folders instantly with WorkDrive TrueSync (Beta)

      Keeping your important files backed up and accessible has never been easier! With WorkDrive desktop app (TrueSync), you can now automatically sync specific desktop folders to WorkDrive Web, ensuring seamless, real-time updates across devices. Important:
    • How To Insert Data into Zoho CRM Organization

      Hi Team I have this organization - https://crm.zoho.com/crm/org83259xxxx/tab/Leads I want to insert data into this Leads module, what is the correct endpoint for doing so ? Also I have using ZohoCRM.modules.ALL scope and generated necessary tokens.
    • Where can I get Equation Editor por Zoho Writer?

      I need to use Math Formulas in my document. Thank you.
    • How can I get base64 string from filecontent in widget

      Hi, I have a react js widget which has the signature pad. Now, I am saving the signature in signature field in zoho creator form. If I open the edit report record in widget then I want to display the Signature back in signature field. I am using readFile
    • Creator roadmap for the rest of 2022

      Hi everyone, Hope you're all good! Thanks for continuing to make this community engaging and informative. Today we'd like to share with you our plans for the near future of Creator. We always strive to strike a good balance of features and enhancements
    • Filtering repport for portal users

      Salut, I have a weird problem that I just cannot figure out : When I enter information as administrator on behalf of a "supplier" portal user (in his "inventory" in a shared inventory system), I can see it, "customer" portal users can see it, but the
    • Zoho Inventory. Preventing Negative Stock in Sales Orders – Best Practices?

      Dear Zoho Inventory Community, We’re a small business using Zoho Inventory with a team of sales managers. Unfortunately, some employees occasionally overlook stock levels during order processing, leading to negative inventory issues. Is there a way to
    • Integración Books para cumplir la ley Crea y Crece y Ley Antifraude (VeriFactu)

      Hola: En principio, en julio de 2025, entra en vigor la ley Crea y Crece y Ley Antifraude (VeriFactu). ¿Sabéis si Zoho va a cumplir con la ley para cumplir con la facturación electrónica conectada a Hacienda? Gracias
    • Zoho One - Syncing Merchants and Vendors Between Zoho Expense and Zoho Books

      Hi, I'm exploring the features of Zoho One under the trial subscription and have encountered an issue with syncing Merchant information between Zoho Expense and Zoho Books. While utilizing Zoho Expense to capture receipts, I noticed that when I submit
    • Is Zoho Sheet available for Linux ?

      Is Zoho Sheet available for Linux ?
    • Zoho Sheet for Desktop

      Does Zoho plans to develop a Desktop version of Sheet that installs on the computer like was done with Writer?
    • 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
    • BUTTONS SHOWN AS AN ICON ON A REPORT

      Hi Is there any way to create an action button but show it as an icon on a report please? As per the attached example? So if the user clicks the icon, it triggers an action?
    • Dropshipping Address - Does Not Show on Invoice Correctly

      When a dropshipping address is used for a customer, the correct ship-to address does not seem to show on the Invoice. It shows correctly on the Sales Order, Shipment Order, and Package, just not the Invoice. This is a problem, because the company being
    • RFQ MODEL

      A Request for quotation model is used for Purchase Inquiries to multiple vendors. The Item is Created and then selected to send it to various vendors , once the Prices are received , a comparative chart is made for the user. this will help Zoho books
    • Next Page