Zoho CRM offers several built-in ways to remove unwanted records in bulk — from a simple list-view mass delete to automated deduplication tools that merge and discard duplicate entries simultaneously.
Why this matters
As your database grows, stale leads, test records, and duplicates accumulate quickly. Cleaning them up in one-by-one fashion is impractical at scale. Knowing which bulk-deletion and merge-based removal paths are available in Zoho CRM saves hours of manual effort and keeps your pipeline data reliable.
> Beam Help is an independent expert support resource for Zoho products — not official Zoho support.
---
Step-by-step
Option A — Delete multiple records from a module list view
Step 1. Navigate to the module (e.g., Leads, Contacts, Accounts) where you want to remove records. Use filters or a saved custom view to narrow the list to only the records you intend to delete.
Step 2. Check the checkbox at the top of the list to select all visible records on the page, or tick individual checkboxes next to each record you want to remove.
Step 3. With records selected, look for the Delete option in the action bar that appears at the top of the list view. Confirm the deletion when prompted. Deleted records are moved to the Recycle Bin and can be restored if needed. [4]
---
Option B — Remove duplicates using the built-in Deduplicate (Auto-merge) tool
When records are duplicates rather than simply unwanted, the cleanest removal path is to merge them — the child records are deleted automatically after the merge completes. [3]
Step 1. Go to Setup in Zoho CRM and locate the Deduplicate Records tool under the data management section. This tool performs a bulk duplicate scan across a module. [3]
Step 2. Select the module you want to scan — the tool covers Leads, Contacts, Accounts, Vendors, Deals, and Custom modules. [3]
Step 3. Choose the field(s) on which duplicates should be identified (e.g., Email). Zoho CRM will scan for records sharing identical values in those fields and group them. [2]
Step 4. Review the duplicate groups surfaced by the tool. For each group, confirm which record should be the master. Once you approve the merge, the duplicate (child) records are deleted and their data is consolidated into the master. [3]
---
Option C — Automate bulk duplicate removal with a Custom Function (advanced)
If you have hundreds of duplicate groups arriving from imports or integrations, the UI-driven tools require too much manual review. A Custom Function approach automates the entire process. [1]
Step 1. Set up a Zoho OAuth connection. Navigate to Setup > Developer Hub > Connections, click Create Connection, choose Zoho CRM, and name it crmoauthconnection. Add the scopes ZohoCRM.modules.leads.ALL and ZohoCRM.coql.READ, then click Create and Connect. [1]
Step 2. Create three Deluge functions in your CRM account:
- A button function (
button.cleanupAllDuplicates) that acts as the entry point and coordinates the other two. - A standalone function (
standalone.findDuplicateEmails) that scans the Leads module and returns every email address appearing on more than one record. - A standalone function (
standalone.cleanupDuplicateGroup) that processes a single duplicate group — fetching records, electing a master, arbitrating field values, and calling the Merge Records API to consolidate and delete the children. [1]
Step 3. Wire the entry-point function to a list-view button. Go to Setup > Modules > Leads > Buttons and create a custom button with the label Clean Up Duplicates, set it to show in the List View, and assign the action Custom Function > cleanupAllDuplicates. [1]
Step 4. From the Leads list view, click the Clean Up Duplicates button. The function chain will scan for duplicate email groups, elect masters, arbitrate field values from the child records, and merge each group. Child records are deleted automatically by the Merge Records API after each merge operation. [1] [3]
---
Common pitfalls
- Expired OAuth connection: If the
crmoauthconnectionexpires, the custom functions will return anUnAuthenticated Connectionerror. Reauthorize it from the Connections page to restore functionality. [1] - Merge API record limit: The Merge Records API handles a maximum of three records per call — one master and up to two children. If a duplicate group contains more than three records, your function logic must batch the merges sequentially. [3]
- UI tools cannot trigger automatically: Both the Find and Merge and Deduplicate Records tools are admin-initiated from the UI. They will not fire when duplicates arrive through imports, integrations, or API calls — only the custom function approach handles that scenario. [3]
- Deleted contacts in Zoho Desk: If your CRM contacts are synced with Zoho Desk, note that deleting a contact moves all associated tickets, activities, and time entries to the Recycle Bin. Contacts added as end users cannot be deleted at all. [4]
---
What to check
- Recycle Bin — confirm that the expected number of records was removed and that no records were deleted unintentionally; restore any mistakes before the bin is emptied.
- OAuth connection status — if you used the custom function route, verify that
crmoauthconnectionstill shows as Active under Setup > Developer Hub > Connections. [1] - Module record count — compare the record count before and after the operation to ensure the deletion or merge ran to completion across all intended groups. [3]