A Zoho CRM to HubSpot migration can look complete while leaving sales without useful context. Contacts arrive, but the right company is missing. A deal exists, but the last call cannot be found. The project needs a definition of complete that goes beyond an import success screen.
Start with the records people use to do their work. Decide what each should become in HubSpot, how relationships will be rebuilt and how the team will check the result. The mapping below is a planning recommendation, not a promise that an automatic transfer will preserve every part of your Zoho account.
Build an export inventory before choosing the transfer method
Zoho distinguishes module exports, complete backups and report exports. Module data can be exported in CSV or XLSX format. Reports are useful for a selected view across data, while Zoho describes a complete backup as the broader option for module data, attachments and configuration details. Choose the extraction method against the actual inventory.
List modules, field definitions, record owners, relationships, notes, activities and files. For each item, record whether it must become an editable HubSpot record, remain available as reference history or stay in an access-controlled archive. Put exclusions in writing. An old field may be safe to retire, but only after its business owner agrees.
Zoho exports can be filtered by custom view or criteria and can include selected fields. Check those settings before accepting an export as the full dataset. Record the extraction time, selected scope and source record count so a later difference can be explained.
Agree how people and companies should map
| Zoho source | Proposed HubSpot destination | Decision to settle first |
|---|---|---|
| Leads | Contacts with preserved source status | How unqualified people are represented |
| Contacts | Contacts | How to reconcile overlap with Leads |
| Accounts | Companies | Which source relationship defines the company link |
| Deals | Deals | Pipeline and stage mapping |
| Notes and activities | Supported activities or an agreed archive | Author, date and parent record treatment |
| Custom modules | Reviewed object or property design | Destination availability and relationship needs |
Do not map solely by matching names. For this migration design, use HubSpot contacts to represent people and keep the original Zoho module and status in dedicated properties. If a person appears in both Leads and Contacts, agree the surviving identity and field precedence before loading either file. Keep a cross-reference to both source records.
Company names are not reliable identifiers on their own. Review renamed companies, subsidiaries and shared domains before choosing a match rule. For difficult cases, preserve distinct companies until someone who owns the relationship approves a merge.
Keep source identifiers separate from destination IDs
Create a mapping register containing the source module, source identifier, destination object and resulting HubSpot Record ID. Store source identifiers as text so spreadsheet formatting does not alter them. Use the register to trace errors and rebuild relationships after the initial load.
HubSpot supports Record ID, contact Email, Company domain name and supported custom properties requiring unique values as import identifiers. A source ID stored in an ordinary text property is useful for tracing, but does not automatically become an import matching rule. Configure and test the identifier you intend to use.
Prepare properties, owners and deal stages
Create or confirm destination properties before importing. Build a field map with the source name, destination property, type, accepted values and transformation rule. HubSpot import files need a header row and one sheet. Use UTF-8 when the file contains foreign language characters. Keep an untouched source export alongside the transformed files.
HubSpot requires Deal name, Pipeline and Deal stage when creating deals. Pipeline and stage values must match options that already exist in the destination. Have sales approve the mapping by meaning, not position in a dropdown. A stage called Negotiation may not mean the same thing in both accounts.
Map owners to the users who should own the work after cutover. HubSpot supports owner assignment through names, emails or internal owner values during import. Prefer an unambiguous mapping, and give departed users an agreed destination owner rather than leaving everything with the person running the migration.
Load relationships and history as separate workstreams
HubSpot multi-object imports support records, activities and associations. Include identifiers for the records on both sides of each relationship. A contact-to-company link and a deal-to-company link should each have a validation check. Do not assume that importing a company name beside a person proves the correct association was created.
Association labels need their own plan. HubSpot requires a Professional or Enterprise subscription to import them. Confirm access before promising that relationship descriptions will transfer. If a destination feature is unavailable, agree another representation with the business rather than silently dropping the information.
Review history separately from current field values. Test a note, call and meeting from extraction through to the destination record where a salesperson expects to find it. Check dates, owners, text and file access. If an item must stay in an archive, document how staff retrieve it without relying on someone's personal export folder.
Validate the first full rehearsal
- Reconcile source records against created, updated, merged, excluded and failed destination records.
- Check open deal totals using the same currency, stage rules and reporting scope.
- Compare relationship counts and inspect records with several related people or deals.
- Review import errors and fix the transformation, not just the individual output cell.
- Ask sales owners to inspect accounts they know, including recent history and next actions.
Rerun a controlled subset to test matching before repeating the full import. Also test intended blank values. HubSpot ignores blank import cells rather than clearing an existing value, so a correction file with empty cells may not produce the state you expected.
Protect contact preferences during cutover
Treat contact permission, legal basis and marketing contact settings as separate migration decisions. HubSpot's import flow includes consent and optional processing and marketing settings. Moving a row is not a fresh reason to contact someone. Review restrictions and approved handling with the person responsible for privacy and communications.
Before the final transfer, decide which system accepts edits and how later changes will be collected. Redirect integrations deliberately. Recheck forms, record creation, ownership and reports in the destination. Keep the source available for agreed reference needs until the team accepts the result.
Mistakes to avoid
- Exporting a filtered view and calling it the whole database.
- Importing Leads and Contacts independently without an identity rule.
- Rerunning files without checking their destination identifiers.
- Counting records while ignoring associations and activity history.
- Turning on communication workflows before preference checks pass.
How Remqa plans Zoho CRM to HubSpot migrations
Remqa provides CRM migration support for mapping, transformation, rehearsals and cutover. Bring a module inventory and a few records that show the hardest relationships. If reporting or archives also need to move, include that in the data migration scope. The CRM migration checklist is a useful starting point for agreeing what complete means.