Skip to main content
Courier integrates with a wide range of email providers. To send an email, the recipient profile must include an email field:
{
  "message": {
    "to": {
      "email": "alice@acme.com"
    },
    "template": "NOTIFICATION_TEMPLATE_ID"
  }
}
When a notification template includes an email channel, Courier selects the configured email provider based on your channel priority and routing rules. If the primary provider fails, Courier automatically fails over to backup providers when configured.

Available Email Providers

ProviderDescription
Amazon SESAWS-hosted sending with IAM role or access key auth
SendGridTwilio SendGrid with template import and delivery tracking
PostmarkTransactional email with MessageStream support
MailgunEmail delivery with webhooks and EU region support
ResendModern email API with tagging and attachments
SMTPGeneric SMTP relay via NodeMailer
MandrillMailchimp Transactional with template import
SparkPostHigh-volume email delivery
MailjetTransactional and marketing email
MailerSendDomain-verified transactional email
AmplyEmail delivery with attachment support
GmailOAuth-based sending for testing and small-scale use
OneSignal EmailEmail via OneSignal’s notification platform

Email Channel Overrides

Overrides let you modify parts of an email at send time without changing your notification template. They are passed in the message payload of a Send request and applied just before Courier hands the message off to the provider. There are two levels of override:
  • Channel overrides (message.channels.email.override) apply to every email provider configured on the template. Use these when you want to change the subject, from address, HTML body, or add attachments regardless of which provider sends the email.
  • Provider overrides (message.providers.<key>.override) target a single provider and can pass through fields specific to that provider’s API. Each provider page documents its supported override schema.
Channel overrides and provider overrides can be used together. If both set the same field, the provider override takes precedence.
Overrides are applied after the render step in the notification lifecycle. This means the Rendered tab in the Courier logs will not reflect overrides; it shows the pre-override output. To verify the final payload, check the provider request in the Raw tab.

Data structure for the email channel override:

BCC fields need to be introduced as strings. For multiple bcc recipients, addresses need to be in comma-separated strings. Courier will transform them to arrays required by some providers.
{
  "message": {
    // ...rest of request
    "channels": {
      "email": {
        "override": {
          "attachments": [],
          "bcc": "", // "alice@acme.com,bob@acme.com" or "Alice <alice@acme.com>,Bob <bob@acme.com>"
          "brand": {},
          "cc": "",
          "from": "",
          "html": "",
          "reply_to": "",
          "subject": "",
          "text": "",
          "tracking": {
            "open": false
          }
        }
      }
    }
  }
}

Brand Override

The channels.email.override.brand property uses same schema as the API request payload for the POST /brands endpoint. Brand elements that can be overridden:
  • logo
  • top bar color
  • brand colors
Example:
{
  "message": {
    // ...rest of request
    "channels": {
      "email": {
        "override": {
          "brand": {
            "settings": {
              "email": {
                "header": {
                  "logo": {
                    "image": "https://www.courier.com/logo.png",
                    "href": "https://www.courier.com"
                  },
                  "barColor": "#674ea7"
                }
              }
            }
          }
        }
      }
    }
  }
}

Allowlist for AWS IP Addresses

Some email providers, such as Mailgun, offer additional security to allowlist IP addresses to access their API. Courier is hosted on AWS and does not provide an IP range in the form of an allowlist. As a workaround, users can subscribe to the AmazonIpSpaceChanged topic, and receive notifications about any changes to the AWS IP address ranges. For details, refer to the AWS documentation.