Resources
n8n Community Node
n8n-nodes-mailneo adds two nodes to n8n: Mailneo, an actions node over the v2 API, and Mailneo Trigger, which starts workflows on Mailneo webhook events and verifies every delivery before your workflow sees it.
Install
On self-hosted n8n (version 1.x or later), install from the UI: Settings → Community Nodes → Install and enter the package name.
n8n-nodes-mailneoCredentials
Two credential types; every node instance has an Authentication switch to pick between them.
Mailneo API (API key)
- In Mailneo: Settings → API Keys → Create key (
mk_live_...). - In n8n: create a Mailneo API credential and paste the key. It is sent as the
x-api-keyheader. Leave the Base URL alone unless you self-host Mailneo.
Mailneo OAuth2 API (OAuth 2.1 + PKCE)
Authorization-code with PKCE (S256) against https://api.mailneo.co — the endpoints are the ones published by the /.well-known/oauth-authorization-server discovery document: authorize at /oauth/authorize, token at /oauth/token, dynamic client registration at /oauth/register.
- With Use Dynamic Client Registration on (the default, supported by recent n8n versions), n8n registers itself — no client ID needed.
- On older n8n versions, turn it off and paste a client ID created in Mailneo. It is a public client; there is no client secret.
- Trim the requested scopes to what the workflow needs — the default asks for every live scope.
What the Mailneo node covers
Subscribers, lists, segments, contacts, campaigns, newsletters, templates, suppressions, analytics, email accounts, webhook endpoints, and the credential's own identity and usage. Cursor pagination is handled for you: choose Return Allor set a limit — limits above the API's 100-per-page maximum fetch multiple pages transparently.
The Mailneo Trigger
The trigger registers its own webhook endpoint through the API when the workflow is activated and deletes it on deactivation — no manual endpoint management. Every delivery's X-Mailneo-Signature HMAC is verified automatically (timestamped, ±300 s tolerance, constant-time comparison); unverifiable deliveries are rejected with 401 and never reach the workflow.
- The endpoint's signing secret is returned by the API once, at creation, and kept in the workflow's static data. Deactivating and reactivating the workflow creates a fresh endpoint and secret.
- Delivery is at-least-once and unordered. The output includes
eventId(stable across retries and replays — deduplicate on it),event,deliveryIdandisReplay.
Example workflow
Fetch enabled subscribers, keep the ones tagged vip, add them to a list. Paste it into a new n8n workflow, then replace the credential and list-ID placeholders.
{
"name": "Mailneo: VIPs onto the launch list",
"nodes": [
{
"parameters": {},
"id": "b1f0f6a0-0000-4000-8000-000000000001",
"name": "When clicking ‘Execute workflow’",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [0, 0]
},
{
"parameters": {
"authentication": "apiKey",
"resource": "subscriber",
"operation": "getAll",
"returnAll": true,
"filters": { "status": "ENABLED" }
},
"id": "b1f0f6a0-0000-4000-8000-000000000002",
"name": "Get Subscribers",
"type": "n8n-nodes-mailneo.mailneo",
"typeVersion": 1,
"position": [220, 0],
"credentials": {
"mailneoApi": { "id": "REPLACE_ME", "name": "Mailneo API" }
}
},
{
"parameters": {
"conditions": {
"options": { "caseSensitive": true, "typeValidation": "strict", "version": 2 },
"conditions": [
{
"leftValue": "={{ $json.tags }}",
"rightValue": "vip",
"operator": { "type": "array", "operation": "contains", "rightType": "any" }
}
],
"combinator": "and"
}
},
"id": "b1f0f6a0-0000-4000-8000-000000000003",
"name": "Keep VIPs",
"type": "n8n-nodes-base.filter",
"typeVersion": 2.2,
"position": [440, 0]
},
{
"parameters": {
"authentication": "apiKey",
"resource": "list",
"operation": "addSubscribers",
"listId": "REPLACE_WITH_LIST_ID",
"subscriberIds": "={{ $json.id }}"
},
"id": "b1f0f6a0-0000-4000-8000-000000000004",
"name": "Add to Launch List",
"type": "n8n-nodes-mailneo.mailneo",
"typeVersion": 1,
"position": [660, 0],
"credentials": {
"mailneoApi": { "id": "REPLACE_ME", "name": "Mailneo API" }
}
}
],
"connections": {
"When clicking ‘Execute workflow’": {
"main": [[{ "node": "Get Subscribers", "type": "main", "index": 0 }]]
},
"Get Subscribers": {
"main": [[{ "node": "Keep VIPs", "type": "main", "index": 0 }]]
},
"Keep VIPs": {
"main": [[{ "node": "Add to Launch List", "type": "main", "index": 0 }]]
}
},
"settings": {}
}Links
- n8n-nodes-mailneo on npm
- Source on GitHub
- n8n can also reach Mailneo as an MCP client — see the MCP server page.