Beam Help
Get help now

How-to · Zoho CRM

How to delete multiple records in Zoho CRM

Remove multiple records at once from any Zoho CRM module.

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 crmoauthconnection expires, the custom functions will return an UnAuthenticated Connection error. 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 crmoauthconnection still 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]

Sources cited

  1. [1] Kaizen 247 - Historical Deduplication using COQL API, Merge Records API and Functions
  2. [2] CRM | Duplication Management | Knowledge Base
  3. [3] Add, Edit and Delete Contacts - Zoho Desk Knowledgebase
  4. [4] Kaizen 245 - Real Time Signal Alerts for High-Value Abandoned Checkouts
  5. [5] How do create a validation rule / function to check datetime field is within Business Hours?
Delete Multiple Records in Zoho CRM | Beam Help