Salesforce → Zoho CRM
Export Salesforce to CSV, zip it the way Zoho's Salesforce wizard expects, then map modules and fields. Workflows, email templates, and the recycle bin do not ride along.
Should you make this move?
Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.
Salesforce
- Extensive CRM customization, ecosystem, reporting, and enterprise governance support complex businesses
- Structured ownership, status, and workflow views improve operational visibility
- Licensing, implementation, and ongoing administration are expensive and specialized
- Custom fields, automations, history, and reporting are difficult to reproduce exactly
Zoho CRM
- Broad CRM customization and suite integration offer strong value for growing organizations
- Structured ownership, status, and workflow views improve operational visibility
- Configuration depth, interface complexity, and ecosystem-specific workflows increase switching costs
- Custom fields, automations, history, and reporting are difficult to reproduce exactly
Zoho CRM: Broad CRM customization and suite integration offer strong value for growing organizations. This removes a major source-side concern: Licensing, implementation, and ongoing administration are expensive and specialized.
What you lose: Extensive CRM customization, ecosystem, reporting, and enterprise governance support complex businesses. What you inherit: Configuration depth, interface complexity, and ecosystem-specific workflows increase switching costs.
Jump to a section
Know the shape of the move.
This timeline assumes
- You can run Salesforce Data Export. Weekly exports are for Enterprise, Performance, and Unlimited. Other editions get a monthly export. Files are available for 48 hours, and a new export removes the previous files.
- A Zoho CRM admin uses Setup, Data Administration, Import, and chooses Salesforce. Each file can be up to 5 GB, 200 files at once, 25 GB total.
- The site already documents Zoho CRM → Salesforce and Salesforce → HubSpot.
- You migrate users before records that look up an owner. Zoho says to do users first.
- Reps stop editing Salesforce during the final export. The recycle bin is not in the export.
What survives the move.
“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.
| Item | Outcome | Impact | What happens | Mitigation |
|---|---|---|---|---|
| Supported modules | partial | critical | Zoho's Salesforce article lists users, leads, accounts, contacts, deals, campaigns, notes, activities, attachments, competitor, cases, solutions, products, quotes, sales orders, invoices, purchase orders, vendors, and price books. | Map those files. Anything else needs a custom module or a written skip. |
| Custom modules | partial | high | Salesforce custom-object files use a _c suffix, such as registrations_c.csv. Zoho can create a module from that file during mapping. | Open the zip and confirm the suffix before you upload. Create the module in the mapping step if it did not match. |
| Attachments | partial | critical | Zoho wants the CSVs plus an Attachments folder and a CSV that maps files to records. It says Salesforce's Attachments, Documents, and Content Version folders do not by themselves make the upload fail. The general wizard errors if a zip contains unexpected folders. | Follow the Salesforce article for this zip. If the upload rejects a folder, pull attachments out and add them at the end. Zoho says you can add skipped attachments without starting over. |
| Owners | manual | critical | Zoho says to migrate users first, then map the owner id. A lead without a mapped owner is the usual way records land on the wrong person. | Import users. Then map Owner ID on every module. |
| Mandatory fields | partial | critical | Leads need Last Name. Deals need Deal Name, Stage, and Closing Date. Accounts need Account Name. Empty mandatory values are skipped unless you fill a default. More than 10 blank rows can look like the end of the file. | Fill defaults for empty mandatory fields. Remove blank rows. Check the skip count before you continue. |
| Tags | partial | medium | Tags migrate as comma-separated values. Only the first 10 tags on a record move, and each tag can be 25 characters. | Trim tags you still use. Expect the rest to drop. |
| Workflows, formulas, and email templates | lost | critical | The wizard maps fields. It does not import Flow, validation rules, or formula fields. Zoho cannot create autonumber or formula fields during migration. Salesforce email templates are metadata and are not in the weekly data export. | Rebuild the automations you still run. Export templates with Data Loader if you need the text. |
| Recycle bin and in-flight edits | lost | high | Salesforce's FAQ says the recycle bin is not in the export. Edits after the export starts are not in that file. | Freeze the org, then export. Do not queue a second export until you have downloaded this one. |
| Picklists and characters | manual | high | Zoho wants multi-select values separated by semicolons. Checkbox values should be True or False. The overview says to avoid angle brackets and vertical bars in the data. | Clean a copy of the CSVs. Add missing picklist values in Zoho or let the import add them, then review. |
| Reports and dashboards | lost | medium | Reports are not rows in the data export. | Rebuild the reports people open every week. Archive screenshots of the rest. |
| Skipped-row pause | manual | high | Zoho pauses the migration if more than 5,000 records in a module are skipped. You can discard or continue. You can also undo a migration from Import History. An upsert can roll back inserted rows, not rows it overwrote. | Read the skip file before you click continue. Undo from Import History if the mapping was wrong and nobody has edited yet. |
Where each thing goes.
| Source | Destination | Method | Notes |
|---|---|---|---|
| Lead | Leads | transform | Last Name is mandatory. Map Owner ID after users exist. |
| Account | Accounts | transform | Account Name is mandatory. |
| Contact | Contacts | transform | Last Name is mandatory. |
| Opportunity | Deals | transform | Deal Name, Stage, and Closing Date are mandatory. |
| Task, Event, Call | Activities | transform | Calls need Subject and Call Type. |
| Attachment files | Attachments on the parent | transform | Keep the Attachments folder and the mapping CSV. |
| Custom object *_c.csv | Custom module | transform | Zoho can create the module from the file. |
| User | Users | manual | First. Then map owners. |
| Flow, formula, email template | No destination | unsupported | Rebuild automations. Templates need Data Loader, not the weekly export. |
Make the move recoverable.
Create the source-of-truth backup
Download the Salesforce export before the 48-hour window, and do not queue another export on top of it.
- Schedule or run Data Export. Weekly if your edition allows it.
- Download every zip. The FAQ says each zip is about 512 MB and large orgs get several. Wait 60 seconds between downloads if you see too many requests.
- Extract and confirm CSV names and the Attachments folder.
- Record object counts. Note that the recycle bin is absent.
- Store a second copy. The org will not keep the files.
Proof to capture: Download time, zip checksums, and object counts.
Build the zip Zoho expects
Give the Salesforce wizard files it can map.
- Download within 48 hours. Do not start another export first.
- Check for *_c.csv custom modules and the Attachments folder.
- Remove extra folders the general wizard would reject, keeping the folders the Salesforce article allows.
- Fill empty mandatory fields and strip blank rows on a copy.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
Run the Salesforce wizard
Create modules and records from the mapped files.
- Upload the zip. Review mapped, unmapped, and unsupported files.
- Map users first. Map Owner ID on the other modules.
- Create fields you need. Autonumber and formula are not available here.
- Start migration. If a module skips more than 5,000 rows, stop and read the file before you continue.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
The things most likely to hurt.
These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.
The export disappears
Files last 48 hours, and a new export removes them sooner.
- Consequence
- You migrate from a partial download.
- Mitigation
- Download every zip the day it is ready. Wait between downloads.
Stop if: A zip is missing and the export is already gone.
Owners do not match
Zoho wants users in first and Owner ID mapped.
- Consequence
- Records sit on the admin or get skipped.
- Mitigation
- Import users, then map owners, then import the rest.
Stop if: A sample lead's owner is wrong.
Five thousand skips
Zoho pauses a module after 5,000 skipped records.
- Consequence
- You continue and leave a hole, or you undo a mapping that was wrong.
- Mitigation
- Read the skip file. Undo from Import History if people have not edited the new records yet.
Stop if: You cannot explain the skipped rows.
Reps edit both CRMs
The export is a snapshot. The recycle bin is not in it.
- Consequence
- The last notes exist only in Salesforce.
- Mitigation
- Freeze Salesforce, export, then import. Upsert later only if you understand that overwrites cannot be undone.
Stop if: Salesforce changed after the export you imported.
Do the work in this order.
- Days 1 to 3 · export
Run and download Data Export
2 hours active1 to 7 days elapsedThe export queue, then 48 hours to download waiting- Start the export.
- Download every zip.
- Count objects and confirm attachments.
Stop / go checkpointDo you have every zip?
Go when: Checksums are stored and the 48-hour window is not your only copy.
Stop when: A zip failed and the export was replaced.
- Day 4 · clean
Clean a copy of the CSVs
4 hours active1 day elapsedNone waiting- Fill mandatory blanks.
- Fix multi-selects and checkboxes.
- Drop blank rows.
Depends on: export
Stop / go checkpointIs the copy safe to upload?
Go when: A sample of leads, accounts, and deals has the mandatory fields.
Stop when: Owner ids are missing.
- Day 5 · users
Import users, then a pilot
3 hours active1 day elapsedThe pilot migration waiting- Import users.
- Import a small lead and account file.
- Check owners and a few attachments.
Depends on: clean
Stop / go checkpointDid the pilot map?
Go when: Owners, a lookup, and an attachment match.
Stop when: The pilot skip file is large.
- Days 6 to 8 · full
Full migration
4 hours active2 days elapsedZoho processing waiting- Upload the full zip.
- Map fields. Create the custom fields you can.
- Read skip counts before you accept the module.
Depends on: users
Stop / go checkpointAre skip counts acceptable?
Go when: Each module's added and skipped numbers are explained.
Stop when: A module passed 5,000 skips and you have not read them.
- Day 9 · cutover
Freeze and delta
3 hours active1 day elapsedAnother Salesforce export if you need a delta waiting- Stop Salesforce edits.
- Export and import the delta, or upsert with the resolution you intend.
- Rebuild the automations for the first week.
- Send reps to Zoho.
Depends on: full
Stop / go checkpointWhich CRM is writable?
Go when: Counts match the frozen export and a rep can open their deals.
Stop when: Salesforce was edited after the file you imported.
Cut over with a way back.
Cutover
Make Zoho the CRM reps edit, with Salesforce frozen on the export you actually loaded.
- Tell the team Salesforce is read-only. Record the time.
- Run a final export and download it immediately.
- Import the delta. Map owners again.
- Turn off Salesforce workflows that email customers.
- Send people to Zoho. Leave Salesforce readable.
Proof to capture: Freeze time, final zip checksums, and the Zoho summary of added and skipped rows.
Rollback
Send reps back to Salesforce if Zoho owners, skips, or attachments are wrong.
- Tell reps to stop typing in Zoho.
- If the migration itself is bad and nobody has edited, undo it from Import History.
- Turn Salesforce workflows back on.
- Copy any Zoho-only notes back into Salesforce by hand.
- Leave the downloaded zips. Salesforce will not still have them.
Proof to capture: Salesforce is the only CRM being edited, and Zoho-only notes are copied or listed.
- A sample of owners is wrong.
- A module skipped more than you can explain.
- Attachments are not on the parent records.
- Reps edited Salesforce after the imported file was produced.
Prove the migration worked.
Every blocking check must pass. Capture the evidence before cleanup begins.
| Pass | ID | Check | Method | Expected result | Evidence |
|---|---|---|---|---|---|
ZIP-01Blocking | Every zip is on disk | Compare the export page's file list with local checksums. | Every file is downloaded. None exist only in Salesforce. | The file list and checksums. | |
USR-01Blocking | Users imported first | Open Setup, Users in Zoho and compare the count. | Active users you meant to move are present. | The user count. | |
OWN-01Blocking | Owner sample | Open 20 leads and 20 deals and compare owners with Salesforce. | Owners match. | The sample ids. | |
MOD-01Blocking | Added and skipped | Read the migration summary per module. | Added plus skipped explains the source count. | The summary. | |
MAN-01Blocking | Mandatory fields | Check leads for Last Name and deals for stage and close date. | No blank mandatory field on the sample. | The sample. | |
ATT-01Blocking | Attachments | Open 10 records that had files. | The files are on the record. | The record ids. | |
TAG-01 | Tag trim | Find a record that had more than 10 tags. | You know which tags were dropped. | One example. | |
AUT-01Blocking | Customer email | Confirm Salesforce workflows that email customers are off, and the Zoho ones you need exist. | Only one system can email a customer from the CRM. | The workflow list. |
Remove the scaffolding safely.
Safe after: Reps have worked in Zoho for a week, owner samples still match, and the Salesforce zips are stored outside Salesforce.
- Keep the zips. The org will not.
- Leave Salesforce read-only until the retention date you agreed.
- Rebuild the weekly reports in Zoho.
- Remove migration-only Zoho users.
- Set the next review date.
When the plan met reality.
First-hand accounts are preferred. Vendor case studies are labeled, and every note below is an editorial paraphrase—follow the link for the full context.
Zoho's customer story says Bernard Health had used Salesforce for nine years across software licensing and retail advice. After per-user fees rose, founder Alex Tolbert ran the move to Zoho CRM himself, without an outside consultant. He says the data migration took four days and the company finished transitioning in about a week. A year and a half later the story quotes a saving of over 70 percent a year, with about 90 user licenses, and names other Zoho products they added. This is Zoho's own case study.
- A founder-run data load can be short, and the story still does not list which objects moved.
- Read vendor savings claims as the customer's quote in the vendor's story, then check your own edition and user count.
- Bernard Health's reported data migration was four days, with about a week to settle the company on Zoho.
- The piece is a Zoho customer story, so the cost saving is their published quote, not an independent audit.
Verify against the primary material.
Platform behavior changes. Check these sources and the review dates above before executing a production migration.
- Salesforce: export backup dataAccessed 2026-11-06
- Salesforce: Data Export FAQAccessed 2026-11-06
- Zoho CRM: migrate from SalesforceAccessed 2026-11-06
- Zoho CRM: data migration overviewAccessed 2026-11-06