An ERP built on HubSpot, replacing a system with no API
A multi-location retailer replaced Epicor Eclipse with HubSpot as the system of record, Postgres for pricing and n8n moving inventory.
The situation
A luxury home fixtures retailer with two showrooms and a warehouse needed to replace Epicor Eclipse. Eclipse exposes no API, so nothing could be integrated with it directly and the replacement had to be built from scratch.
What I built
- An architecture with HubSpot as the system of record and sales interface, Postgres holding pricing rules, and n8n as the automation layer and the single writer of inventory.
- The data model: 5 custom objects (PO Line, PO Receipt, Inventory Movement, Branch and Cycle Count Line), 81 custom properties across standard objects, 4 deal pipelines, and the associations tying them together.
- Idempotent provisioning, so the entire portal build re-runs cleanly instead of being clicked together by hand.
- Live inventory balances per branch on each product record, with every movement written to an append-only ledger object for audit.
- A Postgres pricing schema and resolver, unit tested.
- 11 n8n workflows, with the single-writer inventory flow and the pricing resolver complete and unit tested.
- A reservation state machine with reversal handling, specified and added to the architecture document.
Why a single writer
Inventory across several locations is the hardest thing to get right in a CRM, because concurrent writes corrupt a balance. Routing every change through one n8n process, and logging each movement to a ledger, keeps the number correct and checkable.
Stack
HubSpot custom objectsHubSpot CRM APIPostgresn8nJSON
Related service: HubSpot Integrations.
Have a system that needs to talk to HubSpot?
Book a free 30-minute call. Bring the messy version and I’ll help you work out what to fix first.
Book a call