Reference · Tools
Mailjet
Send transactional emails (plain or template-based) and SMS messages via the Mailjet API.
The Mailjet node sends transactional email, either free-form or from a Mailjet template, and can also send SMS. A typical build is emailing an order confirmation from a template and texting the delivery notification from the same workflow.
- Node type
- Action (binary)
- Parameters
- 24
- Outputs
- Output, Error
- Credentials
- Mailjet Email API , Mailjet SMS API
Mailjet
Send transactional emails and SMS messages via the Mailjet API
Overview
Sends transactional emails and SMS messages via the Mailjet API. Supports two resources: Email and SMS. For Email, you can send plain emails with HTML/text body parts, CC, BCC, reply-to, tracking options, variables, and custom campaigns, or send template-based emails using a pre-configured Mailjet template ID. For SMS, you can send text messages to phone numbers in E.164 format. Email operations use the Mailjet Send API v3.1 with HTTP Basic Auth (API Key + Secret Key). SMS operations use the Mailjet SMS API v4 with Bearer Token auth. SandboxMode can be enabled via the email credential to validate payloads without delivering.
Category: Communication
Tool Name: mailjet
Version: 1
Appearance: Icon: lucide-Mail | Color: #0078FF
Node Type
Action (Binary) — handles file/binary data operations
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Mailjet Email API, Mailjet SMS API credentials. See the Credentials Guide for setup instructions.
The two credentials cover different resources and neither is mandatory on its own: configure Mailjet Email API for the Email resource, Mailjet SMS API for the SMS resource, or both if the node is used for each in different workflows.
Resources
| Resource | Value |
|---|---|
email | |
| SMS | sms |
Operations
| Operation | Value | Description |
|---|---|---|
| Send | send | Send a basic email |
| Send Template | sendTemplate | Send an email using a Mailjet template |
| Send | send | Send an SMS message |
The Email resource offers Send and Send Template; the SMS resource offers Send. Both send operations share the same value — the selected resource decides which one runs.
Parameters
Email: Send
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| From Email | string | Yes | — | Sender email address. Supports expressions. |
| To Email | string | Yes | — | Email address of the recipient. Multiple ones can be separated by comma. Supports expressions like {{ $json.email }}. |
Text (text) | string | No | — | Plain text message of the email. Supports expressions. |
| HTML | string | No | — | HTML text message of the email. Supports expressions. |
| JSON Parameters | boolean | No | false | Whether to provide template variables as a JSON object instead of key-value pairs. |
| Variables (JSON) | string | No | — | Template variables as a JSON object string. (shown when JSON Parameters is true) |
| Variables | fixedCollection | No | {} | Template variables as key-value pairs. (shown when JSON Parameters is false) |
| — Name | string | No | — | The variable name as referenced in the message body. |
| — Value | string | No | — | The value substituted for that variable. Supports expressions. |
| Additional Fields | collection | No | {} | Extra recipients, tracking and campaign settings. |
| — Bcc Email | string | No | — | BCC email address(es). Multiple ones can be separated by comma. |
| — Cc Email | string | No | — | CC email address(es). Multiple ones can be separated by comma. |
| — Cc Addresses | string | No | — | Deprecated alias for Cc Email; kept for back-compat. Use Cc Email going forward. |
| — Custom Campaign | string | No | — | Custom campaign name for tracking. |
| — Deduplicate Campaign | boolean | No | false | Whether to deduplicate campaign sends. |
| — From Name | string | No | — | Sender display name. |
| — Priority | number | No | 2 | Email priority level. |
| — Reply To | string | No | — | Reply-to email address. |
| — Template Language | boolean | No | false | Whether to enable Mailjet template language processing in the email body. |
| — Track Clicks | options | No | account_default | Enable or disable click tracking on this message. |
Options: account_default (use the values specified in the Mailjet account), disabled (disable tracking for this message), enabled (enable tracking for this message) | ||||
| — Track Opens | options | No | account_default | Enable or disable open tracking on this message. |
Options: account_default (use the values specified in the Mailjet account), disabled (disable tracking for this message), enabled (enable tracking for this message) | ||||
| Custom ID | string | No | — | Optional Mailjet CustomID for server-side dedup on retry. If blank, a stable value derived from this execution and node is used. |
Email: Send Template
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| From Email | string | Yes | — | Sender email address. Supports expressions. |
| To Email | string | Yes | — | Email address of the recipient. Multiple ones can be separated by comma. Supports expressions like {{ $json.email }}. |
| Template ID | string | Yes | — | The Mailjet template ID. Find it in your Mailjet dashboard under Transactional > Templates. Must resolve to a whole number. Supports expressions. |
| JSON Parameters | boolean | No | false | Whether to provide template variables as a JSON object instead of key-value pairs. |
| Variables (JSON) | string | No | — | Template variables as a JSON object string. (shown when JSON Parameters is true) |
| Variables | fixedCollection | No | {} | Template variables as key-value pairs. (shown when JSON Parameters is false) |
| — Name | string | No | — | The variable name as referenced in the template. |
| — Value | string | No | — | The value substituted for that variable. Supports expressions. |
| Additional Fields | collection | No | {} | Extra recipients, tracking and campaign settings. |
| — Bcc Email | string | No | — | BCC recipients, comma-separated. |
| — Cc Email | string | No | — | CC recipients, comma-separated. |
| — Cc Addresses | string | No | — | Deprecated alias for Cc Email; kept for back-compat. Use Cc Email going forward. |
| — Custom Campaign | string | No | — | Custom campaign name for tracking. |
| — Deduplicate Campaign | boolean | No | false | Whether to deduplicate campaign sends. |
| — From Name | string | No | — | Sender display name. |
| — Priority | number | No | 2 | Email priority level. |
| — Reply To | string | No | — | Reply-to email address. |
| — Subject | string | No | — | Override the template subject line. |
| — Template Language | boolean | No | false | Whether to enable Mailjet template language processing. |
| — Track Clicks | string | No | — | Enable or disable click tracking. Values: account_default, disabled, enabled. |
| — Track Opens | string | No | — | Enable or disable open tracking. Values: account_default, disabled, enabled. |
| Custom ID | string | No | — | Optional Mailjet CustomID for server-side dedup on retry. If blank, a stable value derived from this execution and node is used. |
SMS: Send
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| From | string | Yes | — | Customizable sender name. Should be between 3 and 11 characters in length, only alphanumeric characters are allowed. Supports expressions. |
| To | string | Yes | — | Recipient phone number in E.164 format (e.g., +33600000000). Should be between 3 and 15 characters starting with +. Supports expressions like {{ $json.phone }}. |
Text (smsText) | string | Yes | — | The SMS message text. Supports expressions. |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Subject | string | No | — | Subject line of the email. This field is always visible, including while the SMS resource is selected. Supports expressions. |
| Max Concurrency | number | No | 10 | Maximum number of items to process concurrently. |
Output Data
The Mailjet response is merged into the item JSON at the top level, so the fields the input item already carried pass through unchanged and binary data is forwarded.
| Operation | Output items |
|---|---|
email / send | One item per message Mailjet reports back. One input item sends one message, so in practice one item out per item in |
email / sendTemplate | One item per message Mailjet reports back — again one per input item in practice |
sms / send | One item per input item, carrying the SMS send response |
Email sends carry a Status field on each returned message. Mailjet answers with HTTP 200 even when an individual message was rejected, so a message that comes back with Status set to error is turned into an item error (Error port or skipped, per your error mode) rather than passing through as a success.
Attachments. Every binary property present on the input item is sent as an email attachment on the Email resource, using the property’s stored file name and MIME type. There is nothing to configure — attach files by putting them on the item upstream. Individual attachments are capped at 15 MB.
Usage Examples
- Send a transactional email with HTML content via Mailjet
- Send an email using a Mailjet template with custom variables
- Send an SMS notification through Mailjet SMS API
- Send a marketing email with click and open tracking enabled
Example Configuration
Basic email with both body parts:
{
"type": "mailjet",
"parameters": {
"resource": "email",
"operation": "send",
"fromEmail": "sender@example.com",
"toEmail": "recipient@example.com",
"subject": "Test Email",
"text": "This is a plain text email",
"html": "<h1>This is an HTML email</h1>",
"jsonParameters": false,
"maxConcurrency": 10
}
}
Email with template variables supplied as key-value pairs, all drawn from the incoming item:
{
"type": "mailjet",
"parameters": {
"resource": "email",
"operation": "send",
"fromEmail": "sender@example.com",
"toEmail": "{{ $json.email }}",
"subject": "Welcome {{ $json.firstName }}!",
"html": "<h1>Hello {{ $json.firstName }} {{ $json.lastName }}!</h1>",
"jsonParameters": false,
"variablesUi": {
"variablesValues": [
{
"name": "firstName",
"value": "{{ $json.firstName }}"
},
{
"name": "lastName",
"value": "{{ $json.lastName }}"
}
]
},
"additionalFields": {
"fromName": "Welcome Team",
"replyTo": "support@example.com"
}
}
}
The same thing with the variables supplied as one JSON string:
{
"type": "mailjet",
"parameters": {
"resource": "email",
"operation": "send",
"fromEmail": "sender@example.com",
"toEmail": "recipient@example.com",
"subject": "Welcome {{ $json.firstName }}!",
"html": "<h1>Hello {{ $json.firstName }} {{ $json.lastName }}!</h1>",
"jsonParameters": true,
"variablesJson": "{\"firstName\": \"John\", \"lastName\": \"Doe\", \"company\": \"Acme Corp\"}"
}
}
Send a pre-built Mailjet template:
{
"type": "mailjet",
"parameters": {
"resource": "email",
"operation": "sendTemplate",
"fromEmail": "sender@example.com",
"toEmail": "recipient@example.com",
"templateId": "123456",
"jsonParameters": false,
"variablesUi": {
"variablesValues": [
{
"name": "userName",
"value": "johndoe"
},
{
"name": "resetLink",
"value": "https://example.com/reset/abc123"
}
]
},
"additionalFields": {
"subject": "Password Reset Request",
"fromName": "Support Team",
"trackClicks": "enabled",
"trackOpens": "enabled"
}
}
}
Send an SMS:
{
"type": "mailjet",
"parameters": {
"resource": "sms",
"operation": "send",
"from": "YourApp",
"to": "+33600000000",
"smsText": "Your verification code is: 123456",
"maxConcurrency": 5
}
}
Transactional email with tracking and a campaign name:
{
"type": "mailjet",
"parameters": {
"resource": "email",
"operation": "send",
"fromEmail": "orders@store.com",
"toEmail": "{{ $json.customerEmail }}",
"subject": "Order Confirmation #{{ $json.orderNumber }}",
"html": "<h1>Thank you for your order!</h1><p>Order #{{ $json.orderNumber }} has been confirmed.</p>",
"jsonParameters": false,
"variablesUi": {
"variablesValues": [
{
"name": "orderNumber",
"value": "{{ $json.orderNumber }}"
}
]
},
"additionalFields": {
"fromName": "Your Store",
"replyTo": "support@store.com",
"trackClicks": "enabled",
"trackOpens": "enabled",
"customCampaign": "order-confirmations"
}
}
}
One email addressed to several recipients, with an archive copy:
{
"type": "mailjet",
"parameters": {
"resource": "email",
"operation": "send",
"fromEmail": "newsletter@company.com",
"toEmail": "user1@example.com,user2@example.com,user3@example.com",
"subject": "Monthly Newsletter",
"html": "<h1>This month's updates</h1>",
"additionalFields": {
"fromName": "Company Newsletter",
"bccEmail": "archive@company.com"
},
"maxConcurrency": 3
}
}
Template email with JSON variables:
{
"type": "mailjet",
"parameters": {
"resource": "email",
"operation": "sendTemplate",
"fromEmail": "welcome@app.com",
"toEmail": "newuser@example.com",
"templateId": "4210001",
"jsonParameters": true,
"variablesJson": "{\"firstName\": \"Sarah\", \"appName\": \"MyApp\", \"loginUrl\": \"https://app.com/login\", \"supportEmail\": \"help@app.com\"}",
"additionalFields": {
"fromName": "MyApp Team",
"customCampaign": "user-onboarding"
}
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Send transactional emails or SMS messages via the Mailjet API — use for email delivery with tracking, templates, and SMS notifications.
Key Notes
- Template ID must be numeric. Mailjet template IDs are integers; a name or slug is rejected before the request is sent.
- Braces belong to the workflow, not to Mailjet. Anything you type as
{{ … }}in a field is evaluated as a workflow expression before Mailjet ever sees it, and only$json,$index,$itemCount,$datetimeand$uuidare understood. To personalise a body from item data write{{ $json.firstName }}; to hand a value to a Mailjet template, put it in Variables instead of writing Mailjet placeholder syntax in the body. - Cc Addresses is deprecated. Use Cc Email; the two are interchangeable and Cc Email wins if you set both.
- Subject is a shared field. It stays on screen while the SMS resource is selected even though SMS has no subject line.
Frequently asked questions
Why is my template ID rejected?
Mailjet template IDs are integers. A name or slug is rejected before the request is even sent, so look up the numeric ID in Mailjet.
Why are my Mailjet personalisation variables not working?
Anything typed as `{{ … }}` is evaluated as a workflow expression before Mailjet sees it, and only `$json`, `$index`, `$itemCount`, `$datetime` and `$uuid` are understood. Personalise using workflow expressions rather than Mailjet's own template syntax in those fields.
Does email and SMS use the same credential?
No — they are separate: a Mailjet Email API credential and a Mailjet SMS API credential. Configure whichever the operation you are using requires.
How do I react to delivery events?
Use the Mailjet Trigger, which fires on blocked, bounce, open, sent, spam and unsubscribe events.
Build with the Mailjet node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Mailjet Email API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.