<!-- BusyBot node reference — https://busybot.net/tools/mailjet/ -->

> Node: Mailjet (`mailjet`) · Action (binary) · v1
> Category: Communication · Credentials: Mailjet Email API (`mailjetEmailApi`), Mailjet SMS API (`mailjetSmsApi`)
> Updated: 2026-08-16

# 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](https://busybot.net/credentials/) 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 | `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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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`, `$datetime` and `$uuid` are 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.