Retail Operations Integration
Store, ERP, and POS agree on stock and orders, ending oversells and manual reconciliation.

- Sector
- D2C · Omnichannel retail
- Built with
- Node.js
- Webhooks
- PostgreSQL
- AWS
01 · Discover
What the client needed
An omnichannel retailer sold through an online store and physical shops. The store, ERP, and POS each had their own version of stock, and staff reconciled them by hand.
Requirements
- One source of truth for stock across store, ERP, and POS
- Near real-time inventory sync to stop overselling
- Online orders flowing into the ERP for fulfilment and accounting
- Support for buy online, pick up in store
- Alerts when a sync fails, not silent drift
- Reports that show what changed and why
Constraints
- The ERP and POS stay in place
- Some systems only offer batch exports or rate-limited APIs
- No interruption to trading while we connect them
02 · Pitch
What we proposed
We mapped every record that moved between systems and agreed which system owns each one.
Options we weighed
What we agreed
- An ownership map: which system is the source of truth for each record
- Event-driven sync where APIs allow, scheduled sync where they don’t
- Monitoring and reconciliation from day one
03 · Build
How we built it
A small integration service sits between the systems and moves every change through a queue that can be retried and audited.
Every requirement, and what we built for it
| Requirement | What we built |
|---|---|
| One source of truth | An ownership map enforced in code, so each system only writes the records it owns |
| Stop overselling | Webhook-driven stock updates, with scheduled catch-up for systems without events |
| Orders into the ERP | Online orders pushed to the ERP with status updates flowing back to the store |
| Pick up in store | Store-level stock shown online and reserved when an order is placed |
| No silent drift | Retries with backoff, a dead-letter queue, and alerts when something fails |
| Visibility | Daily reconciliation reports comparing stock and orders across systems |
Platform and architecture
- Integration service
- Node.js workers with a queue for every change
- Data
- PostgreSQL for mappings, sync state, and an audit log
- Hosting
- AWS, with scheduled jobs for batch-only systems
- Connections
- Shopify webhooks and APIs, ERP and POS APIs and exports
04 · Handover
Launch and handover
We ran the new sync alongside manual checks until the reports matched, then switched over fully.
- Parallel run against manual reconciliation
- Runbook for each alert and how to fix it
- Dashboard access for the operations team
- Ongoing support for system changes and upgrades
05 · Outcome
The outcome
Store, ERP, and POS agree on stock and orders, ending oversells and manual reconciliation.
Store, ERP, and POS now agree on stock and orders, and the team spends its time on exceptions, not spreadsheets.
- Overselling from stale stock has stopped
- Manual reconciliation replaced by daily reports
- Failures surface as alerts instead of customer complaints
Have a project like this?
A few lines is enough. You’ll hear back from an engineer, not a salesperson.

