Leads, contacts, accounts and deals are the easy part of a Zoho to HubSpot migration. They have obvious homes. The harder questions sit around them: the custom modules your team built for projects or subscriptions, the Blueprint that controls how a deal moves from Negotiation to Closed, and the related lists that tie every record to the ones around it. None of those move by exporting a CSV and importing it somewhere else.
This guide explains why teams move from Zoho CRM to HubSpot, what data can be migrated, how to handle custom modules, what happens to Blueprint processes, how related records become HubSpot associations, and how to validate the migration before Zoho is retired.
Zoho CRM is flexible and often inexpensive to start with, which is why many teams build a lot inside it. The reasons to move usually appear once the business needs more than a sales database.
Leads deserve a specific decision early. Zoho keeps unconverted leads in a separate Leads module, while HubSpot stores people as contacts and tracks their stage with the lifecycle stage property. HubSpot also offers a separate Leads object for prospecting. Decide whether Zoho leads become contacts with a lead lifecycle stage, records in the Leads object, or both, because that choice affects segments, workflows and reports later.
The move is a chance to simplify as well as to transfer. Many Zoho orgs carry custom modules, fields and Blueprints that were built for a process that no longer exists. A Zoho CRM migration is the cheapest point at which to retire them, because anything you leave behind does not need to be mapped, imported or validated.
Most Zoho CRM data can be moved, but you need to know how it comes out. Zoho's help documentation explains that users with an administrative profile can request a data backup, and that the backup arrives as CSV files compressed into a single ZIP file. Zoho says the backup includes the records in each module and record attachments, including File Upload and Image Upload field data. It excludes email content and attachments, Documents, and data obtained through integrations.
Zoho also limits how often backups are free. Its documentation states that paid editions get a set number of free backups, with more available on Ultimate, while the free edition needs an add-on or an upgrade. Check your edition before planning several test exports.
|
Zoho CRM data |
HubSpot destination |
Notes |
|---|---|---|
|
Leads |
Contacts (lead stage) or Leads object |
Decide how unconverted leads are represented |
|
Contacts |
Contacts |
Email is HubSpot's deduplication key |
|
Accounts |
Companies |
Domain is HubSpot's deduplication key |
|
Deals |
Deals |
Map Zoho stages to a HubSpot pipeline first |
|
Custom modules |
Custom objects or standard objects |
See the next section |
|
Notes, tasks, calls, meetings |
Engagements on the matching record |
Keep the original owner and date |
|
Attachments |
Files attached to records |
Check file size limits |
|
Email content |
Not in Zoho's backup |
Reconnect inboxes in HubSpot instead |
|
Blueprints, workflow rules |
Rebuilt, not migrated |
See the Blueprint section |
Before the first export, run a short data audit in Zoho. Count records per module, note how many have been edited in the last year, and list fields that are mostly empty. Teams often find that a large share of old leads and inactive accounts add nothing to the new CRM. Agreeing on what to leave behind keeps the HubSpot portal clean and shortens every later step. A structured Zoho CRM data migration treats this audit as the first deliverable, because it sets the scope for mapping, import and validation.
The last row matters most for planning. Records are data and can be moved. Blueprints, workflow rules, validation rules and Deluge functions are logic, and logic is rebuilt in the target system rather than transferred.
Zoho custom modules hold whatever your team needed that the standard modules did not cover: projects, properties, subscriptions, vendors, applications. Each one has to be assessed before it is mapped.
Start by asking whether a HubSpot standard object can do the job. A Zoho "Vendors" module may fit as a company with a type property. A "Renewals" module may be better as a deal pipeline. HubSpot's data model guidance recommends listing every type of record first and creating custom objects only for what the standard objects cannot handle. HubSpot also states that an Enterprise subscription is required to create custom objects, so this decision affects your HubSpot plan as well as your data model.
For each Zoho custom module that does need a custom object, work through the same steps:
Ownership and permissions also need a plan. Zoho controls access with roles, profiles and sharing rules, and some custom modules are visible only to certain teams. HubSpot handles access through user permissions and teams. Map each Zoho role to a HubSpot team before importing owners, and create every user in HubSpot first so each record can be assigned on import.
Subforms need their own decision. A subform stores line-item rows inside a single Zoho record. In HubSpot, that usually becomes either line items on a deal or a separate custom object associated to the parent record.
Blueprint does not migrate. It is process logic, not data, and HubSpot has no Blueprint feature to import it into. What you can do is rebuild the outcome Blueprint was enforcing with HubSpot's pipeline settings and workflows.
Zoho describes Blueprint as a digital replica of a business process, built from States and Transitions. Each Transition has three parts: Before, which decides who can execute the Transition and for which records; During, which decides what information the Transition owner must provide; and After, which runs actions such as emails, tasks, field updates and webhooks once the Transition completes.
Each of those parts has a HubSpot counterpart:
|
Blueprint element |
HubSpot equivalent |
Notes |
|---|---|---|
|
States |
Pipeline stages |
One pipeline per distinct process |
|
Before: who can move a record |
Pipeline rules that control editing access by stage |
Professional or Enterprise |
|
Before: no skipping steps |
Pipeline rules that restrict skipping stages or moving backwards |
Closed stages are exempt |
|
During: mandatory information |
Conditional stage properties marked as required |
Users cannot save until filled |
|
During: approval steps |
Deal pipeline approvals |
Sales Hub Enterprise |
|
After: automated actions |
Workflows triggered by stage change |
Professional or Enterprise |
HubSpot's knowledge base confirms the pieces. Its pipeline settings let you show properties when a record moves into a stage and mark them as required, and HubSpot states that users cannot create or update the record until required properties are set. Its pipeline rules can restrict skipping stages, restrict moving backwards and control who can edit records in selected stages. Deal approvals add an approval stage with up to ten approvers per pipeline, and HubSpot lists that feature under Sales Hub Enterprise.
The rebuild is not one to one. Blueprint can attach a different form to each Transition, while HubSpot attaches required properties to the stage being entered. If two Blueprint Transitions lead into the same State with different requirements, you will need to choose one set of required properties or split the logic with a workflow. Document every Blueprint before you start: its States, every Transition, the owner of each, the fields required and the actions that follow. That document is the specification for the HubSpot build.
Plan the rebuild in order of risk. Start with the Blueprints that protect revenue or compliance, such as discount approvals or contract checks, and test them with sales managers before go-live. Simpler Blueprints that only nudge reps through stages can often be replaced by required properties alone. Some Transitions may no longer be needed at all, and the migration is a good moment to retire them rather than rebuild them.
In Zoho CRM, records connect through lookup fields and related lists. Zoho's help documentation describes a lookup field as linking a record to a record in another module, which creates a one-to-many relationship, and a multi-select lookup as linking records between two modules in a many-to-many relationship.
In HubSpot, those connections become associations. HubSpot's knowledge base explains that associations are always two-way, so a contact associated to a company is also visible from the company.
Zoho's documentation also notes that exporting is not supported for the linking module or the multi-select lookup field. If your org relies on them, plan another extraction route before the project timeline is fixed, rather than discovering the gap during the first test export.
Watch the import order closely. A common pattern is companies first, then contacts, then deals, then custom objects, and finally the associations between them. Each step uses the Zoho record ID as the matching key, so a record imported later can find its parent without relying on names, which are rarely unique.
Activities need the same care. Notes, calls, tasks and meetings should be imported against the right HubSpot record, with their original owner and date, so the timeline in HubSpot matches what users saw in Zoho.
Validation is the step that proves the Zoho to HubSpot data migration worked. Base it on counts and comparisons against Zoho, not on scrolling through records that look right.
|
Check |
How to run it |
Pass condition |
|---|---|---|
|
Record counts |
Compare rows per Zoho module to records per HubSpot object |
Counts match, minus records excluded on purpose |
|
Duplicates |
Search on email, domain and the stored Zoho ID |
No unexpected duplicates |
|
Associations |
Compare lookup and related list counts to association counts |
Counts match per object pair |
|
Custom modules |
Compare record counts and field distributions |
Counts and distributions match |
|
Pipeline stages |
Count deals per stage in both systems |
Counts match per stage |
|
Required properties |
Move a test record through each stage |
HubSpot blocks the move until required fields are filled |
|
Workflows |
Run test records through each rebuilt process |
Expected actions fire once |
|
Owners and activities |
Count records and activities per owner |
Counts match |
Run a test migration on a sample first, including records from every custom module, records with multi-select lookups and deals in every stage. Fix the mapping, then run the full migration and repeat the checks. HubSpot's import tool produces an error file for rows that fail, so fix the cause and reimport only those rows using the Zoho ID as the identifier.
If you want a team that has done this before, our Zoho to HubSpot migration services cover custom modules, Blueprint rebuilds and validation. To talk through your own Zoho setup, get in touch with OneMetric.