Zoho CRM merge duplicates: clean your export before you merge or re-import
Zoho CRM merges at most three records at a time. Its bulk Deduplicate tool is admin-only and picks the surviving record for you. Every merge is permanent, and imports skip or overwrite matching rows rather than merging them. Below: Zoho's own steps first, then our done-for-you cleanup of your file, back in 24 hours on Quick Clean (up to 200 rows).
Rather not do it by hand? Skip to done-for-you cleanup, from $25.
How to merge duplicates in Zoho CRM: what you can do natively
Zoho CRM has two built-in tools. Find & Merge Duplicates merges up to three records you pick, and you choose the master record: "You can merge a maximum of three records at a time" (Zoho help: Merging Duplicate Records). Deduplicate [Module] is for admins only ("Users at the highest hierarchy in the organization or with administrative profile can access this feature") and automatically merges duplicates that match on up to three fields you select, choosing the master record itself (Zoho help: De-duplicate Records). Both are permanent. When you import a file, Zoho skips rows whose unique field already exists in CRM, or updates the existing record if you choose to; for Leads and Contacts that field is Email (Zoho help: Import FAQs). For large duplicate sets, a Zoho staff member (Maha Harish, answering on the Zoho community, August 2017) wrote: "Try the enhanced De-duplicate tool to merge exact mirror records automatically." (Zoho community, staff answer, Aug 2017)
- Export first. Go to Setup → Data Administration → Export, choose the module and CSV, and keep the Record ID column: Zoho lets you exclude it, but you need it to update records later. "In CSV format, you can export a maximum 200,000 records from a single module in one go." The download link lasts seven days, and the file arrives as a zip. For a small set: "You can choose up to 500 records and click the More option (···) → Export Selected Records." (Zoho help: Export CRM Data)
- Bulk-merge exact duplicates with Deduplicate (admins). "In the [Module] Home page, click the ellipsis (...) button (near the Create button) and select Deduplicate [Module]". Choose the matching fields ("You can select up to three fields."). Zoho keeps the record with the latest Last Activity Time. Records whose field values conflict aren't auto-merged: "you must resolve the conflict and then manually merge the records" (Zoho help: De-duplicate Records).
- Merge specific records with Find & Merge. "In the Record Details page, click the More icon (...) and select Find & Merge Duplicates". Set the search criteria, then pick up to three records, "select the record that you want to maintain as the Master Record", and choose the field values. Tick Show Conflicts Only to see just the fields that differ. "The attachments, notes, and activities will also be transferred to the master record." This needs the Find and Merge permission (Zoho help: Merging Duplicate Records).
- Combine duplicate rows in the file before any re-import. Zoho matches imports against records already in CRM, using the unique field. Its help center doesn't say what happens to two rows in the same file that share an email, so decide which row survives before you import. Zoho's own advice: "First, copy your import file and make changes only to the copy." (Zoho help: Import data into a CRM module)
- Re-import. In the module, near the Create button, click the down arrow and select Import, upload the file, then choose to add new records, update existing ones, or both. Pick the unique field (Record ID for an export you're updating, or Email), then map the columns. Tick the option to skip empty values, or blank cells overwrite CRM values: "the value will be overwritten". Leave "Trigger automation and process management for imported records" off unless you want workflows to fire. "The maximum size for each import file is 25 MB." and "Records with missing mandatory fields will not be imported." Row caps per import depend on your edition, from 1,000 on Free up to 200,000 on Ultimate (Zoho help: Import data into a CRM module).
- Check the import. In Setup > Data Administration > Import > Import History, open the import to see added, updated and skipped rows. Zoho's view of why rows failed is available "for imports performed within the last seven days." (Zoho help: Import data into a CRM module)
Related: General Zoho CRM contact cleanup, if you've already merged the duplicates and just want the list tidied.
Caution: before you merge or re-import in Zoho CRM
- Merges are permanent: "The record(s) merged to the master record will be deleted permanently and the action cannot be reverted." (Zoho help) Deduplicate keeps no list of what it merged: Zoho's help says CRM has no report of the specific records merged through de-duplication (Zoho help).
- Deduplicate picks the surviving record by latest Last Activity Time, and it "cannot be changed manually" (Zoho help). Use Find & Merge when you need to choose the master.
- Manual merges fire workflows: "automation actions that are triggered on Delete will be executed when the duplicate record is deleted." (Zoho help)
- Import updates can't be undone: "Added records can be undone, but updates to existing records cannot be reverted." Blank cells overwrite CRM values unless you tick the skip-empty option (Zoho help).
- Keep your original export untouched as a backup.
We only clean the exported file. We never log in to or touch your Zoho CRM account. Every column in your export is kept. Opt-out and consent columns such as Email Opt Out are kept (extra spaces trimmed), but when two rows share an email, blank cells on the kept row can be filled from the duplicate row, and every fill is listed in the change log. If the two rows disagree on one of these values (consent columns we recognise by header name), the row is flagged needs_review with both values listed in qa_notes, and the kept value is never overwritten, so you decide which applies. Review the change log, especially the Email Opt Out column, before you import. You run the import and choose the unique field and the update options yourself.
Or let us clean the file before you merge or re-import
- You send the Zoho CRM export from step 1, or the file you're about to import, as a CSV or Excel file. Zoho's export arrives as a zip, so send the CSV inside it. Send one file per module, for example Contacts or Leads, and same-email rows in it are merged. We don't run the import, merge records in Zoho or pick the master record for you.
- Rows with the same email (ignoring capitalization and spaces at the start or end) are merged into one row: the first row is kept and its blank fields are filled from the later rows. Every merge and every fill is listed in the change log, so you decide what survives before you import. This is the deduplication Zoho's import doesn't do for rows inside one file.
- Rows with the same full name and company (when your file has a company column) but a different or missing email are flagged, not merged. Each one is marked needs_review, with a note naming the row it may match, so you choose which to keep, or merge them in Zoho with Find & Merge (step 3). Misspelled names aren't caught.
- Invalid, missing and personal (for example Gmail or Yahoo) emails are flagged in qa_notes. We don't fix or verify mailboxes.
- Names in ALL CAPS or all lowercase are re-cased. US phone numbers are formatted +1-XXX-XXX-XXXX. Numbers with a non-US country code (starting with + or 00) are kept as you sent them (extra spaces trimmed only). Numbers with no country code and 10 digits are treated as US. Placeholder phones like N/A are blanked and logged. Anything we can't read is kept as-is, with a note in qa_notes. Line breaks inside cells are turned into spaces (except in the email column, where a broken email is flagged invalid instead), and the CSV is saved as UTF-8.
- You get back the cleaned CSV (with status, qa_notes and source_row columns), a change log with every merge, every fill from a duplicate, every email and possible-duplicate flag, and every edited cell listed by row, with its old and new value, a QA report with counts (rows in and out, duplicates merged, possible duplicates flagged, emails flagged and cells edited), and your original file, unchanged.
- What we don't do: we don't merge, delete or edit anything inside Zoho CRM. We don't run the import or choose your unique field or update options. We don't promise deliverability, inbox placement or bounce rates, we don't verify mailboxes, we don't find, buy or add contacts, and we don't merge rows that only might be the same person.
Clean my Zoho CRM export · $25 (up to 200 rows, back in 24h)
Bigger list? Intro $99 for up to 500 rows (48h) · Growth $299 for 501 to 2,000 rows (72h) · Bulk $499 for 2,001 to 5,000 rows (5 business days) · over 5,000 rows, custom quote. See all sizes.
Check your CSV free first
Check your CSV for exact-email duplicates and formatting problems free in your browser before you import it into Zoho CRM. Your file never leaves your computer.
Run the free CSV Preflight Checker
How it works
Pay
Pick the size that fits your list and check out on Stripe. Quick Clean is $25 for up to 200 rows.
Email us your CSV (reply to your receipt or send it to slrescue@mail.grokbot.com)
No account login, no call, no upload form.
Get it back: 24h (Quick Clean, up to 200 rows), 48h (Intro), 72h (Growth), 5 business days (Bulk)
A clean CSV plus a change log. Over 5,000 rows, the turnaround is scoped in your custom quote.
Flat pricing
- Quick Clean, up to 200 rows, back within 24h, $25 (credits toward a larger pack within 14 days)
- Intro, up to 500 rows, back within 48h, $99
- Growth, 501 to 2,000 rows, back within 72h, $299
- Bulk, 2,001 to 5,000 rows, 5 business days, $499
- Over 5,000 rows: email us for a custom quote
Your $25 Quick Clean counts toward any bigger cleanup within 14 days.
Not sure how messy it is? CRM Hygiene Scorecard (written diagnosis), $29 · DIY HubSpot and Salesforce import checklist, $9. Agencies: white-label batches.
Questions
Can Zoho CRM merge more than three duplicates at once?
Not in one merge. Find & Merge handles "a maximum of three records at a time" (Zoho help). Admins can run Deduplicate [Module] to auto-merge exact matches across the module, but "If there are more than three duplicates, you will be prompted to choose any three to merge from the list of all duplicates." (Zoho help) We merge same-email rows in your exported file in one pass and log each one.
Does Zoho CRM remove duplicates when I import?
It skips or updates rows that match an existing record's unique field; for Leads and Contacts, that's Email (Zoho help). "Rows in the file with matching values already in the CRM will be skipped." (Zoho help) It doesn't merge records already in CRM; use Deduplicate or Find & Merge for those. We merge same-email rows inside your file before you import.
Which record survives a Zoho CRM merge?
In Find & Merge, you choose the master record and the field values; created time and created by come from the oldest record (Zoho help). In Deduplicate, Zoho picks the record with the latest Last Activity Time, and it "cannot be changed manually" (Zoho help).
Can I undo a merge in Zoho CRM?
No. "The duplicate records are permanently deleted after the merge and the action cannot be undone", and Deduplicate keeps no report of what it merged (Zoho help). Export first and keep the file. Our change log records every row we merged in your file.
Will you merge or delete records in my Zoho CRM?
No. We clean the exported file only. Same-email rows are merged in the file, with each merge and fill logged; conflicting consent or opt-out values (consent columns we recognise by header name) are flagged needs_review, never overwritten. A consent column with an unusual header still has any conflict logged in the change log. Tell us the column name when you order and we'll treat it as consent. Rows that only might match (same name and company, different email) are flagged needs_review for you to decide. You run the import and any merges in Zoho CRM yourself.
Will the cleaned file import into Zoho CRM?
It comes back as a UTF-8 CSV with every column from your export plus status, qa_notes and source_row. Headers come back in lowercase with underscores (for example, Email Opt Out becomes email_opt_out and Record Id becomes record_id), and name, email, phone and company come first, so map each column in Zoho's import and leave status, qa_notes and source_row unmapped. Keep record_id if you're updating existing records. "The maximum size for each import file is 25 MB." (Zoho help)
Do you need access to my Zoho CRM account?
No. You export a file and email it. We only clean the exported file and never log in to or touch your Zoho CRM account.
How fast is delivery?
From when we receive your file: Quick Clean (up to 200 rows) within 24 hours, Intro within 48 hours, Growth within 72 hours, Bulk within 5 business days. Over 5,000 rows is scoped in your quote.
What if the cleaned file isn't right?
If the file isn't what we promised, we fix it once for free within 48 hours. If it still isn't right, you get your money back for the part we couldn't deliver. If we're late, you choose a full refund or a free rush job.
What happens to my data?
Your file is used only for your job and deleted after delivery on request. We never log in to your CRM, and we never invent, buy, or append emails.
Not affiliated with Zoho Corporation. Quotes are from Zoho's public help docs.