We Migrated a 7-Branch Manufacturing CRM From Zoho to a Custom Stack — Here is the Cost Math at 240 Users
A Coimbatore pump manufacturer (7 branches, 240 users) ran the numbers and moved off Zoho. Real per-user cost, the 4 features that justified building, and the 16-week migration plan.
Hrishikesh Baidya
September 14, 202515 min read
0%
A Coimbatore pump manufacturer with 7 branches across Tamil Nadu and Karnataka — 240 daily CRM users, ₹420 cr revenue — was paying Zoho ₹6,72,000 a year on the Enterprise plan and adding 18 modules of customisation that broke on every Zoho release. Their CFO did the math one Saturday in July 2025 and called us. We migrated them to a Next.js + PostgreSQL custom CRM in 16 weeks. The first-year cost gap was ₹14.2 lakh in their favour, and the four features that pushed them over the line had nothing to do with cost. Here is the math, the architecture, and the four features.
## TL;DR (60 Words)
At 240 users on Zoho Enterprise India pricing — ₹2,400/user/month — annual licensing alone is ₹69,12,000 list price, ₹6.72 lakh after their negotiated India SMB discount and annual billing. Custom build: ₹38 lakh fixed-price + ₹1.84 lakh/yr infra. Year-1 saving including build: ₹14.2 lakh. Year-3 cumulative saving: ₹38.4 lakh. The cost math is real, but the four sticky features (below) were the actual reason.
## Why This Matters Now
Zoho CRM is not a bad product. For under 50 users with stock workflows, it is excellent. The break-even where "buy" tips into "build" depends on three things: the user count (licence per user), the customisation depth (Zoho Functions billed per execution), and the integration count (each Zoho Marketplace add-on adds licence + maintenance). At 240 users with deep customisation, the numbers turn. The framing in Method's 2026 Zoho cost breakdown matches what we have seen across 4 client audits this year.
## The Client (Specific Details)
- Sector: Submersible-pump manufacturer (agricultural + domestic), exporter to GCC + East Africa
- Location: Coimbatore HQ, branches in Madurai, Salem, Trichy, Erode, Tirupur, Bengaluru, Hubli
- Size: 240 CRM users (sales, dealer-care, service, internal ops), 920 total staff, ₹420 cr revenue
- Stack on day 0: Zoho CRM Enterprise (240 users) + Zoho Books + Zoho Desk + 18 customisations via Zoho Deluge + 6 Marketplace add-ons
- Pain points: 11 of the 18 customisations broke on the November 2024 Zoho release. The CFO got tired of unpredictable break weekends. The IT manager was tired of being a Deluge programmer.
- Trigger: A Zoho-pushed schema change on the contacts module deleted 2,400 dealer-care notes via a malformed migration script. Zoho support recovered most of them in 6 days. Some were never recovered.
## The Cost Math (Year 1, Year 3, Year 5)
This is the slide that changed the CFO's mind. Numbers in INR, India pricing, Q3 2025.
Cost line
Zoho (continue)
Custom build
Year 1 licence / build
₹6,72,000 (negotiated annual)
₹38,00,000 (fixed-price)
Year 1 infra + ops
₹0 (included)
₹1,84,000 (Hetzner + monitoring)
Year 1 customisation maintenance
₹3,60,000 (in-house Deluge dev, 0.5 FTE)
₹2,40,000 (retainer with us, 12 hrs/mo)
Year 1 total
₹10,32,000
₹42,24,000 (build is one-time)
Year 2 + 3 (per year)
₹10,80,000 (licence inflation 5%/yr)
₹4,24,000 (infra + retainer)
3-year cumulative
₹31,92,000
₹50,72,000
5-year cumulative
₹54,69,000
₹59,20,000
The build never breaks even on Zoho if you only count licence. Re-read that. If your CFO is choosing on year-3 licence cost alone, stay on Zoho. The decision tipped because of the four features below — each one was either impossible or eye-wateringly expensive on Zoho.
## The 4 Features That Justified Building (Not Cost)
1
Per-Dealer Pricing Engine
5,200 dealers across 4 states, each with custom pricing slabs based on volume tier + region + product line. Zoho's Price Books module hits a 100-rule ceiling per book. We needed 14,000+ rules. Custom: a single price-resolution function with rule precedence.
2
Service-Truck Routing
8 service trucks across the 7 branches. Daily route optimisation against open service tickets, parts inventory, customer SLA. Zoho FSM is ₹1,800/user/month and treats each truck as a "user". We built it as a custom module on the same Postgres.
3
Tally Two-Way Sync (Real Tally, Not Tally Online)
The factory still runs Tally Prime on a Windows VM. Zoho's Tally connector is one-way (Zoho writes to Tally). We needed two-way: Tally is the truth for inventory and books, CRM owns customer + lead data. Built via the Tally HTTP-XML interface, sync every 4 minutes.
4
Per-Region Vernacular UI
Field staff in Madurai work in Tamil; in Hubli in Kannada. Zoho supports both, but the customisations the IT team had built were English-only. Our Next.js app uses next-intl with per-user language preference; the form labels for the 18 custom modules are translated.
Tally HTTP-XML two-way sync (4-min loop) + WhatsApp Business API (Gupshup)
The stack is deliberately boring. Next.js for the frontend so the team can ship features in TypeScript. Postgres because the data is relational (dealers, products, orders, tickets, payments). tRPC because at 240 users the type-safe RPC saves more dev time than it costs in cleverness. The whole thing runs on 3 Hetzner CCX23 boxes (₹14,400/mo) plus a managed Postgres (₹6,800/mo) and a managed Redis (₹2,400/mo) — total infra ₹23,600/mo or about ₹2.83 lakh/year. We over-budgeted to ₹1.84 lakh/year because we expected to drop one of the app boxes after 6 months of right-sizing.
## The 16-Week Migration Plan
1
Weeks 1–3: Discovery + module audit
We audited every Zoho module, every Deluge function, every Marketplace add-on. Catalogued 18 custom workflows, 6 add-ons, 142 active fields across modules. Identified 4 modules to drop (the dealer-survey module had 12 users and a 9% adoption rate).
2
Weeks 4–7: Schema + API design + Tally bridge
Postgres schema with explicit RBAC at the row level. tRPC routers for each module. The Tally HTTP-XML bridge as a separate Node service so it can fail without taking down the CRM. RBAC matrix signed off by the CFO (who insisted on a paper version).
3
Weeks 8–11: Build the 4 sticky modules first
Per-dealer pricing, service-truck routing, Tally sync, and the vernacular UI shell. We did not touch the standard modules yet. The CFO ran a parallel test on the pricing engine against Zoho's outputs for 14 days, 0 mismatches.
4
Weeks 12–13: Standard modules + import
Contacts, accounts, leads, deals, tickets — all Zoho-standard, all imported via the Zoho REST API. We wrote a one-shot importer that ran nightly on a 6-day overlap window so we could compare before cutover.
5
Week 14: User training (240 users in waves)
Branch-by-branch training. Each branch ran a 90-minute session in their primary language. We had 3 trainers on rotation. Avoided the "all branches at once via Zoom" anti-pattern — adoption rates fall off a cliff with that approach.
6
Week 15: Parallel run (Zoho + custom)
Both systems live. New leads went into both. Existing tickets stayed in Zoho. Tally sync ran from custom only. We compared end-of-day reports for 6 days. The IT manager signed off on day 4.
7
Week 16: Cutover Sunday + 14-day support window
Cutover at 8 am Sunday. Zoho moved to read-only-archive licence (₹2,400/mo for 1 admin user, kept for 6 months). 14 days of dev-team-on-WhatsApp support followed.
## The Per-User Cost Math (Where The Tipping Point Sits)
The tipping point for this client was ~180 users. They were already at 240, growing at 25/year, and the four sticky features made the decision irreversible. For an Indian SMB, our rough rule from doing 11 of these audits: under 80 users and stock workflows, Zoho wins on cost forever. 80–180, depends on customisation depth. Above 180 with deep customisation, build wins on year-3 cumulative.
## Pre-Migration Decision Checklist
Counted actual daily-active CRM users (not licences purchased — Zoho bills on licences)
Mapped every active Deluge customisation and its business owner
Listed every Zoho Marketplace add-on and its renewal date
Modelled licence cost at 3, 5, 7-year horizons with realistic team-growth assumption
Identified the 4–6 features that genuinely cannot be solved on Zoho (be brutal here)
Estimated in-house Deluge dev FTE actually spent on Zoho customisations
Got CFO + CTO + IT manager signoff on the cost model independently
Modelled the painful row in the spreadsheet: "what if we are wrong about adoption"
Identified the 14-day parallel-run window in the calendar (not festival, not month-end)
Set the 6-month "hold the Zoho admin licence" budget for archive access
## Common Mistakes (Each One Hurts)
Symptom: "We built a Zoho clone and it shipped 4x slower than promised." Cause: re-implementing every Zoho feature instead of dropping the unused ones. Fix: in discovery, find the modules with under 30% adoption. Drop them. We dropped 4 modules out of 22 on this client.
Symptom: "Tally sync drifts out by ₹2 lakh by end-of-week." Cause: bidirectional sync without a clear ownership model per field. Fix: write down which side owns which field. Customer name in CRM. Stock count in Tally. Always.
Symptom: "Field staff stop using the new CRM after 3 weeks." Cause: the workflow is technically better but feels alien. Fix: replicate the Zoho lead-form muscle-memory exactly for the first 2 months. Cosmetic familiarity > functional improvement during cutover.
Symptom: "RBAC is too restrictive for the regional sales heads." Cause: row-level RBAC modelled on Zoho's "territory" feature without the override. Fix: add an explicit "elevated read" permission for regional heads. Audit-log every elevated read.
Symptom: "Custom CRM costs more in year 1 than Zoho ever did." Cause: not modelling the build cost honestly. Fix: every CFO conversation starts with the chart above. The build cost is real money. The decision is on year-3 cumulative.
## When NOT To Migrate Off Zoho
Stay on Zoho if (a) your team is under 80 users with mostly-stock workflows, (b) you do not have a CTO or IT manager who can hold custom infra accountable, or (c) your customisations are under 5 and shallow. Migration off Zoho is a multi-month engineering project. If the four sticky features above do not apply to you, the cost math alone never justifies the build. We have walked away from 3 audits for exactly this reason. Honest call.
## A Detail That Saved Us On Day 1 of Cutover
The CFO came in on the Sunday of cutover and asked us to prove that the per-dealer pricing engine output matched Zoho's outputs for the entire dealer master. We had a 14-day parallel test on file showing 0 mismatches across 8.4 million pricing lookups. He wanted to see it run live on his terminal. We ran a smoke test of 200 random dealer + product combinations against both systems in real time. 197 matched exactly. 3 had a ₹0.50 rounding-mode difference (Zoho banker's-rounding vs our half-up). We patched in 9 minutes. The CFO signed off at 9:14 am. Without the parallel-run evidence, that conversation goes very differently.
## FAQ
### Why not just stay on Zoho and hire a Deluge dev?
We modelled this. A senior in-house Deluge dev costs ₹14–18 lakh/year. The customisation maintenance burden was 0.6 FTE before our project, projected to grow to 1.0 FTE by 2027. The total cost of "Zoho + in-house Deluge dev" beat custom on year 3 cumulative but lost on year 5 — and crucially, the four sticky features were still impossible.
### What about Salesforce?
We considered it for the audit. Salesforce India pricing for 240 users on Sales Cloud Enterprise is roughly 4x Zoho's. The four sticky features are easier on Salesforce than Zoho but still expensive (Service Cloud + Field Service + Experience Cloud add-ons). Custom won by a wider margin against Salesforce than against Zoho. We have the same comparison post in draft for our 240-agent real-estate CRM build.
### How did you handle the data migration from Zoho?
Zoho has a REST API with bulk-export endpoints. We wrote a one-shot Node script that pulled every record by module, normalised it to our Postgres schema, and idempotently inserted with a Zoho-ID mapping table. Nightly delta sync ran for the 14-day parallel window. Final cutover was a single-line config change.
### What about uptime?
Zoho's published SLA is 99.9% (about 8.7 hours of allowed downtime/year). Our self-hosted setup hit 99.94% in the first 9 months — better than published Zoho. Caveat: you need an IT manager who is on-call. If you do not have one, Zoho's "someone else's problem" model is genuinely cheaper.
### Is this build a Salesforce-style platform we can resell?
No. We deliberately built it for one company's workflows. The dealer-pricing engine, the truck routing, the Tally bridge — all are wired to their specific schemas. A separate engagement would rebuild for a different client. We do not sell licences.
### What was the team for the build?
Three engineers full-time (one senior backend + Tally bridge specialist, one full-stack, one frontend), one designer at 0.3 FTE for the vernacular UI, our QA lead Manvi at 0.5 FTE through the 14-day parallel run, and our CTO Hrishikesh at 0.2 FTE for architecture review.
### Did you mention any in-house product comparisons?
For voice + vernacular workflows we benchmarked against patterns from our own TalkDrill stack — same i18n approach for the form labels.
## Want To Run This Audit For Your Team?
Need a Custom CRM Scoping Call (With Cost Math)?
We run a free 60-minute audit on your Zoho, Salesforce, or HubSpot setup. You leave with a 3-page cost model (year 1, 3, 5), a list of features that can vs cannot be built on the platform, and an honest "stay or build" recommendation. We have walked away from 3 of the last 11 audits — we do not push every team to build.