HubSpot + Zoho CRM integration
Zoho CRM keeps leads, deals and accounts in one of Zoho's regional data centres. HubSpot's own app syncs them; here is where it stops and what then.
Connects by APIScope this integration Book a scoping call Estimate the cost
- Two way
Is there an official Zoho CRM + HubSpot integration?
Yes. Zoho CRM has an app built by HubSpot in the HubSpot App Marketplace as of September 2026, and it is an ongoing one-way or two-way sync rather than a migration tool; HubSpot moves a Zoho history once through Smart Transfer instead. We recommend configuring the app, 8 to 24 hours of work. It stops being enough when several Zoho pipelines must land in separate HubSpot pipelines, which HubSpot's own documentation says its Zoho integration does not support.
- Recommended route
- Marketplace app
- Build effort
- 8 to 24 hours
- In the HubSpot App Marketplace?
- Yes, Zoho CRM by HubSpot
- Typical elapsed time
- 1 to 2 weeks
Marketplace checked September 2026.
Why teams connect Zoho CRM to HubSpot
Zoho CRM is one product in a suite that also covers invoicing, accounting, inventory and recruiting, and HubSpot publishes apps for several of those as well as for the CRM. So a HubSpot project that starts with Zoho CRM can touch more than one Zoho product. The first question is about direction: is Zoho staying as the sales system while marketing works in HubSpot, or is the business leaving Zoho altogether?
The two answers need different tools, and HubSpot documents both. The Zoho CRM app is an ongoing data sync, one way or both ways, that keeps records in step for as long as it runs. Leaving Zoho is a job for HubSpot Smart Transfer, a one-way transfer that audits the Zoho org, recreates its properties and pipelines in HubSpot, syncs the records through the same data sync, then carries attachments, notes and deal line items in a one-time pass. Picking the wrong one leaves a sync nobody switched off, or a move that never finished; the migration or integration guide sets out how to tell the two apart.
Data residency is the other question for a Canadian or European team. Zoho hosts each org in a single data centre, in the US, Canada, the EU, India, Australia, Japan or China, and the API domain changes with it. HubSpot’s setup asks which domain to connect to, and any custom work has to call that same domain.
What syncs
HubSpot’s app pairs Zoho modules with HubSpot objects one by one: accounts with companies, contacts and leads with contacts, deals with deals, products with products, and calls, meetings, tasks and notes with their HubSpot activity types. Invoices come into HubSpot one way. Custom modules pair with HubSpot custom objects on Enterprise subscriptions, where associations have to be mapped by hand.
The first match uses email for people, name or domain for companies, and SKU or name for products. After that, data sync holds each pair by record id, so a renamed account stays paired with its company. Deal stages sync only where the Zoho value matches the HubSpot stage label, and only deals in mapped stages sync at all.
Leads need one decision up front. Converting a lead in Zoho turns it into a contact, or links it to an existing contact with the same email, and HubSpot’s app offers both modules against the one HubSpot contact matched on email. We decide in discovery whether HubSpot receives leads, contacts or both, and what a conversion should look like on the HubSpot side, before the first sync runs.
| | | Direction | Match key | Notes |
|---|---|---|---|---|
| Accounts | Company | Two way | Account name or domain for the first match, then the paired record ids | |
| Contacts | Contact | Two way | Email for the first match, then the paired record ids | |
| Leads | Contact | Two way | Email, the same key the Contacts module uses | A lead and the contact it converts into can share one address. |
| Deals | Deal | Two way | Paired record ids, with each stage matched on its HubSpot label | Only deals in mapped stages sync. |
| Calls, meetings, tasks and notes | Engagement | Two way | Paired record ids, associated through the synced contact or deal | The listing shows them syncing but also notes that activities do not, so we test first. |
| Products | Product | Two way | SKU or product name for the first match, then the paired record ids | |
| Custom modules | Custom object | Two way | Paired record ids, after a first match on a field agreed in setup | Enterprise on the HubSpot side, with associations mapped by hand. |
Architecture
With the app, HubSpot runs everything. When a module sync is switched on, data sync indexes the records on both sides, pairs the matches and then works incrementally, and HubSpot’s documentation says a change syncs within ten minutes once the initial sync is complete. The app connects to Zoho through OAuth against the domain you pick, and its calls count against the org’s daily API credits like any other integration’s.
When custom work joins it, the shape is a webhook queue with a sweep. A service holds a Zoho OAuth client, whose access tokens last an hour, and enables notification channels for create, update and delete events on the modules in scope. Each event lands on a queue; a consumer reads the full record and upserts into HubSpot on the Zoho record id, with associations in a second pass. A scheduled read with the If-Modified-Since header catches whatever a channel missed, and deletions come from the deleted records endpoint, which lists recycle bin entries for 60 days.
What the API allows
- API style
- REST
- Authentication
- OAuth 2.0
- Webhooks
- Yes
- Changed-since filter
- Yes
- Sandbox
- On paid plans
- Rate limit
- API credits per rolling 24 hours by edition, 50,000 plus 1,000 per user licence on Enterprise, and 20 concurrent calls per org per app
Developer documentation zoho.com
Three ways to connect
For Zoho, the route turns on three things. The goal comes first: coexistence is the app, while a move is Smart Transfer followed by switching the sync off. Then the pipeline design: one Zoho pipeline maps cleanly, several need a plan. Last, the HubSpot subscription, since custom field mappings need a paid Data Hub subscription and custom modules need Enterprise.
When the app fits, it is the cheapest correct answer, and we configure it rather than build around it. Custom work joins it for pipelines or keys the app cannot express. A per-task automation platform in the middle only duplicates what the app already does, and it spends the org’s credits to do it.
-
Marketplace app
RecommendedHubSpot builds and supports the Zoho CRM app, which carries accounts, contacts, leads, deals, activities and products in a direction you set per module, with default mappings you can extend on a paid Data Hub subscription.
-
Custom API integration
PossibleA service on Zoho's notification channels and If-Modified-Since reads is worth building when several Zoho pipelines must reach separate HubSpot pipelines, or when records have to match on a key the app cannot use.
-
iPaaS
AvoidEvery step a per-task platform runs is another Zoho API call, paid from the same 24-hour credit allowance as HubSpot's app, and it adds a per-task bill for records the app already moves.
What breaks and how we prevent it
Several Zoho pipelines, one sync
HubSpot’s Smart Transfer documentation adds a pipeline backfill workflow because, in its own words, HubSpot’s Zoho integration lacks multi-pipeline support. A Zoho org that runs separate pipelines for new business and renewals needs a plan before the first sync. We map the pipelines in discovery, and where the app cannot carry them we add a custom step that sets the HubSpot pipeline from the Zoho value.
A missing Modified By field
HubSpot’s setup guide says the Modified By field has to be on every Zoho CRM module you sync to HubSpot. In an org with many custom layouts, one module is easy to miss. We check each module in scope before the first sync rather than discover the gap in the sync health view.
Converted leads meeting their contacts
A Zoho lead and the contact it converts into can carry the same email, and HubSpot’s app matches both modules to HubSpot contacts on that email. We choose which module feeds HubSpot, then test one conversion end to end, in a Zoho sandbox, which Zoho includes from the Enterprise edition up, or on a small filtered set where there is none.
Channels that expire within a week
On the custom side, a Zoho notification channel expires at the time set when it is enabled, a week at most, and falls back to one hour when the expiry is missing or too long. A lapsed channel simply stops sending. We renew every channel daily and keep the If-Modified-Since sweep running regardless.
Our approach
- Scope. We confirm whether Zoho is staying or going, list the modules and pipelines in scope, and note the org’s data centre and edition.
- Architect. One direction per module, the conflict winner, the lead and contact decision, and the pipeline and stage map, written down by label.
- Build. The app is configured with a filtered first sync, the Modified By field checked on every module, and owners provisioned as users in both systems.
- Validate. We compare counts per module, convert one lead end to end, and change a deal stage on each side.
- Operate. We review failing and excluded records every week, and watch the credits remaining header whenever custom work shares the allowance.
Common questions
Is HubSpot's Zoho CRM app a sync or a migration tool?
A sync. The app runs on HubSpot data sync, one way or both ways, and keeps records in step for as long as it is switched on. Moving off Zoho is a different HubSpot feature, Smart Transfer, which transfers one way into HubSpot, recreates properties and pipelines, syncs the records, and can carry attachments, notes and deal line items in a one-time pass that does not stay up to date afterwards.
Does HubSpot's Zoho CRM sync handle more than one Zoho pipeline?
Not well, on HubSpot's own account. Its Smart Transfer documentation adds a deal pipeline backfill workflow to address the lack of multi-pipeline support in HubSpot's Zoho integration. Data sync maps HubSpot pipelines to the other app's stages and syncs only deals in mapped stages, so an org with several Zoho pipelines needs the mapping planned, and sometimes a custom step, before the first sync.
Why does HubSpot ask for the Modified By field in Zoho CRM?
HubSpot's setup guide says the Modified By field has to be added to each Zoho CRM module you want to sync to HubSpot, without giving the reason. We treat it as a prerequisite: before the first sync we open the layout of every module in scope, custom modules included, and confirm the field is there, because a gap is quicker to fix in Zoho than to diagnose in the sync health view.
How many Zoho CRM API credits can a HubSpot integration spend?
Zoho meters its API in credits over a rolling 24 hours, by edition: Professional allows 50,000 plus 500 per user licence, and Enterprise 50,000 plus 1,000 per licence, before add-ons. An upsert costs one credit for every ten records. Once half the day's credits are gone, responses carry an X-API-CREDITS-REMAINING header, which a custom integration should read before it sends more.
Can HubSpot sync Zoho CRM custom modules?
HubSpot's custom object article lists Zoho CRM modules among the data sync apps that can sync custom objects, on Enterprise subscriptions, and warns that associations are not maintained, so they have to be mapped by hand. The app's own listing still says custom modules will not sync. We test one custom module in a sandbox before promising it.
Does Zoho CRM push changes to an integration, or does it have to be polled?
Both are available. The Notification API posts to your URL when records in a module are created, updated or deleted, on a channel that expires within a week. Get Records accepts an If-Modified-Since header for a scheduled sweep, and a separate endpoint lists deleted records for 60 days after deletion, or 120 days once they are permanently deleted.
Does it matter which Zoho data centre a Zoho CRM org uses?
Yes, for custom work. Zoho hosts each org in one data centre, among them the US, Canada, the EU, India, Australia, Japan and China, and the API domain differs for each. HubSpot's app asks you to pick the domain when you connect. A custom integration has to call the same domain, because each data centre holds only the data of users registered there.
What does a Zoho CRM and HubSpot setup take in hours?
Allow 4 to 8 hours of discovery and 8 to 24 hours of configuration: the module list, the lead and contact decision, the pipeline map, owners provisioned in both systems and a filtered first sync checked by hand. Custom work beside the app, for pipelines or match keys it cannot express, is a separate build of 70 to 150 hours.
Also in Sales and marketing platforms
Related reading
Partnerships and accreditations
HubSpot accreditations
Industry specializations
Partnerships
Trust and compliance
We design integrations to support the security and privacy rules your business works under, and we build them on independently audited platforms.
-
SOC 2
We build to support SOC 2 security controls, on platforms that hold SOC 2 reports of their own.
-
ISO/IEC 27001:2022
We build to support your information security program under ISO/IEC 27001:2022.
-
HIPAA
We scope BAA needs in discovery, then design builds around them for covered entities and their business associates.
-
GDPR
We scope data-processing needs in discovery and design builds to support your GDPR duties.
About the GDPR at the European Commission (opens in a new tab)
-
PIPEDA
We design builds to support your accountability for personal information as it moves between systems.
-
CASL
We can build consent capture and sync that support your CASL consent records.
Our builds run on
How we build
- Sandbox first. We build and test in a sandbox before anything reaches production.
- Fail-closed allowlists. An integration runs only against the HubSpot accounts it is approved for.
- Least-privilege access. Each integration gets only the API scopes it needs.
- Secrets in a vault. Keys and tokens live in a secrets vault, never in plain text.
- Sensitive data scoped early. Discovery covers sensitive data, access controls and any BAA or data-processing needs.
- A compliance package for regulated industries: audit logging, field-level encryption and sensitive-data handling.
Scope a Zoho CRM integration
Send the systems, the direction and the record volume. We reply with a scope and an effort band within one business day.
Thanks, we will reply within one business day
Prash or Sean reads every one of these and comes back with a scope, or with the one question we need answered first.
Sources
- Connect HubSpot and Zoho knowledge.hubspot.com
- Zoho CRM - CRM App for HubSpot ecosystem.hubspot.com
- Connect and use HubSpot data sync knowledge.hubspot.com
- Transfer data from other apps using HubSpot Smart Transfer knowledge.hubspot.com
- Supported apps for HubSpot Smart Transfer knowledge.hubspot.com
- Sync custom objects between HubSpot and data sync apps knowledge.hubspot.com
- Match records in data sync knowledge.hubspot.com
- API Limits zoho.com
- OAuth 2.0 for V8 APIs - An Overview zoho.com
- Enable Notifications zoho.com
- Get Records zoho.com
- Get List of Deleted Records zoho.com
- Convert Lead zoho.com
- Multi DC Support zoho.com
- Compare all features of Zoho CRM editions zoho.com