A CRM that talks to the ERP — and a sales team that trusts it
At Aralab, a maker of industrial test chambers, I rolled out Zoho CRM, connected it to the legacy PHC ERP through n8n, replaced the fragile native flows with guided widgets, and wrote the playbooks so every audience knew how it worked.
Won in the CRM, booked in the ERP
The ERP only spoke SOAP. Rather than teach the CRM SOAP, I put a REST API in front of it — and nobody retyped a quote again.
- Zoho CRMDeluge & widgetsCall one authenticated endpoint per resource.
- n8n · behind Cloudflare AccessOne router workflowMaps method + resource to an ERP procedure and ERP errors to HTTP codes.
- PHC web serviceVB.NET proceduresUpsert deals and products, create quotes and contacts — JSON in, JSON out.
- SQL ServerThe ERP’s tablesMulti-table writes wrapped in explicit transactions.
- 1Deal hits Closed WonSales Ops moves it through the blueprint; one function per pipeline takes over.
- 2Every won quote, in orderSent one at a time, so a deal can carry several quotes without race conditions.
- 3Missing records firstAn unknown account or product is created in the ERP and its ID saved back to the CRM.
- 4All or stopAny failure halts and emails the owner and IT; full success discards the losing quotes.
I hid the Convert button
The native conversion could create a deal on the wrong pipeline, with no distributor or probability set. So I replaced it with a guided widget and made it the only path.
- Gated on lead typeAnything unroutable is stopped before the form even opens.
- Duplicate check on every keystrokeA matching account blocks the conversion and alerts the admin.
- Validate, review, then commitA summary of everything about to happen; editing anything hides it again.
- Rollback on failureConversion is irreversible, so a failed run restores the lead and emails IT.
The same pattern powers Duplicate Quote: pick the lines to copy, attach to an open deal or create one, decide the original’s fate — confirmed in one flow.
Five versions to find one swallowed error
A system people can run without me
Everything lives in a versioned knowledge base, written for the person who has to use it.
- Playbooks by audienceThe same feature explained three ways — for salespeople, sales ops and developers.
- Dependency registryWhich widget calls which function and workflow — updated in the same change as the code.
- A single quote specValidity, amounts, discards and the won flow in one source of truth.
- Field snapshotsDated API-field exports, so nothing is coded against a guessed field name.
Data you can act on
SQL/ETL clean-up, Mage pipelines and automated Metabase dashboards, plus a self-hosted internal PWA for tooling.
Integrating with customers’ systems
ERP and procurement integrations that made Industry 4.0 sales — Kanban, automated picking — possible.
A first CRM, on clean data
Led the HubSpot rollout — starting by cleaning corrupted invoice data the CRM would depend on.
I know when to configure, when to extend and when to build
Having bought, extended and built CRMs — and wired one to a legacy ERP — I can tell you which your problem actually needs, then ship it with the documentation that keeps it alive.