npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-weclapp

v0.2.10

Published

n8n community node for the Weclapp ERP/CRM platform

Readme

n8n-nodes-weclapp

An n8n community node for the Weclapp ERP/CRM platform. It lets you read and write Weclapp data — customers, orders, articles, shipments, documents, and more — directly from your n8n workflows, and react to Weclapp events in real time with the built-in trigger node.

Installation

In your n8n instance, open Settings → Community Nodes → Install and enter:

n8n-nodes-weclapp

n8n will install the package and restart. The Weclapp and Weclapp Trigger nodes will appear in the node palette.

Requires n8n ≥ 0.187.0 (community node support).

Credentials

  1. Log in to your Weclapp account.
  2. Click your avatar (top-right) → My Settings → API.
  3. Copy your API token.
  4. In n8n, create a new Weclapp API credential:
    • Subdomain — the part before .weclapp.com in your URL (e.g. mycompany for mycompany.weclapp.com).
    • API Token — the token you copied above.

n8n will test the credential automatically against the /user/count endpoint.

Weclapp Node

Performs CRUD operations on the following Weclapp resources:

| Resource | Create | Get by ID | Search | Count | Update | Delete | Download | |---|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | Party (Customer / Contact) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | Article | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | Article Category | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | Sales Order | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | Quotation | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | Sales Invoice | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | Sales Open Item | | ✓ | ✓ | ✓ | | ✓ | | | Shipment | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | Purchase Order | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | Purchase Invoice | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | Incoming Goods | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | Comment | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | Currency | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | Document | | ✓ | ✓ | ✓ | | | ✓ | | Manufacturer | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | Accounting Transaction | | ✓ | ✓ | ✓ | | | | | Variant Article | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | Warehouse Stock | | ✓ | ✓ | ✓ | | | | | Warehouse Stock Movement | | ✓ | ✓ | ✓ | | | | | User | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |

Read-only resources — Document, Accounting Transaction, Warehouse Stock, and Warehouse Stock Movement do not support Create, Update, or Delete.

Operations

Get by ID

Fetches a single record by its Weclapp internal ID.

Example — look up a customer:

  • Resource: Party (Customer / Contact)
  • Operation: Get by ID
  • Record ID: {{ $json.partyId }}

Search

Returns a list of records, with optional filtering, sorting, and pagination.

Fields:

  • Custom Query — Weclapp filter syntax, e.g. salesChannel-eq=NET1&createdDate-gt=1700000000000. Multiple conditions are ANDed by default; use or-/orGroupN- prefixes for OR logic (see Weclapp Query Syntax).
  • Sort — field name, prefix with - for descending, e.g. -lastModifiedDate.
  • Return All — when enabled, fetches every page automatically. When disabled, use Page and Page Size to paginate manually.

Example — find all open sales orders modified in the last hour:

  • Resource: Sales Order
  • Operation: Search
  • Custom Query: orderStatusId-eq=OPEN&lastModifiedDate-gt={{ Date.now() - 3600000 }}
  • Return All: true

Example — search for a customer by number:

  • Resource: Party (Customer / Contact)
  • Custom Query: customerNumber-eq=K10001
Including referenced entities

Weclapp can return referenced records (e.g. the unit behind an article's unitId) in the same request. Add includeReferencedEntities to the Custom Query field with a comma-separated list of reference properties:

includeReferencedEntities=unitId,articleCategoryId

Weclapp returns a single, de-duplicated referencedEntities pool shared across the whole result set — it is not aligned to individual records. Rather than attaching that whole pool to every item, the node resolves each record's foreign keys against the pool and attaches only the matching entity inline: a field named <type>Id is resolved to a single object under <type>, and a field named <type>Ids to an array under <type>. This works for any reference whose base name matches a pool key, so each item carries just its own references. When Return All is enabled, the pool is merged across pages and de-duplicated by id before resolution.

Note: matching is done by id. If you narrow the response with properties and use the entity:prop selection syntax, include the entity's id too (e.g. unit:id,unit:name), otherwise the pooled entities have no id to match against and nothing will be resolved.

Example output for article with Custom Query includeReferencedEntities=unitId:

{
  "id": "1001",
  "articleNumber": "EPM242J",
  "unitId": "2770",
  "unit": { "id": "2770", "name": "Stk." }
}
Requesting additional properties

Some Weclapp fields are calculated or complexly determined and must be explicitly requested. Add additionalProperties to the Custom Query field with a comma-separated list of property names:

additionalProperties=currentSalesPrice

Weclapp returns an additionalProperties object where each property holds an array whose index aligns with the matching entity. The node maps each record's slice back onto that record under an additionalProperties key, so every item carries its own values. When Return All is enabled, the arrays are concatenated across pages in order to preserve that alignment.

Example output for article with Custom Query additionalProperties=currentSalesPrice:

{
  "id": "1001",
  "articleNumber": "EPM242J",
  "additionalProperties": {
    "currentSalesPrice": {
      "articleUnitPrice": "39.95",
      "currencyId": "256",
      "quantity": "1",
      "reductionAdditionItems": []
    }
  }
}

Count

Returns the number of records matching an optional filter, without fetching the records themselves. Accepts the same Custom Query filter syntax as Search (and the required entity filters for Comment / Document). The output is a single item { "count": <number> }.

Example — count open sales orders:

  • Resource: Sales Order
  • Operation: Count
  • Custom Query: orderStatusId-eq=OPEN

Create

Creates a new record. Map the fields you want to set in the Additional Fields section using n8n expressions or fixed values.

Example — create a sales order:

  • Resource: Sales Order
  • Operation: Create
  • Additional Fields → customerId: {{ $json.customerId }}

Update

Updates an existing record by ID. Only the fields you map are sent — unset fields are left unchanged.

Example — mark a shipment as dispatched:

  • Resource: Shipment
  • Operation: Update
  • Record ID: {{ $json.id }}
  • Additional Fields → status: SHIPPED

Delete

Deletes a record by ID (available for writable resources only). Returns { "success": true, "id": "<id>" } on success.

Example — delete a quotation:

  • Resource: Quotation
  • Operation: Delete
  • Record ID: {{ $json.id }}

Dry Run

Create, Update, and Delete expose a Dry Run toggle. When enabled, Weclapp runs its business logic and validates the payload but persists nothing — useful for validating input before committing changes. On success the response is returned without meta properties (id, version, createdDate, lastModifiedDate).

Download Document

Downloads a Weclapp document as a binary file (available for the Document resource only). The binary output can be passed to a Write Binary File node or an email attachment.

Example — attach a PDF invoice to an email:

  1. Weclapp node: Resource Document, Operation Download Document, Record ID {{ $json.documentId }}
  2. Send Email node: attach {{ $binary.data }}

Weclapp Trigger Node

Starts a workflow automatically whenever a Weclapp entity is created, updated, or deleted. It registers a webhook in Weclapp on activation and removes it on deactivation — no manual webhook setup required.

Configuration:

  • Resource — the entity type to watch. Supports all writable resources: Party, Article, Article Category, Sales Order, Quotation, Sales Invoice, Sales Open Item, Shipment, Purchase Order, Purchase Invoice, Incoming Goods, Comment, Currency, Document, Manufacturer, Variant Article, Accounting Transaction, and more.
  • Events — one or more of Created, Updated, Deleted.

Example — notify Slack when a new sales order arrives:

  1. Weclapp Trigger: Resource Sales Order, Events Created
  2. Slack node: post New order {{ $json.orderNumber }} from {{ $json.customerName }}

Example — sync customer updates to a CRM:

  1. Weclapp Trigger: Resource Party (Customer / Contact), Events Updated
  2. HTTP Request node: PUT https://crm.example.com/contacts/{{ $json.id }}

Example — alert on shipment deletion:

  1. Weclapp Trigger: Resource Shipment, Events Deleted
  2. Send Email node: notify the logistics team

Tip: Before your first live run, use n8n's Pin Data feature on the trigger node to capture a sample payload. This enables field autocompletion in downstream nodes (IF, Switch, Set, etc.) without waiting for a real event.

Weclapp Query Syntax

The Custom Query field uses Weclapp's native filter format:

fieldName-operator=value&anotherField-operator=value

Common operators:

| Operator | Meaning | |---|---| | eq | equals | | ne | not equals | | lt / gt | less / greater than | | le / ge | less / greater than or equal | | like | wildcard match (% = any chars) | | null | field is null (true/false) |

Timestamps are Unix milliseconds (e.g. 1700000000000).

OR conditions

By default, multiple conditions are combined with AND. To combine conditions with OR, prefix them with or-:

or-name-eq=charlie&or-name-eq=chaplin

To mix AND and OR, assign conditions to numbered groups with orGroupN-. Conditions within the same group are ORed together, and separate groups are ANDed with each other:

orGroup1-shippingCarrierId-eq=213305372&orGroup1-shippingCarrierId-eq=113291681&orGroup2-status-eq=CANCELLED&orGroup2-status-eq=INCOMING_CANCELLED

This matches records whose carrier is one of the two IDs and whose status is CANCELLED or INCOMING_CANCELLED. Repeating the same key is required and fully supported — every value is sent to Weclapp.

Note: Weclapp only allows filtering on filterable properties; computed *Name fields (e.g. shippingCarrierName) are generally not filterable in API v2 — filter by the corresponding *Id instead. Unknown filter properties are silently ignored by Weclapp, but unknown sort or properties values return an error. When Weclapp rejects a request, the node surfaces its exact message and the offending parameter.

See the Weclapp API documentation for the full list of filterable fields per entity.

License

MIT — see LICENSE.