Skip to content
DataUntangler

Zoho to Salesforce Migration Without Duplicate Leads and Contacts

Zoho CRM Leads go to Salesforce Leads and Zoho Contacts go to Salesforce Contacts, so the same person can land in both. Here is how the export and the Salesforce load tools behave, and how to settle the duplicates before cutover.

Published 6 October 2026 7 min read Written by the DataUntangler team

A Zoho to Salesforce migration copies your records, not your judgment about them. Zoho Accounts become Salesforce Accounts, Contacts become Contacts, Deals become Opportunities and Leads stay Leads. Every duplicate in Zoho arrives in Salesforce, and one more kind appears that you could ignore before: the same person sitting in Zoho as an unconverted lead and as a contact, now loaded as a Salesforce Lead and a Salesforce Contact.

Salesforce will not merge a lead into a contact with the merge screen, so those pairs become a conversion job after go live. The cheaper moment to find them is before the load, on the export files, with the Zoho record ID kept beside every decision.

How to export your data from Zoho CRM

Zoho CRM exports from Setup, then Data Administration, then Export. You pick the modules, and Zoho prepares the files in the background as a zipped CSV per module, with a download link that stays valid for seven days. One export holds up to 200,000 records per module, so a larger leads table takes more than one run.

Export Leads, Contacts, Accounts and Deals at minimum, plus Users so record owners can be mapped to Salesforce users. Keep the Record Id column in every file. It is the only thing that ties a Zoho contact to its account, and it is the key your audit log and your Salesforce External ID field will carry.

RevOps manager and analyst planning a CRM migration cutover with a laptop and a printed checklist

How Salesforce matches records when you load them

The Data Import Wizard handles accounts, contacts and leads, up to 50,000 records per file. It can match contacts and leads to existing records on name or email, and accounts on account name and site together. It does not load opportunities, so Deals go through Data Loader or a partner tool.

Data Loader handles up to 5 million records and matches nothing on a plain insert: every row becomes a new record. On an upsert it matches on the Salesforce ID or an External ID field. Duplicate rules set to Allow with an alert save the row anyway, because the alert is a screen that only appears in the Salesforce interface, not in a bulk load. In practice, whatever is duplicated in the CSV is duplicated in the org.

Zoho records and where they land in Salesforce

Zoho CRM Salesforce Duplicate risk Load with
Leads Leads Same person also a contact Wizard or Data Loader
Contacts Contacts Two records, one person Wizard or Data Loader
Accounts Accounts Inc and LLC variants Wizard or Data Loader
Deals Opportunities Follow the account Data Loader

Load accounts first, then contacts and leads, then opportunities, so each child can find its parent.

Why one person ends up as a lead and a contact

In Zoho, converting a lead creates a contact and an account and removes the lead. Plenty of leads never get converted, though. A rep adds the person straight to Contacts after a meeting, a web form creates a new lead for someone already in Contacts, or a list import drops a batch of known customers into Leads. Zoho shows them in two modules and nobody notices.

Salesforce keeps the same split, so a straight migration loads both. Marketing then emails the lead as a prospect while sales works the contact as a customer, and lead source reports count people you already sold to. Finding these pairs means putting Leads and Contacts in one file and matching across them, which is not something either CRM does for you.

How to clean the Zoho export before the Salesforce load

  1. 1 Stack the Leads and Contacts exports into one CSV with a Module column saying Lead or Contact. Keep First Name, Last Name, Company or Account Name, Email, Phone, State, Zip Code and Record Id.
  2. 2 Load the file into the data cleaning demo. It runs in your browser, so the customer list never leaves your machine.
  3. 3 Read every proposed group. Each one says why it matched, and the Module column shows up as a conflict wherever a lead and a contact were grouped. Those groups are lead conversions to plan, the rest are contact or lead merges.
  4. 4 Approve or reject each group, then export the cleaned file and the audit log. The log lists every Zoho Record Id that folds into another, which is your proof when someone asks why the contact count dropped.
  5. 5 Load into Salesforce with the Zoho Record Id in an External ID field, so a reload or a fix later is an upsert and not a second copy.

What the pass found on a Zoho Leads and Contacts export

We ran a twelve row Zoho file, leads and contacts stacked, through the engine. These are the real results, including the pair it did not match.

Module Name and company Email Result
Contact Hannah Kim, Cedar Grove Dental LLC hannah.kim@cedargrovedental.com Kept, washington to WA
Lead Hannah Kim, Cedar Grove Dental Hannah.Kim@CedarGroveDental.com Same email, likely
Contact Marcus Webb, Ironbridge Freight Inc mwebb@ironbridgefreight.com Kept, ohio to OH
Lead Marcus Webb, Ironbridge Freight (blank) Same name and company, likely
Contact Ryan Mitchel, Summit Peak Software (blank) Close name and company match, likely
Lead Ryan Mitchell, Summit Peak Software ryan@summitpeak.io Kept, the fuller row
Lead Danielle Okafor, Brookline Wealth dokafor@brooklinewp.com Two emails, flagged for review
Lead Bill Harper, Northgate Analytics bharper@northgateanalytics.com Not matched to William Harper

All five groups mix a lead and a contact, so the Module column came back as a conflict on each. Holloway and Sons against Holloway & Sons was also grouped, on the person name and close company name.

The Harper pair is the honest miss. The engine does not treat Bill and William as the same first name, so nickname pairs need a sort by last name and a read by eye. The Okafor pair is the kind you want flagged rather than merged: one work email, one personal email, and only the account owner knows whether that is one buyer. The matching is the same data deduplication engine used across the site, with fuzzy matching for close spellings.

Should you clean data before or after migrating to Salesforce?

Before. In Salesforce every merge is permanent, takes at most three records at a time, and a lead can only join a contact through conversion, one lead at a time. Duplicates found after go live also have activity and campaign history attached by then, which makes each decision slower. On the export, a duplicate is a row you drop or a value you keep.

If some slip through anyway, the merge mechanics are on Salesforce merge contacts and, for companies, Salesforce merge accounts. The same problem in the other direction is covered in Zoho to HubSpot migration. If you are still choosing the loader, see Salesforce data migration tools.

Is it worth paying a partner for a Zoho to Salesforce migration?

Often, yes, for the parts that need a Salesforce admin: field mapping, custom objects, page layouts, automation rebuilt as flows, and the deal history. Partners and integration tools move data well. Most do not decide which of your leads and contacts are the same person, because that takes someone who knows the customers, and it is usually handed back to your team as a spreadsheet.

That cleanup is a few hours with the right tool, and it pays twice: fewer merges after cutover, and a contact count you can defend on day one. Once the lists are clean, the sales team can work one set of leads, whether reps dial them or you hand first touches to AI cold calling. DataUntangler is a data cleaning tool on the Analyst plan at 59 dollars a month, or 348 dollars a year with unlimited files. It does not connect to Zoho or Salesforce and writes nothing to either.

The file is still messy after the article

Load it into the demo and see every duplicate, every broken date and every mangled character as a line you can approve or reject.

No card required. Your file never leaves your computer.

Clean a file