n8n-nodes-resend 1.2.3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +185 -359
- package/dist/credentials/ResendApi.credentials.js.map +1 -1
- package/dist/nodes/Resend/GenericFunctions.d.ts +21 -0
- package/dist/nodes/Resend/GenericFunctions.js +206 -0
- package/dist/nodes/Resend/GenericFunctions.js.map +1 -0
- package/dist/nodes/Resend/Resend.node.d.ts +9 -0
- package/dist/nodes/Resend/Resend.node.js +916 -1189
- package/dist/nodes/Resend/Resend.node.js.map +1 -1
- package/dist/nodes/Resend/ResendTrigger.node.js +58 -21
- package/dist/nodes/Resend/ResendTrigger.node.js.map +1 -1
- package/dist/nodes/Resend/descriptions/ApiKeyDescription.d.ts +3 -0
- package/dist/nodes/Resend/descriptions/ApiKeyDescription.js +104 -0
- package/dist/nodes/Resend/descriptions/ApiKeyDescription.js.map +1 -0
- package/dist/nodes/Resend/descriptions/BroadcastDescription.d.ts +3 -0
- package/dist/nodes/Resend/descriptions/BroadcastDescription.js +294 -0
- package/dist/nodes/Resend/descriptions/BroadcastDescription.js.map +1 -0
- package/dist/nodes/Resend/descriptions/ContactDescription.d.ts +3 -0
- package/dist/nodes/Resend/descriptions/ContactDescription.js +321 -0
- package/dist/nodes/Resend/descriptions/ContactDescription.js.map +1 -0
- package/dist/nodes/Resend/descriptions/ContactPropertyDescription.d.ts +3 -0
- package/dist/nodes/Resend/descriptions/ContactPropertyDescription.js +137 -0
- package/dist/nodes/Resend/descriptions/ContactPropertyDescription.js.map +1 -0
- package/dist/nodes/Resend/descriptions/DomainDescription.d.ts +3 -0
- package/dist/nodes/Resend/descriptions/DomainDescription.js +163 -0
- package/dist/nodes/Resend/descriptions/DomainDescription.js.map +1 -0
- package/dist/nodes/Resend/descriptions/EmailDescription.d.ts +3 -0
- package/dist/nodes/Resend/descriptions/EmailDescription.js +890 -0
- package/dist/nodes/Resend/descriptions/EmailDescription.js.map +1 -0
- package/dist/nodes/Resend/descriptions/SegmentDescription.d.ts +3 -0
- package/dist/nodes/Resend/descriptions/SegmentDescription.js +79 -0
- package/dist/nodes/Resend/descriptions/SegmentDescription.js.map +1 -0
- package/dist/nodes/Resend/descriptions/TemplateDescription.d.ts +3 -0
- package/dist/nodes/Resend/descriptions/TemplateDescription.js +256 -0
- package/dist/nodes/Resend/descriptions/TemplateDescription.js.map +1 -0
- package/dist/nodes/Resend/descriptions/TopicDescription.d.ts +3 -0
- package/dist/nodes/Resend/descriptions/TopicDescription.js +176 -0
- package/dist/nodes/Resend/descriptions/TopicDescription.js.map +1 -0
- package/dist/nodes/Resend/descriptions/WebhookDescription.d.ts +3 -0
- package/dist/nodes/Resend/descriptions/WebhookDescription.js +154 -0
- package/dist/nodes/Resend/descriptions/WebhookDescription.js.map +1 -0
- package/dist/nodes/Resend/descriptions/index.d.ts +10 -0
- package/dist/nodes/Resend/descriptions/index.js +27 -0
- package/dist/nodes/Resend/descriptions/index.js.map +1 -0
- package/dist/nodes/Resend/resend-icon-black.svg +2 -2
- package/dist/nodes/Resend/resend-icon-white.svg +2 -2
- package/dist/package.json +7 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -4
package/README.md
CHANGED
|
@@ -1,93 +1,66 @@
|
|
|
1
1
|
<h1 align="center">
|
|
2
2
|
<br>
|
|
3
|
-
<a href="/"><img src=".github/media/resend.png" alt="
|
|
3
|
+
<a href="/"><img src=".github/media/resend.png" alt="n8n-nodes-resend" width="900"></a>
|
|
4
4
|
<br>
|
|
5
5
|
</h1>
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://badge.fury.io/js/n8n-nodes-resend"><img src="https://badge.fury.io/js/n8n-nodes-resend.svg" alt="npm version"></a>
|
|
9
|
+
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
|
|
10
|
+
</p>
|
|
8
11
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
>
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="#installation">Installation</a> |
|
|
14
|
+
<a href="#credentials">Credentials</a> |
|
|
15
|
+
<a href="#resources">Resources</a> |
|
|
16
|
+
<a href="#trigger-events">Trigger Events</a> |
|
|
17
|
+
<a href="#development">Development</a>
|
|
18
|
+
</p>
|
|
15
19
|
|
|
16
20
|
---
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- **📤 Email Operations** - Send single emails, batch emails, schedule delivery
|
|
21
|
-
- **📎 File Attachments** - Support for binary data and remote URL attachments
|
|
22
|
-
- **👥 Contact Management** - Create, update, delete contacts and audiences
|
|
23
|
-
- **🌐 Domain Management** - Verify domains, configure DNS settings
|
|
24
|
-
- **🔑 API Key Management** - Create and manage API keys programmatically
|
|
25
|
-
- **📢 Broadcasts** - Send newsletter campaigns to audiences
|
|
26
|
-
- **🎣 Webhook Support** - Receive real-time email events
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## 🚀 Installation
|
|
31
|
-
|
|
32
|
-
### Method 1: Via n8n Community Nodes (Recommended)
|
|
22
|
+
A community node for [n8n](https://n8n.io) that integrates with the [Resend](https://resend.com) email API. Send emails, manage contacts, handle domains, and receive webhooks.
|
|
33
23
|
|
|
34
|
-
|
|
35
|
-
<summary>📋 Step-by-step installation guide</summary>
|
|
24
|
+
## API Coverage
|
|
36
25
|
|
|
37
|
-
1.
|
|
38
|
-
- Navigate to **Settings** → **Community Nodes**
|
|
26
|
+
Comprehensive coverage of the Resend API (v1.1.0). The table below shows which endpoints are currently implemented:
|
|
39
27
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
28
|
+
| API Resource | Endpoint | Status | Operations |
|
|
29
|
+
| ---------------------------- | ------------------------------------------ | --------------- | --------------------------------------------------------------- |
|
|
30
|
+
| **Email** | `/emails` | ✅ Full | Send, Send Batch, List, Get, Update, Cancel |
|
|
31
|
+
| **Email Attachments** | `/emails/{id}/attachments` | ❌ Missing | List attachments, Get attachment |
|
|
32
|
+
| **Receiving Emails** | `/emails/receiving` | ❌ Missing | List received, Get received, Get attachments |
|
|
33
|
+
| **Domains** | `/domains` | ✅ Full | Create, List, Get, Update, Delete, Verify |
|
|
34
|
+
| **API Keys** | `/api-keys` | ✅ Full | Create, List, Delete |
|
|
35
|
+
| **Templates** | `/templates` | ⚠️ Partial | Create, List, Get, Update, Delete (Missing: Publish, Duplicate) |
|
|
36
|
+
| **Audiences** | `/audiences` | ⚠️ Deprecated | Replaced by Segments in v2.0.0 |
|
|
37
|
+
| **Contacts** | `/audiences/{id}/contacts` | ✅ Full | Create, List, Get, Update, Delete |
|
|
38
|
+
| **Contact Segments** | `/audiences/{id}/contacts/{id}/segments` | ❌ Missing | Add to segment, List segments, Remove from segment |
|
|
39
|
+
| **Contact Topics** | `/audiences/{id}/contacts/{id}/topics` | ❌ Missing | Get topics, Update topics |
|
|
40
|
+
| **Broadcasts** | `/broadcasts` | ✅ Full | Create, List, Get, Update, Delete, Send |
|
|
41
|
+
| **Segments** | `/segments` | ⚠️ Partial | Create, List, Get, Delete (Missing: Update, Filter conditions) |
|
|
42
|
+
| **Topics** | `/topics` | ✅ Full | Create, List, Get, Update, Delete |
|
|
43
|
+
| **Contact Properties** | `/contact-properties` | ✅ Full | Create, List, Get, Update, Delete |
|
|
44
|
+
| **Webhooks** | `/webhooks` | ✅ Full | Create, List, Get, Update, Delete |
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
- Restart your n8n instance to load the new nodes
|
|
46
|
+
## Installation
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
- The **Resend** and **Resend Trigger** nodes should appear in your node palette
|
|
48
|
+
### Community Nodes (Recommended)
|
|
50
49
|
|
|
51
|
-
|
|
50
|
+
1. Go to **Settings** > **Community Nodes**
|
|
51
|
+
2. Click **Install a community node**
|
|
52
|
+
3. Enter `n8n-nodes-resend`
|
|
53
|
+
4. Restart n8n
|
|
52
54
|
|
|
53
|
-
###
|
|
54
|
-
|
|
55
|
-
<details>
|
|
56
|
-
<summary>🔧 For self-hosted n8n instances</summary>
|
|
55
|
+
### Manual Installation
|
|
57
56
|
|
|
58
57
|
```bash
|
|
59
|
-
# Navigate to your n8n installation directory
|
|
60
58
|
cd ~/.n8n
|
|
61
|
-
|
|
62
|
-
# Install the package
|
|
63
59
|
npm install n8n-nodes-resend
|
|
64
|
-
|
|
65
|
-
# Restart n8n
|
|
66
|
-
# If using PM2: pm2 restart n8n
|
|
67
|
-
# If using Docker: docker restart n8n
|
|
68
|
-
# If running directly: restart your n8n process
|
|
69
60
|
```
|
|
70
61
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
### Method 3: Docker Installation
|
|
74
|
-
|
|
75
|
-
<details>
|
|
76
|
-
<summary>🐳 For Docker users</summary>
|
|
77
|
-
|
|
78
|
-
Add this to your `docker-compose.yml`:
|
|
62
|
+
### Docker
|
|
79
63
|
|
|
80
|
-
```yaml
|
|
81
|
-
version: '3.8'
|
|
82
|
-
services:
|
|
83
|
-
n8n:
|
|
84
|
-
image: n8nio/n8n
|
|
85
|
-
environment:
|
|
86
|
-
- N8N_NODES_INCLUDE=n8n-nodes-resend
|
|
87
|
-
# ... other configuration
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Or use environment variable:
|
|
91
64
|
```bash
|
|
92
65
|
docker run -it --rm \
|
|
93
66
|
-p 5678:5678 \
|
|
@@ -95,308 +68,161 @@ docker run -it --rm \
|
|
|
95
68
|
n8nio/n8n
|
|
96
69
|
```
|
|
97
70
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
-
|
|
229
|
-
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
</details>
|
|
233
|
-
|
|
234
|
-
---
|
|
235
|
-
|
|
236
|
-
## 💡 Usage Examples
|
|
237
|
-
|
|
238
|
-
<details>
|
|
239
|
-
<summary>📧 Email with Attachments Example</summary>
|
|
240
|
-
|
|
241
|
-
```yaml
|
|
242
|
-
# Example workflow: Send invoice email with PDF attachment
|
|
243
|
-
Workflow:
|
|
244
|
-
1. HTTP Request Node (trigger)
|
|
245
|
-
2. Code Node (generate invoice data)
|
|
246
|
-
3. HTML/CSS to PDF Node (create PDF)
|
|
247
|
-
4. Resend Node (send email with attachment)
|
|
248
|
-
|
|
249
|
-
Resend Node Configuration:
|
|
250
|
-
- Resource: Email
|
|
251
|
-
- Operation: Send
|
|
252
|
-
- From: billing@yourcompany.com
|
|
253
|
-
- To: {{ $json.customerEmail }}
|
|
254
|
-
- Subject: Your Invoice #{{ $json.invoiceNumber }}
|
|
255
|
-
- Attachments:
|
|
256
|
-
- Type: Binary Data
|
|
257
|
-
- Binary Property: data
|
|
258
|
-
- Filename: invoice-{{ $json.invoiceNumber }}.pdf
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
</details>
|
|
262
|
-
|
|
263
|
-
<details>
|
|
264
|
-
<summary>🔄 Automated Email Campaigns</summary>
|
|
265
|
-
|
|
266
|
-
```yaml
|
|
267
|
-
# Example: Weekly newsletter automation
|
|
268
|
-
Workflow:
|
|
269
|
-
1. Cron Trigger (weekly)
|
|
270
|
-
2. Database Node (fetch newsletter content)
|
|
271
|
-
3. Resend Node (create broadcast)
|
|
272
|
-
4. Resend Node (send to audience)
|
|
273
|
-
|
|
274
|
-
Benefits:
|
|
275
|
-
- Automated scheduling
|
|
276
|
-
- Audience segmentation
|
|
277
|
-
- Performance tracking
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
</details>
|
|
281
|
-
|
|
282
|
-
<details>
|
|
283
|
-
<summary>📊 Email Event Processing</summary>
|
|
284
|
-
|
|
285
|
-
```yaml
|
|
286
|
-
# Example: Handle bounced emails
|
|
287
|
-
Trigger: Resend Trigger Node
|
|
288
|
-
- Event: email.bounced
|
|
289
|
-
|
|
290
|
-
Actions:
|
|
291
|
-
1. Database Node (log bounce)
|
|
292
|
-
2. Resend Node (remove from audience)
|
|
293
|
-
3. Slack Node (notify team)
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
</details>
|
|
297
|
-
|
|
298
|
-
---
|
|
299
|
-
|
|
300
|
-
## ⚠️ Important Notes
|
|
301
|
-
|
|
302
|
-
> [!WARNING]
|
|
303
|
-
> **Attachment Limitations:**
|
|
304
|
-
> - Maximum email size: **40MB** (including attachments)
|
|
305
|
-
> - Attachments **not supported** with scheduled emails or batch operations
|
|
306
|
-
> - Some file types may be blocked by email providers
|
|
307
|
-
|
|
308
|
-
> [!NOTE]
|
|
309
|
-
> **Rate Limits:** Respect Resend's API rate limits. Use batch emails for better efficiency.
|
|
310
|
-
|
|
311
|
-
<details>
|
|
312
|
-
<summary>📋 API Limitations & Best Practices</summary>
|
|
313
|
-
|
|
314
|
-
### Best Practices
|
|
315
|
-
- ✅ Always verify your sending domains
|
|
316
|
-
- ✅ Use appropriate API key permissions
|
|
317
|
-
- ✅ Handle webhook events for better deliverability
|
|
318
|
-
- ✅ Implement proper error handling
|
|
319
|
-
- ✅ Monitor email metrics and bounce rates
|
|
320
|
-
|
|
321
|
-
### Rate Limits
|
|
322
|
-
- **Single emails**: Standard Resend rate limits apply
|
|
323
|
-
- **Batch emails**: More efficient for bulk sending
|
|
324
|
-
- **API calls**: Respect Resend's rate limiting
|
|
325
|
-
|
|
326
|
-
</details>
|
|
327
|
-
|
|
328
|
-
---
|
|
329
|
-
|
|
330
|
-
## 🔧 Development
|
|
331
|
-
|
|
332
|
-
<details>
|
|
333
|
-
<summary>🛠️ Contributing & Development Setup</summary>
|
|
71
|
+
## Credentials
|
|
72
|
+
|
|
73
|
+
1. Get your API key from [Resend Dashboard](https://resend.com/api-keys)
|
|
74
|
+
2. In n8n, go to **Credentials** > **Add credential**
|
|
75
|
+
3. Search for **Resend API** and paste your key
|
|
76
|
+
|
|
77
|
+
## Resources
|
|
78
|
+
|
|
79
|
+
### Email
|
|
80
|
+
|
|
81
|
+
| Operation | Description |
|
|
82
|
+
| ---------- | --------------------------------------------- |
|
|
83
|
+
| Send | Send a single email with optional attachments |
|
|
84
|
+
| Send Batch | Send up to 100 emails in one request |
|
|
85
|
+
| List | List sent emails |
|
|
86
|
+
| Get | Retrieve email details and status |
|
|
87
|
+
| Cancel | Cancel a scheduled email |
|
|
88
|
+
| Update | Modify a scheduled email |
|
|
89
|
+
|
|
90
|
+
### Contact
|
|
91
|
+
|
|
92
|
+
| Operation | Description |
|
|
93
|
+
| --------- | -------------------------- |
|
|
94
|
+
| Create | Add a new contact |
|
|
95
|
+
| Get | Retrieve contact details |
|
|
96
|
+
| Update | Modify contact information |
|
|
97
|
+
| Delete | Remove a contact |
|
|
98
|
+
| List | List all contacts |
|
|
99
|
+
|
|
100
|
+
### Contact Property
|
|
101
|
+
|
|
102
|
+
| Operation | Description |
|
|
103
|
+
| --------- | -------------------------------- |
|
|
104
|
+
| Create | Create a custom contact property |
|
|
105
|
+
| Get | Retrieve property details |
|
|
106
|
+
| Update | Modify property settings |
|
|
107
|
+
| Delete | Remove a property |
|
|
108
|
+
| List | List all contact properties |
|
|
109
|
+
|
|
110
|
+
### Segment
|
|
111
|
+
|
|
112
|
+
| Operation | Description |
|
|
113
|
+
| --------- | ------------------------ |
|
|
114
|
+
| Create | Create a new segment |
|
|
115
|
+
| Get | Retrieve segment details |
|
|
116
|
+
| Delete | Remove a segment |
|
|
117
|
+
| List | List all segments |
|
|
118
|
+
|
|
119
|
+
### Topic
|
|
120
|
+
|
|
121
|
+
| Operation | Description |
|
|
122
|
+
| --------- | --------------------------- |
|
|
123
|
+
| Create | Create a subscription topic |
|
|
124
|
+
| Get | Retrieve topic details |
|
|
125
|
+
| Update | Modify topic settings |
|
|
126
|
+
| Delete | Remove a topic |
|
|
127
|
+
| List | List all topics |
|
|
128
|
+
|
|
129
|
+
### Broadcast
|
|
130
|
+
|
|
131
|
+
| Operation | Description |
|
|
132
|
+
| --------- | ----------------------------- |
|
|
133
|
+
| Create | Create an email campaign |
|
|
134
|
+
| Get | Retrieve broadcast details |
|
|
135
|
+
| Send | Send a broadcast to a segment |
|
|
136
|
+
| Update | Modify broadcast settings |
|
|
137
|
+
| Delete | Remove a broadcast |
|
|
138
|
+
| List | List all broadcasts |
|
|
139
|
+
|
|
140
|
+
### Template
|
|
141
|
+
|
|
142
|
+
| Operation | Description |
|
|
143
|
+
| --------- | ------------------------- |
|
|
144
|
+
| Create | Create an email template |
|
|
145
|
+
| Get | Retrieve template details |
|
|
146
|
+
| Update | Modify a template |
|
|
147
|
+
| Delete | Remove a template |
|
|
148
|
+
| List | List all templates |
|
|
149
|
+
|
|
150
|
+
### Domain
|
|
151
|
+
|
|
152
|
+
| Operation | Description |
|
|
153
|
+
| --------- | --------------------------- |
|
|
154
|
+
| Create | Add a sending domain |
|
|
155
|
+
| Get | Retrieve domain details |
|
|
156
|
+
| Verify | Trigger domain verification |
|
|
157
|
+
| Update | Modify domain settings |
|
|
158
|
+
| Delete | Remove a domain |
|
|
159
|
+
| List | List all domains |
|
|
160
|
+
|
|
161
|
+
### API Key
|
|
162
|
+
|
|
163
|
+
| Operation | Description |
|
|
164
|
+
| --------- | ---------------------- |
|
|
165
|
+
| Create | Generate a new API key |
|
|
166
|
+
| Delete | Revoke an API key |
|
|
167
|
+
| List | List all API keys |
|
|
168
|
+
|
|
169
|
+
### Webhook
|
|
170
|
+
|
|
171
|
+
| Operation | Description |
|
|
172
|
+
| --------- | ------------------------- |
|
|
173
|
+
| Create | Create a webhook endpoint |
|
|
174
|
+
| Get | Retrieve webhook details |
|
|
175
|
+
| Update | Modify webhook settings |
|
|
176
|
+
| Delete | Remove a webhook |
|
|
177
|
+
| List | List all webhooks |
|
|
178
|
+
|
|
179
|
+
## Trigger Events
|
|
180
|
+
|
|
181
|
+
The **Resend Trigger** node receives webhooks for real-time email events. Signatures are automatically verified using Svix.
|
|
182
|
+
|
|
183
|
+
| Event | Description |
|
|
184
|
+
| -------------------------- | ---------------------------- |
|
|
185
|
+
| `email.sent` | Email sent to recipient |
|
|
186
|
+
| `email.delivered` | Email delivered successfully |
|
|
187
|
+
| `email.delivery_delayed` | Email delivery delayed |
|
|
188
|
+
| `email.opened` | Recipient opened the email |
|
|
189
|
+
| `email.clicked` | Link clicked in email |
|
|
190
|
+
| `email.bounced` | Email bounced |
|
|
191
|
+
| `email.complained` | Spam complaint received |
|
|
192
|
+
| `contact.created` | New contact added |
|
|
193
|
+
| `contact.updated` | Contact modified |
|
|
194
|
+
| `contact.deleted` | Contact removed |
|
|
195
|
+
| `domain.created` | New domain added |
|
|
196
|
+
| `domain.updated` | Domain modified |
|
|
197
|
+
| `domain.deleted` | Domain removed |
|
|
198
|
+
|
|
199
|
+
## Limitations
|
|
200
|
+
|
|
201
|
+
- Maximum email size: 40MB (including attachments)
|
|
202
|
+
- Attachments not supported with scheduled emails
|
|
203
|
+
|
|
204
|
+
## Development
|
|
334
205
|
|
|
335
206
|
```bash
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
# Install dependencies
|
|
207
|
+
git clone https://github.com/SilkePilon/n8n-nodes-resend.git
|
|
208
|
+
cd n8n-nodes-resend
|
|
340
209
|
npm install
|
|
341
|
-
|
|
342
|
-
# Build the project
|
|
343
210
|
npm run build
|
|
344
|
-
|
|
345
|
-
# Run linting
|
|
346
211
|
npm run lint
|
|
347
|
-
|
|
348
|
-
# Run tests
|
|
349
|
-
npm test
|
|
350
|
-
```
|
|
351
|
-
|
|
352
|
-
### Project Structure
|
|
353
212
|
```
|
|
354
|
-
├── credentials/
|
|
355
|
-
│ └── ResendApi.credentials.ts
|
|
356
|
-
├── nodes/
|
|
357
|
-
│ └── Resend/
|
|
358
|
-
│ ├── Resend.node.ts
|
|
359
|
-
│ ├── ResendTrigger.node.ts
|
|
360
|
-
│ └── icons/
|
|
361
|
-
└── package.json
|
|
362
|
-
```
|
|
363
|
-
|
|
364
|
-
</details>
|
|
365
213
|
|
|
366
|
-
|
|
214
|
+
## License
|
|
367
215
|
|
|
368
|
-
|
|
216
|
+
[MIT](LICENSE.md)
|
|
369
217
|
|
|
370
|
-
|
|
371
|
-
<summary>❓ Getting Help</summary>
|
|
218
|
+
## Acknowledgments
|
|
372
219
|
|
|
373
|
-
|
|
374
|
-
- **Issues**: [GitHub Issues](https://github.com/your-repo/issues)
|
|
375
|
-
- **n8n Community**: [n8n Community Forum](https://community.n8n.io)
|
|
376
|
-
- **Discord**: [n8n Discord Server](https://discord.gg/n8n)
|
|
377
|
-
|
|
378
|
-
</details>
|
|
379
|
-
|
|
380
|
-
---
|
|
381
|
-
|
|
382
|
-
## 📄 License
|
|
383
|
-
|
|
384
|
-
This project is licensed under the MIT License - see the [LICENSE](LICENSE.md) file for details.
|
|
385
|
-
|
|
386
|
-
---
|
|
387
|
-
|
|
388
|
-
## 🙏 Acknowledgments
|
|
389
|
-
|
|
390
|
-
- Built for the amazing [n8n](https://n8n.io) workflow automation platform
|
|
391
|
-
- Powered by [Resend](https://resend.com) email infrastructure
|
|
392
|
-
- Inspired by the n8n community
|
|
220
|
+
Enhanced with contributions from [jannispkz/n8n-nodes-resend-complete](https://github.com/jannispkz/n8n-nodes-resend-complete).
|
|
393
221
|
|
|
394
222
|
---
|
|
395
223
|
|
|
396
|
-
<
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
</div>
|
|
224
|
+
<p align="center">
|
|
225
|
+
<a href="https://github.com/SilkePilon/n8n-nodes-resend">GitHub</a> |
|
|
226
|
+
<a href="https://github.com/SilkePilon/n8n-nodes-resend/issues">Issues</a> |
|
|
227
|
+
<a href="https://resend.com/docs">Resend Docs</a>
|
|
228
|
+
</p>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResendApi.credentials.js","sourceRoot":"","sources":["../../credentials/ResendApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,SAAS;IAAtB;QACC,SAAI,GAAG,WAAW,CAAC;QACnB,gBAAW,GAAG,YAAY,CAAC;QAC3B,qBAAgB,GAAG,oDAAoD,CAAC;QACxE,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;
|
|
1
|
+
{"version":3,"file":"ResendApi.credentials.js","sourceRoot":"","sources":["../../credentials/ResendApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,SAAS;IAAtB;QACC,SAAI,GAAG,WAAW,CAAC;QACnB,gBAAW,GAAG,YAAY,CAAC;QAC3B,qBAAgB,GAAG,oDAAoD,CAAC;QACxE,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;QACF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,aAAa,EAAE,sCAAsC;iBACrD;aACD;SACD,CAAC;QACF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,wBAAwB;gBACjC,GAAG,EAAE,WAAW;gBAChB,MAAM,EAAE,KAAK;aACb;SACD,CAAC;IACH,CAAC;CAAA;AA7BD,8BA6BC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { IExecuteFunctions, IHttpRequestMethods, ILoadOptionsFunctions, INodePropertyOptions } from 'n8n-workflow';
|
|
2
|
+
export declare const resendRequest: <T = unknown>(executeFunctions: IExecuteFunctions, method: IHttpRequestMethods, endpoint: string, apiKey: string, body?: Record<string, unknown> | Record<string, unknown>[], qs?: Record<string, string | number>) => Promise<T>;
|
|
3
|
+
export declare const normalizeEmailList: (value: string | string[] | undefined) => string[];
|
|
4
|
+
export declare const parseTemplateVariables: (executeFunctions: IExecuteFunctions, variablesInput: {
|
|
5
|
+
variables?: Array<{
|
|
6
|
+
key: string;
|
|
7
|
+
type: string;
|
|
8
|
+
fallbackValue?: unknown;
|
|
9
|
+
}>;
|
|
10
|
+
} | undefined, fallbackKey: "fallbackValue" | "fallback_value", itemIndex: number) => Record<string, unknown>[] | undefined;
|
|
11
|
+
export declare const buildTemplateSendVariables: (variablesInput: {
|
|
12
|
+
variables?: Array<{
|
|
13
|
+
key: string;
|
|
14
|
+
value?: unknown;
|
|
15
|
+
}>;
|
|
16
|
+
} | undefined) => Record<string, unknown> | undefined;
|
|
17
|
+
export declare const requestList: (executeFunctions: IExecuteFunctions, url: string, apiKey: string, returnAll: boolean, limit?: number) => Promise<unknown[]>;
|
|
18
|
+
export declare function getTemplateVariables(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
|
|
19
|
+
export declare function getTemplates(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
|
|
20
|
+
export declare function getSegments(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
|
|
21
|
+
export declare function getTopics(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
|