Reference · Tools

AWS SES

Send emails, manage email templates, and handle custom verification emails via Amazon Simple Email Service.

Action Communication v1

The AWS SES node connects your workflows to Amazon Simple Email Service so you can send plain text or HTML emails, fire off templated transactional emails, and manage the full lifecycle of SES email templates and custom verification templates — all without leaving BusyBot. A common use case is triggering a templated order confirmation email the moment a purchase record lands in your workflow.

Node type
Action
Parameters
35
Outputs
Output, Error
Credentials
AWS SES

AWS SES

Send emails and manage templates via AWS SES.

Overview

AWS SES (Simple Email Service) tool for sending emails (plain text or HTML), sending templated emails, and full CRUD management of email templates and custom verification email templates.

Category: Communication
Tool Name: aws_ses
Version: 1

Appearance: Icon: lucide-Server | Color: #FF9900

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires AWS SES credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Custom Verification EmailcustomVerificationEmail
Emailemail
Templatetemplate

Operations

ResourceOperationValueDescription
Custom Verification EmailCreatecreateCreate a new custom verification email template
Custom Verification EmailDeletedeleteDelete an existing custom verification email template
Custom Verification EmailGetgetGet the custom email verification template
Custom Verification EmailGet ManygetAllGet many custom verification email templates
Custom Verification EmailSendsendSend a custom verification email
Custom Verification EmailUpdateupdateUpdate an existing custom verification email template
EmailSendsendSend an email
EmailSend TemplatesendTemplateSend an email based on a template
TemplateCreatecreateCreate a template
TemplateDeletedeleteDelete a template
TemplateGetgetGet a template
TemplateGet ManygetAllGet many templates
TemplateUpdateupdateUpdate a template

Parameters

Custom Verification Email: Create

ParameterTypeRequiredDefaultDescription
From Email (fromEmailAddress)stringYesThe email address that the custom verification email is sent from.
Template NamestringNoThe name of the custom verification email template.
Template ContentstringNoThe content of the custom verification email. The total size of the email must be less than 10 MB. The message body may contain HTML.
Template SubjectstringYesThe subject line of the custom verification email.
Success Redirection URLstringYesThe URL that the recipient of the verification email is sent to if his or her address is successfully verified.
Failure Redirection URLstringYesThe URL that the recipient of the verification email is sent to if his or her address is not successfully verified.

Custom Verification Email: Delete

ParameterTypeRequiredDefaultDescription
Template NamestringNoThe name of the custom verification email template.

Custom Verification Email: Get

ParameterTypeRequiredDefaultDescription
Template NamestringNoThe name of the custom verification email template.

Custom Verification Email: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo20Max number of results to return. (shown when Return All is false)

Custom Verification Email: Send

ParameterTypeRequiredDefaultDescription
EmailstringYesThe email address to verify. Supports expressions.
Template NamestringYesThe name of the custom verification email template to use when sending the verification email.
Additional FieldscollectionNo{}Optional send settings.
— Configuration Set NamestringNoName of a configuration set to use when sending the verification email.

Custom Verification Email: Update

ParameterTypeRequiredDefaultDescription
Template NamestringNoThe name of the custom verification email template.
Update FieldscollectionNo{}The template properties to change. Fields you leave out keep their current value.
— Failure Redirection URLstringNoThe URL that the recipient is sent to if verification fails.
— From EmailstringNoThe email address the custom verification email is sent from.
— Success Redirection URLstringNoThe URL that the recipient is sent to if verification succeeds.
— Template ContentstringNoThe content of the custom verification email (HTML allowed, max 10 MB).
— Template SubjectstringNoThe subject line of the custom verification email.

Email: Send

ParameterTypeRequiredDefaultDescription
Is Body HTMLbooleanNofalseWhether body is HTML or simple text.
SubjectstringYesThe subject line of the email. Supports expressions.
BodystringYesThe message body of the email. Supports expressions.
From Email (fromEmail)stringYesEmail address of the sender. Must be a verified identity in SES.
To AddressesstringYesComma-separated email addresses of the recipients. Supports expressions.
Additional FieldscollectionNo{}Optional recipients and send settings.
— Bcc AddressesstringNoComma-separated BCC recipient email addresses.
— Cc AddressesstringNoComma-separated CC recipient email addresses.
— Configuration Set NamestringNoName of the configuration set to use when sending the email.
— Reply To AddressesstringNoComma-separated reply-to email addresses.
— Return PathstringNoEmail address that bounces and complaints will be forwarded to when feedback forwarding is enabled.
— Return Path ARNstringNoThis parameter is used only for sending authorization.
— Source ARNstringNoThis parameter is used only for sending authorization.

Email: Send Template

ParameterTypeRequiredDefaultDescription
Template NamestringYesThe name of the SES template to use. Find templates in the AWS SES console under Email Templates.
From Email (fromEmail)stringYesEmail address of the sender. Must be a verified identity in SES.
To AddressesstringYesComma-separated email addresses of the recipients. Supports expressions.
Template DatajsonNo{}JSON object of template variable key-value pairs for substitution in the template.
Additional FieldscollectionNo{}Optional recipients and send settings.
— Bcc AddressesstringNoComma-separated BCC recipient email addresses.
— Cc AddressesstringNoComma-separated CC recipient email addresses.
— Configuration Set NamestringNoName of the configuration set to use when sending the email.
— Reply To AddressesstringNoComma-separated reply-to email addresses.
— Return PathstringNoEmail address that bounces and complaints will be forwarded to when feedback forwarding is enabled.
— Return Path ARNstringNoThis parameter is used only for sending authorization.
— Source ARNstringNoThis parameter is used only for sending authorization.

Template: Create

ParameterTypeRequiredDefaultDescription
Template NamestringYesThe name of the template.
Subject PartstringNoThe subject line of the email.
Html PartstringNoThe HTML body of the email.
Additional FieldscollectionNo{}Optional template parts.
— Text PartstringNoThe email body that will be visible to recipients whose email clients do not display HTML.

Template: Delete

ParameterTypeRequiredDefaultDescription
Template NamestringYesThe name of the template.

Template: Get

ParameterTypeRequiredDefaultDescription
Template NamestringYesThe name of the template.

Template: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo20Max number of results to return. (shown when Return All is false)

Template: Update

ParameterTypeRequiredDefaultDescription
Template NamestringYesThe name of the template.
Update FieldscollectionNo{}The template parts to change. Parts you leave out keep their current value.
— Text PartstringNoThe email body visible to recipients whose email clients do not display HTML.
— Subject PartstringNoThe subject line of the email.
— Html PartstringNoThe HTML body of the email.

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

One output item per input item, including for the list operations — the results arrive as an array on a single item rather than fanned out. The SES response is merged into the item JSON; the incoming fields pass through and binary data is forwarded. Every result carries requestId, the AWS request identifier for that call.

Resource / OperationFields added to the item
Custom Verification Email / createsuccess: true
Custom Verification Email / deletesuccess: true
Custom Verification Email / gettemplateName, fromEmailAddress, templateSubject, templateContent, successRedirectionURL, failureRedirectionURL
Custom Verification Email / getAllcustomVerificationEmailTemplates — an array of template summaries
Custom Verification Email / sendmessageId, success: true
Custom Verification Email / updatesuccess: true
Email / sendmessageId, success: true
Email / sendTemplatemessageId, success: true
Template / createsuccess: true
Template / deletesuccess: true
Template / gettemplate — the stored template with its subject, HTML and text parts
Template / getAlltemplates — an array of template metadata entries
Template / updatesuccess: true

Use a Split Out node on templates or customVerificationEmailTemplates to fan a listing out into one item per template. Reference any field downstream by expression, e.g. {{ $json.messageId }}.

Usage Examples

  • Send an email via AWS SES
  • Send a templated email using SES
  • Create an email template in SES
  • List all SES email templates
  • Delete an SES email template
  • Send a custom verification email

Example Configuration

Send a plain-text email:

{
  "type": "aws_ses",
  "parameters": {
    "resource": "email",
    "operation": "send",
    "isBodyHtml": false,
    "subject": "Welcome to our service",
    "body": "Thank you for signing up!",
    "fromEmail": "noreply@company.com",
    "toAddresses": "{{ $json.email }}"
  }
}

Send an HTML email to several recipients, with CC and a reply-to:

{
  "type": "aws_ses",
  "parameters": {
    "resource": "email",
    "operation": "send",
    "isBodyHtml": true,
    "subject": "Welcome to our service",
    "body": "<h1>Welcome!</h1><p>Thank you for signing up!</p>",
    "fromEmail": "noreply@company.com",
    "toAddresses": "user@example.com,user2@example.com",
    "additionalFields": {
      "ccAddresses": "manager@company.com",
      "replyToAddresses": "support@company.com",
      "configurationSetName": "marketing-emails"
    }
  }
}

Send a stored SES template with substitution data:

{
  "type": "aws_ses",
  "parameters": {
    "resource": "email",
    "operation": "sendTemplate",
    "templateName": "welcome-template",
    "fromEmail": "noreply@company.com",
    "toAddresses": "{{ $json.email }}",
    "templateData": "{\"userName\": \"John Doe\", \"companyName\": \"Acme Corp\"}"
  }
}

Create an email template. The subject and HTML come from the input item so that any SES substitution tags they contain reach SES untouched:

{
  "type": "aws_ses",
  "parameters": {
    "resource": "template",
    "operation": "create",
    "templateName": "welcome-template",
    "subjectPart": "{{ $json.subjectPart }}",
    "htmlPart": "{{ $json.htmlPart }}",
    "additionalFields": {
      "textPart": "{{ $json.textPart }}"
    }
  }
}

List the first 50 templates:

{
  "type": "aws_ses",
  "parameters": {
    "resource": "template",
    "operation": "getAll",
    "returnAll": false,
    "limit": 50
  }
}

Create a custom verification email template:

{
  "type": "aws_ses",
  "parameters": {
    "resource": "customVerificationEmail",
    "operation": "create",
    "fromEmailAddress": "verify@company.com",
    "templateName": "custom-verification",
    "templateContent": "<h1>Verify Your Email</h1><p>Please click the link to verify your email address.</p>",
    "templateSubject": "Please verify your email address",
    "successRedirectionURL": "https://company.com/verification-success",
    "failureRedirectionURL": "https://company.com/verification-failed"
  }
}

Send a verification email to a new address:

{
  "type": "aws_ses",
  "parameters": {
    "resource": "customVerificationEmail",
    "operation": "send",
    "email": "{{ $json.email }}",
    "templateName": "custom-verification",
    "additionalFields": {
      "configurationSetName": "verification-emails"
    }
  }
}

Update parts of a custom verification email template:

{
  "type": "aws_ses",
  "parameters": {
    "resource": "customVerificationEmail",
    "operation": "update",
    "templateName": "custom-verification",
    "updateFields": {
      "fromEmailAddress": "noreply@example.com",
      "templateSubject": "Updated subject",
      "successRedirectionURL": "https://example.com/success",
      "failureRedirectionURL": "https://example.com/failure"
    }
  }
}

Error Handling

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

Tips

Send emails and manage email templates using Amazon Simple Email Service (SES).

Notes

  • The From address must be a verified SES identity — an address or a whole domain verified in the SES console for the region your credential points at. While your account is in the SES sandbox, every recipient must be verified as well.
  • Recipient fields are comma-separated strings. To Addresses, Cc Addresses, Bcc Addresses and Reply To Addresses each take one string; the node splits it for you. Send fails if To Addresses resolves to nothing.
  • Template Data is a JSON string whose keys match the substitution tags in the SES template, for example "{\"userName\": \"John Doe\"}".
  • List operations return an array on one item. Use a Split Out node on templates or customVerificationEmailTemplates to process them one at a time.

Writing SES substitution tags

Node parameters are evaluated as workflow expressions before the request is sent, and SES templates use the same {{ … }} braces for their own substitution tags. Typing {{userName}} straight into Subject Part or Html Part makes the workflow try to evaluate it and fail the item.

To store a template that contains SES tags, put the template text on the input item — from a Set node, a file, or an upstream API — and reference it with a normal expression such as {{ $json.htmlPart }}. The expression’s value is inserted literally, so the braces reach SES intact. Creating the template in the AWS SES console works too; the node can still send it with Email: Send Template.

Frequently asked questions

My send keeps failing with an address verification error. What's going on?

Every From address must be a verified SES identity — either the exact address or its parent domain — in the AWS region your credential points at. If your SES account is still in the sandbox, every recipient address must be verified too, not just the sender. Promote your account out of the sandbox in the SES console when you're ready to email unverified recipients.

How do I send to multiple recipients at once?

The To Addresses, Cc Addresses, Bcc Addresses, and Reply To Addresses fields each accept a single comma-separated string — for example, 'alice@example.com,bob@example.com'. The node splits that string into individual addresses before sending. If To Addresses resolves to an empty string, the send will fail, so make sure the field is never blank at runtime.

I'm trying to store an SES template with {{userName}} tags but my workflow errors out. How do I get around that?

BusyBot evaluates node fields as workflow expressions before the request is sent, and SES's own substitution syntax uses the same double-brace format, so typing {{userName}} directly into a Subject Part or Html Part field causes the workflow engine to try — and fail — to resolve it as an expression. Instead, store the template text in an upstream Set node (or pull it from a file or API) and reference it with an expression like {{ $json.htmlPart }}. The expression resolves to the literal string, so the braces arrive at SES untouched. Alternatively, create the template directly in the AWS SES console; the node's 'Email: Send Template' operation can still use it.

What does Template Data need to look like when sending a templated email?

Template Data must be a valid JSON string whose keys match the substitution tags defined in your SES template. For example, if your template references {{userName}} and {{orderNumber}}, you'd pass '{"userName": "Jane", "orderNumber": "1042"}'. A malformed JSON string or mismatched key names will cause substitution to silently fail or the request to error.

I listed my templates but only got one item back. Is something broken?

No — list operations on this node intentionally return their results as an array on a single item, with all templates inside a 'templates' or 'customVerificationEmailTemplates' field. To process each template individually in subsequent nodes, add a Split Out node targeting that field immediately after the AWS SES node.

Build with the AWS SES node

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

Open BusyBot

Last updated . Spotted something wrong? Tell us.