Case study · Internal ops

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.

Role
Full-Stack Business Operations
Company
Aralab · Lisbon
Period
May 2025 – May 2026
Stack
Zoho CRM · Deluge · n8n · PHC (SOAP, VB.NET) · SQL Server · Metabase
21Deluge functions across leads, deals, quotes, accounts and products
2custom widgets that became the only supported way to convert a lead or duplicate a quote
20ERP operations exposed as one clean REST API through n8n
3playbook audiences: salespeople, sales ops and developers
Integration

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.

  1. Zoho CRMDeluge & widgetsCall one authenticated endpoint per resource.
  2. n8n · behind Cloudflare AccessOne router workflowMaps method + resource to an ERP procedure and ERP errors to HTTP codes.
  3. PHC web serviceVB.NET proceduresUpsert deals and products, create quotes and contacts — JSON in, JSON out.
  4. SQL ServerThe ERP’s tablesMulti-table writes wrapped in explicit transactions.
  1. 1Deal hits Closed WonSales Ops moves it through the blueprint; one function per pipeline takes over.
  2. 2Every won quote, in orderSent one at a time, so a deal can carry several quotes without race conditions.
  3. 3Missing records firstAn unknown account or product is created in the ERP and its ID saved back to the CRM.
  4. 4All or stopAny failure halts and emails the owner and IT; full success discards the losing quotes.
Convert LeadLead · Dr. Ana Ferreira · End Customer
An account with this name already existsHelix Pharma Labs · End Customer — pick it from the list instead. Conversion is blocked and the CRM admin has been alerted.
Sale type
Illustration rebuilt from the widget’s spec, with demo data
Product decision

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.

Debugging story

Five versions to find one swallowed error

SymptomSyncing a deal to the ERP returned success — and wrote nothing.
CauseThe ERP’s SQL helper was built for reads: on a failed insert it returned an empty table instead of throwing, hiding a unique-key clash on truncated deal names.
Fix, and the rule after itEvery write now catches its own error and returns it as data; names are made unique before insert. Silent failures became impossible.
Documentation as product

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.
Also at Aralab

Data you can act on

SQL/ETL clean-up, Mage pipelines and automated Metabase dashboards, plus a self-hosted internal PWA for tooling.

Before · Würth Portugal, 2022 – 24

Integrating with customers’ systems

ERP and procurement integrations that made Industry 4.0 sales — Kanban, automated picking — possible.

Before · DSwiss, 2024

A first CRM, on clean data

Led the HubSpot rollout — starting by cleaning corrupted invoice data the CRM would depend on.

What this means for you

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.