Email Sender Node
The Email Sender node sends emails directly through Mailpulse with automatic open and click tracking. Unlike the Email Tracker node, it handles both sending and tracking in a single step.
Overview
The Email Sender node is an all-in-one solution:
- Sends the email via your verified sending domain
- Automatically tracks opens and clicks
- Associates the email with a campaign (optional)
[Trigger] → [Build Email] → [Email Sender] → (done!)No need for a separate send node — Mailpulse handles delivery.
Prerequisites
Before using this node, you must:
- Have a verified sending domain in your Mailpulse settings
- Configure the Mailpulse API credentials in n8n
Input Fields
| Field | Required | Type | Description |
|---|---|---|---|
| From | Yes | String | Sender address (e.g. Your Name <you@yourdomain.com>) |
| To | Yes | String | Recipient(s), comma-separated for multiple |
| Subject | Yes | String | Email subject line |
| HTML Content | Yes | String | HTML content of the email |
| Reply To | No | String | Reply-to address |
| CC | No | String | CC recipient(s), comma-separated |
| BCC | No | String | BCC recipient(s), comma-separated |
| Campaign | No | Select | Campaign association (None / Existing / New) |
| Metadata | No | JSON | Custom metadata to store |
From Address
The domain part of the From address must match a verified sending domain in your Mailpulse settings. Examples:
Newsletter <news@yourdomain.com>— domain isyourdomain.comsupport@yourdomain.com— domain isyourdomain.com
Campaign Options
Same as the Email Tracker node:
- None — No campaign association
- Select Existing — Pick from your existing campaigns
- Create New — Enter a name (creates if it doesn’t exist)
Output
| Field | Type | Description |
|---|---|---|
id | String | Resend email ID |
emailTrackingId | String | Mailpulse tracking ID |
from | String | Sender address |
to | String[] | Recipient addresses |
subject | String | Email subject |
linksTracked | Number | Count of tracked links |
Example Output
{
"id": "re_abc123",
"emailTrackingId": "hE4kJ9xP",
"from": "Newsletter <news@yourdomain.com>",
"to": ["user@example.com"],
"subject": "Welcome!",
"linksTracked": 3
}Workflow Examples
Simple Newsletter
[Schedule Trigger] → [HTTP Request (get content)] → [Email Sender]Email Sender:
- From:
Newsletter <news@yourdomain.com> - To:
{{ $json.email }} - Subject:
{{ $json.title }} - HTML Content:
{{ $json.htmlBody }} - Campaign: Create New →
Newsletter {{ new Date().toISOString().slice(0,7) }}
Bulk Send from Spreadsheet
[Google Sheets] → [Email Sender]Each row becomes an email. The node processes items one by one, each getting unique tracking.
With Conditional Logic
[Get Users] → [IF premium?] → [Email Sender (premium template)]
↓
[Email Sender (free template)]Email Sender vs Email Tracker
| Email Sender | Email Tracker | |
|---|---|---|
| Sends the email | Yes | No |
| Needs a sending domain | Yes | No |
| Needs a send node after | No | Yes (Gmail, SMTP, etc.) |
| Use case | All-in-one sending + tracking | Track emails sent by another node |
Use Email Sender when you want Mailpulse to handle everything. Use Email Tracker when you already have a send node (Gmail, SMTP, SendGrid) and just need tracking.
Error Handling
Common errors:
| Error | Cause |
|---|---|
Domain "..." is not verified | The from address uses a domain not verified in Mailpulse |
Missing required fields | From, to, subject, or htmlContent is missing |
Unauthorized | Invalid API key |
The node respects n8n’s “Continue On Fail” setting. Enable it to process remaining items if one fails.