Reference · Tools

Mailgun

Sends emails via the Mailgun transactional email API with support for plain text, HTML, binary attachments, tags, and tracking options.

Action (binary) Communication v1 Binary data

The Mailgun node sends transactional email — plain text or HTML, with binary attachments, tags and tracking options. A typical build is emailing a generated PDF invoice to a customer with a tag that lets you measure delivery for that campaign separately.

Node type
Action (binary)
Parameters
8
Outputs
Output, Error
Credentials
Mailgun API

Mailgun

Send emails via Mailgun with attachments

Overview

The Mailgun tool sends transactional emails using the Mailgun API. It constructs multipart/form-data POST requests to the Mailgun /messages endpoint. Supports plain text and HTML bodies, CC/BCC recipients, binary file attachments from upstream items, custom tags for analytics, and tracking options (opens, clicks). Authentication uses HTTP Basic Auth with username “api” and the Mailgun API key. Supports both US and EU API regions configured in the credential. Each input item sends one email.

Category: Communication
Tool Name: mailgun
Version: 1

Appearance: Icon: si-mailgun | Color: #F06B66

Node Type

Action (Binary) — handles file/binary data operations

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Mailgun API credentials. See the Credentials Guide for setup instructions.

Parameters

ParameterTypeRequiredDefaultDescription
From EmailstringYesEmail address of the sender, optionally with display name (e.g., “Admin <admin@example.com>”). Supports expressions.
To EmailstringYesEmail address of the recipient. Multiple addresses can be separated by commas. Supports expressions like {{ $json.email }}.
SubjectstringNoSubject line of the email. Supports expressions.
TextstringNoPlain text message body of the email. Supports expressions.
HTMLstringNoHTML message body of the email. Supports expressions.
AttachmentsstringNoName of the binary properties that contain data to add as email attachments. Multiple names can be comma-separated (e.g., “data,attachment_0”). Names are case-sensitive — see the upstream node’s Binary Data panel for the exact names to use.
OptionscollectionNo{}Additional recipients, tracking and transport settings.
— CC EmailstringNoCC recipient email address(es). Multiple can be separated by commas. Supports expressions.
— BCC EmailstringNoBCC recipient email address(es). Multiple can be separated by commas. Supports expressions.
— TagsstringNoComma-separated tags for Mailgun analytics. Maximum 3 tags per message. Supports expressions.
— Track OpensbooleanNofalseWhether to enable open tracking for this email.
— Track ClicksoptionsNofalseWhether to enable click tracking. “HTML Only” tracks clicks in HTML body only.
Options: true (Yes), false (No), htmlonly (HTML Only)
— Require TLSbooleanNofalseWhether to require TLS connection for message delivery. If TLS cannot be established, Mailgun will not deliver the message.
— Skip VerificationbooleanNofalseWhether to skip TLS certificate and hostname verification. Use with “Require TLS” for less strict TLS enforcement.
Max ConcurrencynumberNo5Maximum number of items to process concurrently. Keep low to respect Mailgun rate limits.

Output Data

One email per input item and one output item per input item — this node never fans out, even when To Email lists several addresses. Two fields from the Mailgun send result are added to the item JSON; everything the item already carried passes through unchanged, and any binary data on the input item is forwarded (including the properties that were attached).

{
  "id": "<20240315103000.1.A1B2C3D4E5F6@mg.example.com>",
  "message": "Queued. Thank you."
}
  • id — the Mailgun message ID for the queued message. Use it to correlate later delivery-event webhooks.
  • message — Mailgun’s acceptance text for the request.

Both fields are set to an empty string if Mailgun’s response omits them. Reference them downstream by expression, e.g. {{ $json.id }}.

Usage Examples

  • Send an HTML email with a PDF attachment via Mailgun
  • Send a plain text notification email through Mailgun
  • Send email with CC and BCC recipients using Mailgun
  • Send bulk transactional emails with tracking enabled
  • Send email with multiple binary file attachments

Example Configuration

Basic email with both a plain-text and an HTML body:

{
  "type": "mailgun",
  "parameters": {
    "fromEmail": "noreply@company.com",
    "toEmail": "customer@example.com",
    "subject": "Welcome to Our Service",
    "text": "Thank you for signing up! We're excited to have you on board.",
    "html": "<h1>Welcome!</h1><p>Thank you for signing up! We're excited to have you on board.</p>"
  }
}

Email with advanced options — CC, BCC, tags and tracking:

{
  "type": "mailgun",
  "parameters": {
    "fromEmail": "Marketing Team <marketing@company.com>",
    "toEmail": "subscriber@example.com",
    "subject": "Monthly Newsletter - March 2024",
    "html": "<h2>March Newsletter</h2><p>Check out our latest updates and <a href='https://company.com/news'>click here</a> for more info.</p>",
    "options": {
      "ccEmail": "manager@company.com",
      "bccEmail": "analytics@company.com",
      "tags": "newsletter,march2024,marketing",
      "trackingOpens": true,
      "trackingClicks": "true"
    }
  }
}

Email with security options — TLS required, clicks tracked in HTML only:

{
  "type": "mailgun",
  "parameters": {
    "fromEmail": "Security <security@company.com>",
    "toEmail": "admin@client.com,backup@client.com",
    "subject": "Security Alert - Action Required",
    "text": "Important security notification requiring immediate attention.",
    "html": "<div style='color:red;'><h3>Security Alert</h3><p>Important security notification requiring immediate attention.</p></div>",
    "options": {
      "tags": "security,alert,urgent",
      "trackingOpens": true,
      "trackingClicks": "htmlonly",
      "requireTls": true,
      "skipVerification": false
    }
  }
}

Email with two binary attachments taken from upstream items:

{
  "type": "mailgun",
  "parameters": {
    "fromEmail": "Reports <reports@company.com>",
    "toEmail": "client@example.com",
    "subject": "Monthly Report - March 2024",
    "text": "Please find attached your monthly report.",
    "html": "<p>Please find attached your monthly report.</p><p>Thank you for your business!</p>",
    "attachments": "report_data,invoice_pdf",
    "maxConcurrency": 3,
    "options": {
      "tags": "report,march2024",
      "trackingOpens": true
    }
  }
}

Newsletter campaign — one item per subscriber, with tracking:

{
  "type": "mailgun",
  "parameters": {
    "fromEmail": "Newsletter <news@company.com>",
    "toEmail": "{{ $json.email }}",
    "subject": "{{ $json.subject }}",
    "html": "{{ $json.htmlContent }}",
    "options": {
      "tags": "newsletter,{{ $json.campaign_id }}",
      "trackingOpens": true,
      "trackingClicks": "true",
      "bccEmail": "analytics@company.com"
    }
  }
}

Transactional email for order confirmations, password resets and the like:

{
  "type": "mailgun",
  "parameters": {
    "fromEmail": "System <system@company.com>",
    "toEmail": "{{ $json.userEmail }}",
    "subject": "{{ $json.emailType }} - {{ $json.orderId }}",
    "html": "{{ $json.templateContent }}",
    "options": {
      "tags": "transactional,{{ $json.emailType }}",
      "requireTls": true,
      "trackingOpens": false
    }
  }
}

Secure communication for sensitive content:

{
  "type": "mailgun",
  "parameters": {
    "fromEmail": "Compliance <compliance@company.com>",
    "toEmail": "{{ $json.recipientEmail }}",
    "subject": "Confidential: {{ $json.subject }}",
    "text": "{{ $json.message }}",
    "options": {
      "tags": "confidential,compliance",
      "requireTls": true,
      "skipVerification": false,
      "trackingOpens": false,
      "trackingClicks": "false"
    }
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Send transactional emails via Mailgun API with optional binary file attachments, tracking, and tags.

Important Notes

  • Rate Limits: Keep maxConcurrency low (recommended: 5 or less) to respect Mailgun API rate limits
  • Options Structure: All advanced options must be nested under the options object, not at the top level
  • Multiple Recipients: Separate multiple email addresses with commas in toEmail, ccEmail, or bccEmail
  • Tags Limit: Maximum of 3 tags per message for Mailgun analytics
  • TLS Security: Use requireTls: true for sensitive emails, optionally with skipVerification: false for strict certificate validation
  • Tracking Options: trackingClicks accepts “true”, “false”, or “htmlonly” as string values

Frequently asked questions

What concurrency should I use?

Keep Max Concurrency low — five or fewer is recommended — to stay inside Mailgun's API rate limits. A large batch at high concurrency is the usual cause of throttling.

How many tags can a message carry?

Up to three per message for Mailgun analytics. Additional tags beyond that are not accepted.

How do I address several recipients?

Separate the addresses with commas in the To, CC or BCC fields — one field can carry several recipients.

Where do the advanced settings go?

All nested under the Options object rather than at the top level of the parameters.

Build with the Mailgun node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Mailgun API credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.