@wals-pro/n8n-nodes-weclapp
v0.3.2
Published
n8n community node for the weclapp ERP API — CRUD, actions, binary downloads, webhook trigger
Maintainers
Readme
@wals-pro/n8n-nodes-weclapp
n8n community node for the weclapp ERP REST API (v2). Covers 16 resources with CRUD and entity actions, a generic Custom API Call operation for everything else, and a webhook trigger node. Maintained by Wals-pro, a weclapp implementation partner — we build and run weclapp automations for customers, and this node is what our own workflows use.
Status: work in progress (pre-1.0). The node is in productive use at Wals-pro, but resources and parameters are still evolving; minor versions can contain breaking changes. Known gaps are tracked in GitHub Issues, changes in the CHANGELOG. This is a community project — issues, pull requests, and first-time contributors are very welcome, see Contributing.
Package name: install @wals-pro/n8n-nodes-weclapp. The unscoped n8n-nodes-weclapp on npm is an unrelated package by a different author — that name was taken before this project existed, so this node is published under the @wals-pro scope.
Requirements
- Self-hosted n8n with community nodes enabled (
N8N_COMMUNITY_PACKAGES_ENABLED=true). The node is not verified yet, so it is not installable on n8n Cloud. - A weclapp API v2 token.
- Node.js ≥ 20.15 (only for manual npm installs).
Installation
n8n GUI (self-hosted): Settings → Community nodes → Install →
@wals-pro/n8n-nodes-weclappnpm:
npm install @wals-pro/n8n-nodes-weclappDocker:
docker exec -u node -it <container-name> \
npm install -g @wals-pro/n8n-nodes-weclappRestart n8n after installation.
Authentication
- In weclapp: User Settings (top-right menu → your name) → API token → Generate/copy.
- In n8n: Credentials → New → search for weclapp API.
- Base URL:
https://<your-subdomain>.weclapp.com/webapp/api/v2 - API Key: the token from step 1.
- Test credential — n8n sends
GET /currency?pageSize=1and expects200 OK.
Details: docs/usage.md — Authentication
Quick start
- Add a weclapp node.
- Resource →
Article, Operation →Get Many. - Leave Limit empty (
0) to fetch all pages, or set a cap. - Optionally add a Filter, e.g.
status/Equals/ACTIVE.
Importable example: docs/examples/article-list.json
Supported resources
| Resource | Operations | |---|---| | Article | Get, Get Many, Create, Update, Delete + 7 actions | | Party (Customer / Supplier) | Get, Get Many, Create, Update, Delete | | Sales Order | Get, Get Many, Create, Update, Delete + order actions | | Purchase Order | Get, Get Many, Create, Update, Delete + 11 actions | | Sales Invoice | Get, Get Many, Create, Update, Delete + PDF | | Purchase Invoice | Get, Get Many, Create, Update, Delete + Apply Payment | | Quotation | Get, Get Many, Create, Update, Delete + PDF | | Shipment | Get, Get Many, Create, Update, Delete + PDF | | Warehouse / Stock | Get, Get Many + bookIncoming / bookOutgoing | | Bank Account / Transaction | Get, Get Many | | Document | Get, Get Many, Upload, Download | | Production Order | Get, Get Many, Create, Update + PDF | | Ticket + Comment | Full CRUD | | Tag / Unit / User | Get, Get Many | | Webhook | CRUD | | Custom API Call | Any method / path — covers the remaining 130+ entities |
Behavior notes
Things this node does that are worth knowing before you build on it:
- Limit / pagination. Every Get Many has a single Limit field. Empty or
0fetches all pages automatically (1000 records per request); a value > 0 caps the result. - Filters. Field / operator / value rows support all 14 weclapp filter suffixes (
-eq,-ne,-in,-null, …).in/notinaccept comma lists (A,B,C). For OR and parenthesized logic, use Raw Filter Expression — it passes a verbatim weclappfilter=string. - Projection. Additional Fields →
properties,includeReferencedEntities,additionalProperties,serializeNullsare sent as query parameters.additionalPropertiesresults (e.g. shipmentavailability) are merged onto each row underjson.additionalProperties. - Updates are partial. Update sends
PUTwithignoreMissingProperties=true. No priorversionfetch needed; only the fields you send change. A body of{ "status": "DELIVERY_NOTE_PRINTED" }is a valid, complete update. - Custom attributes. On Create/Update (party, sales order, sales invoice, article) the tenant's custom-attribute definitions load as typed fields. Date values are converted to weclapp's Berlin-local epoch milliseconds.
- Create guard. With Continue On Fail, failed items emit
{ error }into the main output. Gate downstream marker writes with{{ $json.id != null && $json.error == null }}, or use Stop On Error for marker workflows. - Errors. weclapp RFC 7807 problem responses are parsed into readable n8n errors, including field-level validation messages.
More in docs/usage.md.
Trigger node
weclapp Trigger starts workflows on weclapp entity events:
- Add weclapp Trigger, select Entity Type and Events (Created / Updated / Deleted).
- Activate the workflow — the webhook is registered in weclapp automatically and removed on deactivation.
Example: docs/examples/webhook-trigger.json
Examples
| Example | What it shows | |---|---| | article-list.json | List articles with a status filter | | party-create.json | Create a customer | | sales-order-lifecycle.json | Get and update a sales order | | webhook-trigger.json | Receive weclapp events | | reconciliation-find.json | Fetch open bank transactions + invoices |
Contributing
This is a community project. We use the node for our own customer automations, but it only covers the weclapp API well if people bring their real-world use cases — so contributions of every size are genuinely welcome, and issues are actively triaged and worked.
- Issues — bug reports, missing endpoints or resources, confusing parameters, docs gaps: open an issue. No template needed; a failing request/response or an exported workflow snippet helps a lot.
- Pull requests — from typo fixes to whole new resources. Each resource lives in its own
descriptions/*Description.ts; copy an existing one as the pattern. - First contribution? Open a draft PR or an issue describing what you want to build — we're happy to point you at the right files and review early.
Dev setup
git clone https://github.com/Wals-pro/n8n-nodes-weclapp.git
cd n8n-nodes-weclapp
npm install
npm run dev # n8n at http://localhost:5678 with hot reload| Script | Description |
|---|---|
| npm run build | Compile to dist/ |
| npm run lint | n8n community node linter |
| npm run test | vitest unit + integration tests |
| npm run codegen | Regenerate entity metadata from @weclapp/sdk |
Before submitting a PR: npm run lint && npm run build && npm run test.
Related
- weclapp MCP server — connect AI assistants (Claude, Cursor, Copilot, …) to weclapp via the Model Context Protocol: weclapp-mcp.wals.pro
License
MIT — Copyright (c) 2026 Wals-pro
