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 API

Scope this integration Book a scoping call Estimate the cost

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.

Objects that sync between Zoho CRM and HubSpot
Source object HubSpot object 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.

HubSpot's app pairs Zoho modules with HubSpot objects and syncs each change within about ten minutes. Where it falls short, Zoho notifications feed a queue that a custom consumer drains, a keeper renews each channel daily, and an If-Modified-Since sweep picks up what a channel missed.

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.

  • Custom API integration

    Possible

    A 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

    Avoid

    Every 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

  1. 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.
  2. Architect. One direction per module, the conflict winner, the lead and contact decision, and the pipeline and stage map, written down by label.
  3. 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.
  4. Validate. We compare counts per module, convert one lead end to end, and change a deal stage on each side.
  5. 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.

Partnerships and accreditations

  • HubSpot Elite Solutions Partner
  • HubSpot Custom Integration Accreditation
  • HubSpot CRM Data Migration Accreditation
  • HubSpot Solutions Architecture Design Accreditation

HubSpot accreditations

  • HubSpot Onboarding Accreditation
  • HubSpot Academy Accreditations

Industry specializations

  • HubSpot Healthcare Industry Specialist
  • HubSpot Financial Services Industry Specialist
  • HubSpot Manufacturing Industry Specialist
  • HubSpot Quote to Cash Capability

Partnerships

  • Anthropic Solutions Partner

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.

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.

  • Zoho CRM

Type any system and its version, such as Sage 300 or Sage 50. Press Enter or a comma after each one.

Add more detail (optional)

Optional. A sentence or two about the workflow is enough.

We use these answers to scope the work and for nothing else. Privacy policy.

Prefer to talk it through first? Book a technical scoping call

Talk to the people who build these

  • Nijat
  • Sean
  • Prash

Book a scoping call