CRM

A Zoho connection that quietly points at the wrong data centre fails in a way that looks random

Zoho CRM and Zoho Books look, from the outside, like one product with two names. They are actually two separate applications with two separate APIs and, often, two separate logins, and a business using both routinely finds a customer created twice — once as a Lead in the CRM, once as a Contact in Books — because nobody told either app about the other.

Add the fact that a Zoho account is provisioned in a specific regional data centre — the US, the EU, India and others each have their own — and a connection that assumes the wrong one fails with errors that look like a bug rather than what they are: a request sent to a domain your account was never on.

  • Per-app REST APIs with OAuth 2.0
  • Leads, Deals, Contacts, invoices, products
  • From €1,700 plus service fees
The tool

What Zoho is, and why "which app" is the first question

Zoho is a suite of more than forty separate business applications — CRM, Books for accounting, Desk for support, Campaigns for email marketing, and many more — sold individually or bundled as Zoho One. Each app has its own database, its own REST API, and usually its own OAuth scopes, even though they can be configured to share data with each other inside Zoho's own ecosystem.

That per-app structure is the first thing we establish in any Zoho project: "connect our website to Zoho" is not one integration, it is one integration per app you actually mean. A lead-capture connection to Zoho CRM and an invoicing connection to Zoho Books are built and authenticated separately, even for the same client.

The second thing is the data centre. Every Zoho account lives on one of several regional domains — .com for the US, .eu, .in and others — set when the account was created and not something an integration can guess. Getting this wrong is the single most common reason a first Zoho connection fails outright rather than misbehaving.

What goes wrong

Three things that go wrong with a Zoho connection

Two of these are specific to how Zoho is structured as a suite of apps rather than one product, which is why they surprise teams who bought Zoho One expecting one thing to just talk to another.

The customer exists in CRM and again in Books

A deal closes in Zoho CRM. Nobody told Zoho Books, so when it is time to invoice, somebody creates the customer there again from scratch, and the two records drift apart the first time either one is updated.

What you see instead

A won deal in CRM creates or matches the contact in Books automatically, with an agreed field owning the address, so an invoice never goes out to a stale one.

The connection fails with errors that look unrelated to anything

A connection built against the .com API domain for an account actually provisioned on .eu returns authentication errors that read like a broken token, and a developer spends a day rotating credentials that were never the problem.

What you see instead

The account's data centre is confirmed before a single line of integration code is written, and it is the first thing checked when anything about a Zoho connection misbehaves.

Hidden fields disappear through the standard web-to-lead form

Zoho's built-in web form generator is quick to set up but drops anything that is not one of its own fields — UTM parameters, a product interest picked on the page, a referral code — so the CRM record is thinner than what the visitor actually told you.

What you see instead

The form posts through the API instead, so every field the site actually captures reaches the Lead record, custom fields included.

The bill for doing it by hand

What running CRM and Books as two unconnected apps costs

The cost here concentrates less in retyping and more in the reconciliation it forces: a business invoicing 80 customers a month who also exist as CRM Deals typically spends an hour or two a month just confirming the two customer lists still agree, which is time spent purely because two apps that could talk do not.

The address-drift problem is the expensive one when it lands: an invoice sent to whichever record was updated last, returned or disputed, costs a credit note and a delay in getting paid — the same arithmetic as any accounting connection in this bank, just triggered by two Zoho apps disagreeing instead of one system and a spreadsheet.

What we build

We build the thing on the other end too

With Zoho the scoping conversation has to name the specific apps involved before anything else, because "Zoho" on its own describes a suite, not a system, and the price depends entirely on how many of those separate APIs a project actually touches.

A connection needs two ends. Plenty of agencies will build you the API call and hand you a JSON payload; that is the easy half. The harder half is what the data lands in — a website, a webshop, a portal your customers log into, an internal tool that replaces a spreadsheet. JKC builds both ends, which is why the connections we build tend to keep working: nothing about the receiving side is a black box to us.

API integrations

The connection itself: authentication, field mapping, rate limits, retries and a queue that survives the other system being down for an hour. Built against the documented API where there is one, and against whatever the vendor really offers where there is not.

Websites

WordPress sites that read from your systems instead of repeating them by hand: a careers page fed by your HR system, a team page that follows your payroll, prices and availability that are the real ones.

Webshops

WooCommerce shops where the order is the last time anyone types it: it becomes an invoice in your accounting package, a label at your carrier, a stock mutation in your warehouse, and a line in your CRM, on its own.

Web applications

When the process does not fit any standard product: a customer portal, a quoting tool, a planning board, a dashboard that reads three systems at once. Built on your data, with your systems as the source instead of a copy of them.

What can be connected

What can be connected between Zoho and your website

Each row below is against a specific Zoho app's own API and OAuth grant. A project rarely uses all of them; it is usually CRM plus one other app.

  • Web forms as Leads in Zoho CRM (into the tool)

    Posted through the CRM API with every field the site captures, including UTM parameters and page source that the built-in web form generator would otherwise drop.

  • Contacts between CRM and Books (both ways)

    A won Deal creating or matching the customer in Books, with one system named as the owner of the billing address so the two never quietly diverge.

  • Webshop orders as invoices in Zoho Books (into the tool)

    Line items, customer, VAT and the order reference, so a shop order becomes an invoice without re-entry, matched to the right customer record from the row above.

  • Products and prices (out of the tool)

    Read out of Zoho Inventory or Books into a website or shop, so the product list a customer sees matches what is actually sellable.

How it works

How a connection gets built at JKC

The same four steps every time, whichever tool it is. Nothing here is a workshop you pay for: step one exists because scoping a connection wrong is the single most expensive thing that can happen to it.

  1. 1. We look at what is actually being retyped

    Not "which fields exist" but "which fields does somebody currently move by hand, how often, and what breaks when they get it wrong". Most projects turn out to need two or three flows, not a full two-way sync of everything. That conversation is what keeps the quote where it is.

  2. 2. We pick the route, and say why

    A maintained connector from the vendor, a platform like Make or Zapier, or a custom integration against the API. Cheapest first, not custom first: if a supported plugin does exactly what you need, that is the answer and we will tell you so. Custom is for the cases where the off-the-shelf option would need so much configuring that it becomes the fragile option.

  3. 3. We build it to survive the other system

    Every connection ships with retries, a queue and an idempotency key, so an order that arrives while the other side is down is delivered later rather than lost, and a retry does not create a second invoice. On a test environment first where the vendor offers one, so the first thing your real administration sees is a working connection.

  4. 4. We hand it over with the failure modes written down

    Which alerts you will get, what each one means, what to do about it, and who to call. Plus the credentials in your own name, in your own vault — not in ours. A connection nobody but us can maintain is a connection you do not own.

After it goes live

A connection that fails silently is worse than no connection

This is the part most quotes leave out. A connection that stops working without telling anyone is worse than manual work, because with manual work at least somebody notices when it does not get done. Every connection JKC builds is monitored, and the monitoring is not an upsell — it is in the service fee.

An alert per failed message, not a monthly report

A message that does not get through raises an alert the same hour, with the record it was about. Not a dashboard you have to remember to look at.

Replay, not re-enter

Anything that failed sits in a queue and can be sent again once the cause is fixed, in order. Nobody goes back through yesterday to find the four orders that did not land.

We watch the vendor's changes, so you do not have to

APIs get versioned, deprecated and rate-limited. When a vendor announces a change that affects your connection, adjusting to it is part of the service fee, not a new project.

What it costs

From €1,700, and the biggest variable is who built the other end

For Zoho specifically, the price scales with the number of separate apps involved rather than the complexity of any single one. A CRM-only lead connection is at the lower end of the range; CRM plus Books plus a shop connection is closer to three smaller projects than one.

A connection starts from €1,700 plus a monthly service fee, which covers the monitoring, the queue and keeping up with the vendor's API changes. Work outside a fixed scope is €95 per hour.

What moves the number is not the tool — it is how well the system on the other end is known. If JKC built your website, your webshop or your web application, we already know its data model, its edge cases and where its stock numbers really come from, and a connection into it is mostly configuration and testing. If it is a system we have never opened, we start with a short technical check of both sides and quote after that, so you are not paying hourly for us to work out the basics.

Two more things that move it, in our experience more than anything else: whether the tool has a real API or only a CSV export, and whether the sync has to go both ways. One-way is roughly half the work of two-way, because two-way means deciding, per field, which system wins when they disagree — and that decision is the expensive part, not the code.

Questions

Frequently asked questions about connecting Zoho

It is visible in your account's own domain when you are logged in — zoho.eu versus zoho.com versus zoho.in, for instance — and we confirm it as one of the first things in the intake, before writing anything, precisely because it is the most common cause of a Zoho connection failing outright.

It cannot be changed after the account is created without Zoho support migrating it, so this is a fact we work around rather than one we can fix.

Free, 10 minutes

Not sure where the manual hours actually go?

That is what the Growth Scan is for. Ten minutes, no sales call attached: you get back where the double work sits, which connection would pay for itself first, and which one honestly would not.