Docs/Integrations/Connecting Your ERP

Integrations

Connecting Your ERP

Webhook- and n8n-based ERP integration architecture for self-hosted deployments and customer-side validation.

The approach — n8n as the integration layer

EasyFlow does not try to embed every ERP connector directly inside the product. Instead it uses n8n and a webhook-based ingestion layer so organizations can connect their own ERP environment without turning EasyFlow into a vendor-specific integration monolith.

n8n handles the hard part: authentication, API pagination, field mapping, polling, and retry logic. EasyFlow receives normalized events via a secure webhook and routes them through the workflow engine.

⚠Current project status: the webhook receiver, token auth, payload normalization, connector catalog, and n8n templates are implemented. Production validation against specific SAP, Oracle, Dynamics, or NetSuite customer environments still depends on access to those systems.
ℹEasyFlow includes a built-in local operational event feed for development and demos. That makes it possible to exercise low-stock alerts, shipment delays, approval aging, supplier breaches, and purchase-order events end to end while the integration layer is still being validated in real customer environments.
✦n8n is already included in EasyFlow's docker-compose. Run 'docker compose up' and n8n starts automatically at localhost:5678. No extra installation.

Why n8n + webhooks instead of custom connectors

Typical custom connector burdenEasyFlow integration approach
Write and maintain vendor-specific connector code inside the productKeep EasyFlow vendor-neutral and use webhook ingestion plus external automation
Own token refresh and API edge cases for every ERPLet n8n or the customer's chosen integration layer handle those concerns
Store ERP credentials in the main appKeep credentials in the customer's integration environment
Hard-couple product releases to vendor API behaviorKeep the ingestion contract stable and let source-side mapping evolve independently
Rebuild similar plumbing for each new ERPReuse the same normalized event contract across many sources

Setup — 5 steps

1
Open n8n at localhost:5678

It starts automatically with docker compose. Create your n8n account on first visit.

2
Import the EasyFlow workflow template

Go to Workflows → Import From File. Open one of the example templates in examples/n8n-workflows/. Today the repo includes SAP and Oracle examples, and the same pattern can be extended to other systems.

3
Add your ERP credentials in n8n

The imported workflow will prompt for your ERP's URL and API credentials. Enter them in n8n's credential manager. EasyFlow never sees or stores your ERP credentials.

4
Copy your webhook token from EasyFlow

Go to Integrations in the EasyFlow sidebar. Copy the X-Webhook-Token for your workspace. Paste it into the n8n workflow's header field.

5
Activate the n8n workflow

Click Activate. n8n will start polling or receiving events from your ERP and pushing normalized data into EasyFlow.

Direct webhook (no n8n needed)

If your ERP supports outbound webhooks, you can skip n8n entirely and send events directly to EasyFlow:

bash
curl -X POST \
  http://localhost:8000/api/webhooks/inbound/your-tenant-slug \
  -H "Content-Type: application/json" \
  -H "X-Source: sap" \
  -H "X-Webhook-Token: your-token-from-integrations-page" \
  -d '{
    "event_type": "purchase_order_created",
    "source": "sap",
    "data": {
      "purchase_order_id": "PO-4901",
      "supplier_name": "Supplier Alpha",
      "quantity": 500,
      "currency": "GBP",
      "status": "pending_approval"
    }
  }'

Supported ERP systems

System typeMethodWhat exists todayValidation status
SAP S/4HANAn8n OData + scheduled pollingExample template in repoLocal template + payload pathway implemented
Oracle ERP Cloudn8n REST APIExample template in repoLocal template + payload pathway implemented
Microsoft Dynamics 365n8n Dataverse APIPlanned source typeProduction validation pending
NetSuiten8n REST / SuiteQLPlanned source typeProduction validation pending

What data flows in

Event typeTriggered when
purchase_order_createdA new PO is raised in the ERP
purchase_order_approvedA PO approval is recorded
stock_updatedStock level changes for any SKU
stock_low_alertStock falls below the reorder point
shipment_dispatchedA shipment leaves the warehouse
shipment_deliveredA delivery is confirmed
supplier_confirmedA supplier accepts a PO
workflow_triggerA custom event from your ERP or script