Description
n8n-nodes-emailconnect
An n8n community node for EmailConnect – enabling seamless email automation and webhook integration in your n8n workflows.
Features
- Domain Management: List, get details, check status, and configure your EmailConnect domains
- Alias Management: Create, read, update, and delete email aliases under your domains
- Webhook Configuration: Set up and manage webhooks for email processing automation
- Email Triggers: Receive real-time notifications when emails are processed through EmailConnect
- Filtering Options: Filter triggers by domain, alias, or event type for precise workflow control
Installation
Community Nodes (Recommended)
1. Go to Settings > Community Nodes in your n8n instance
2. Click Install a community node
3. Enter n8n-nodes-emailconnect
4. Click Install
Manual Installation
In your n8n root directory
npm install n8n-nodes-emailconnect
Docker
Add to your n8n Docker environment:
Add to your n8n Dockerfile or docker-compose
RUN npm install -g n8n-nodes-emailconnect
Configuration
1. EmailConnect API Credentials
Before using the nodes, you need to configure your EmailConnect API credentials:
1. Go to Credentials in your n8n instance
2. Click Create New Credential
3. Search for EmailConnect API
4. Enter your EmailConnect API key (get it from EmailConnect Dashboard)
2. EmailConnect Service Setup
Make sure you have:
Nodes Overview
EmailConnect Node
The main node for interacting with EmailConnect API operations.
Resources:
EmailConnect Trigger Node
A trigger node that starts workflows when EmailConnect processes emails.
Features:
– Create new aliases with webhooks
– Use existing aliases
– Use domain catch-all functionality
Usage Examples
Example 1: List All Domains
{
"nodes": [
{
"name": "Get Domains",
"type": "n8n-nodes-emailconnect.emailConnect",
"parameters": {
"resource": "domain",
"operation": "getAll"
}
}
]
}
Example 2: Create Email Alias
{
"nodes": [
{
"name": "Create Alias",
"type": "n8n-nodes-emailconnect.emailConnect",
"parameters": {
"resource": "alias",
"operation": "create",
"domainId": "your-domain-id",
"aliasName": "support",
"description": "Customer support emails"
}
}
]
}
Example 3: Email Processing Trigger
{
"nodes": [
{
"name": "Email Received",
"type": "n8n-nodes-emailconnect.emailConnectTrigger",
"parameters": {
"domainId": "your-domain-id",
"aliasMode": "create",
"aliasEmail": "support@example.com",
"webhookName": "Support Email Webhook",
"webhookDescription": "Webhook for support email processing"
}
}
]
}
API Permissions
This n8n node requires an EmailConnect API key with “API User” scope, which provides:
✅ Allowed Operations:
GET /api/domains – List your domainsGET /api/domains/{domainId} – Get domain detailsGET /api/domains/{domainId}/status – Check verification statusPUT /api/domains/{domainId} – Update domain configuration (allowAttachments & includeEnvelopeData only)❌ Blocked Operations:
POST /api/domains – Create domain (use EmailConnect dashboard)DELETE /api/domains/{domain} – Delete domain (use EmailConnect dashboard)Workflow Examples
Complete Email Processing Workflow
{
"name": "EmailConnect Processing Workflow",
"nodes": [
{
"name": "Email Received Trigger",
"type": "n8n-nodes-emailconnect.emailConnectTrigger",
"parameters": {
"events": ["email.received"],
"domainFilter": "support.example.com"
}
},
{
"name": "Process Email Content",
"type": "n8n-nodes-base.function",
"parameters": {
"functionCode": "// Extract email datanconst email = items[0].json;nreturn [{n json: {n sender: email.sender,n subject: email.subject,n content: email.textContent,n receivedAt: email.receivedAtn }n}];"
}
},
{
"name": "Send to Slack",
"type": "n8n-nodes-base.slack",
"parameters": {
"operation": "postMessage",
"channel": "#support",
"text": "New email from {{$node['Process Email Content'].json['sender']}}: {{$node['Process Email Content'].json['subject']}}"
}
}
]
}
Domain Status Monitoring
{
"name": "Domain Status Monitor",
"nodes": [
{
"name": "Get All Domains",
"type": "n8n-nodes-emailconnect.emailConnect",
"parameters": {
"resource": "domain",
"operation": "getAll"
}
},
{
"name": "Check Each Domain Status",
"type": "n8n-nodes-emailconnect.emailConnect",
"parameters": {
"resource": "domain",
"operation": "getStatus",
"domainId": "={{$json.id}}"
}
},
{
"name": "Alert on Issues",
"type": "n8n-nodes-base.if",
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$json.status}}",
"operation": "notEqual",
"value2": "verified"
}
]
}
}
}
]
}
Known Limitations
Webhook Cleanup on Node Deletion
⚠️ Important: Due to changes in n8n 1.15.0+, webhooks are not automatically deleted when EmailConnect trigger nodes are removed from workflows. This is a limitation of the n8n framework, not a bug in this node.
Impact: Deleted trigger nodes may leave “orphaned” webhooks in your EmailConnect account.
Solution: Manually clean up unused webhooks via the EmailConnect Webhooks Dashboard.
Why this happens: n8n no longer calls webhook deregistration methods to improve performance, assuming third-party services will handle webhook retries gracefully.
Troubleshooting
Common Issues
“Invalid API Key” Error
“Domain not found” Error
Webhook not receiving data
“Insufficient permissions” Error
Catch-all Alias Issues
*@domain.com) are automatically updated when recreatedGetting Help
Development
Building from Source
git clone https://github.com/xadi-hq/n8n-nodes-emailconnect.git
cd n8n-nodes-emailconnect
npm install
npm run build
Testing
npm test
Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests for new functionality
5. Submit a pull request
License
MIT License – see LICENSE file for details.
Changelog
v0.2.4 (2025-06-21)
v0.2.0
v0.1.0
Detailed Node Documentation
EmailConnect Node Operations
#### Domain Operations
Get All Domains
getAllGet Domain
get – domainId (required): The ID of the domain to retrieve
Get Domain Status
getStatus – domainId (required): The ID of the domain to check
Update Domain Configuration
updateConfig – domainId (required): The ID of the domain to update
– allowAttachments (boolean): Whether to allow email attachments
– includeEnvelopeData (boolean): Whether to include SMTP envelope data
#### Alias Operations
Get All Aliases
getAll – domainId (required): The domain ID to list aliases for
Get Alias
get – aliasId (required): The ID of the alias to retrieve
Create Alias
create – domainId (required): The domain ID to create alias under
– aliasName (required): The alias name (e.g., “support”)
– description (optional): Description of the alias
Update Alias
update – aliasId (required): The ID of the alias to update
– aliasName (optional): New alias name
– description (optional): New description
Delete Alias
delete – aliasId (required): The ID of the alias to delete
#### Webhook Operations
Get All Webhooks
getAll – domainId (optional): Filter webhooks by domain
Get Webhook
get – webhookId (required): The ID of the webhook to retrieve
Create Webhook
create – domainId (optional): Domain to associate webhook with
– aliasId (optional): Alias to associate webhook with
– url (required): Webhook endpoint URL
– description (optional): Webhook description
Update Webhook
update – webhookId (required): The ID of the webhook to update
– url (optional): New webhook URL
– description (optional): New description
Delete Webhook
delete – webhookId (required): The ID of the webhook to delete
EmailConnect Trigger Node
The trigger node receives webhook data from EmailConnect when emails are processed.
#### Configuration Options
Alias Modes
*@domain.com) for the domainWebhook Management
#### Webhook Data Structure
The trigger node outputs the following data structure:
{
"id": "email-processing-id",
"domainId": "domain-id",
"receivedAt": "2025-06-21T10:30:00Z",
"sender": "user@example.com",
"recipient": "support@yourdomain.com",
"subject": "Email subject",
"status": "email.received",
"payload": {
"headers": {},
"text": "Plain text content",
"html": "HTML content
",
"attachments": []
},
"envelope": {
"from": "user@example.com",
"to": ["support@yourdomain.com"]
}
}