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

> Node: AWS SES (`aws_ses`) · Action · v1
> Category: Communication · Credentials: AWS SES (`awsSesApi`)
> Updated: 2026-08-16

# 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

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **AWS SES** credentials.
See the [Credentials Guide](https://busybot.net/credentials/aws-ses-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Custom Verification Email | `customVerificationEmail` |
| Email | `email` |
| Template | `template` |

### Operations

| Resource | Operation | Value | Description |
|----------|-----------|-------|-------------|
| Custom Verification Email | Create | `create` | Create a new custom verification email template |
| Custom Verification Email | Delete | `delete` | Delete an existing custom verification email template |
| Custom Verification Email | Get | `get` | Get the custom email verification template |
| Custom Verification Email | Get Many | `getAll` | Get many custom verification email templates |
| Custom Verification Email | Send | `send` | Send a custom verification email |
| Custom Verification Email | Update | `update` | Update an existing custom verification email template |
| Email | Send | `send` | Send an email |
| Email | Send Template | `sendTemplate` | Send an email based on a template |
| Template | Create | `create` | Create a template |
| Template | Delete | `delete` | Delete a template |
| Template | Get | `get` | Get a template |
| Template | Get Many | `getAll` | Get many templates |
| Template | Update | `update` | Update a template |

### Parameters

#### Custom Verification Email: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| From Email (`fromEmailAddress`) | `string` | Yes | — | The email address that the custom verification email is sent from. |
| Template Name | `string` | No | — | The name of the custom verification email template. |
| Template Content | `string` | No | — | The 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 Subject | `string` | Yes | — | The subject line of the custom verification email. |
| Success Redirection URL | `string` | Yes | — | The URL that the recipient of the verification email is sent to if his or her address is successfully verified. |
| Failure Redirection URL | `string` | Yes | — | The URL that the recipient of the verification email is sent to if his or her address is not successfully verified. |

#### Custom Verification Email: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Template Name | `string` | No | — | The name of the custom verification email template. |

#### Custom Verification Email: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Template Name | `string` | No | — | The name of the custom verification email template. |

#### Custom Verification Email: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `20` | Max number of results to return. _(shown when Return All is `false`)_ |

#### Custom Verification Email: Send

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Email | `string` | Yes | — | The email address to verify. Supports expressions. |
| Template Name | `string` | Yes | — | The name of the custom verification email template to use when sending the verification email. |
| Additional Fields | `collection` | No | `{}` | Optional send settings. |
| — Configuration Set Name | `string` | No | — | Name of a configuration set to use when sending the verification email. |

#### Custom Verification Email: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Template Name | `string` | No | — | The name of the custom verification email template. |
| Update Fields | `collection` | No | `{}` | The template properties to change. Fields you leave out keep their current value. |
| — Failure Redirection URL | `string` | No | — | The URL that the recipient is sent to if verification fails. |
| — From Email | `string` | No | — | The email address the custom verification email is sent from. |
| — Success Redirection URL | `string` | No | — | The URL that the recipient is sent to if verification succeeds. |
| — Template Content | `string` | No | — | The content of the custom verification email (HTML allowed, max 10 MB). |
| — Template Subject | `string` | No | — | The subject line of the custom verification email. |

#### Email: Send

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Is Body HTML | `boolean` | No | `false` | Whether body is HTML or simple text. |
| Subject | `string` | Yes | — | The subject line of the email. Supports expressions. |
| Body | `string` | Yes | — | The message body of the email. Supports expressions. |
| From Email (`fromEmail`) | `string` | Yes | — | Email address of the sender. Must be a verified identity in SES. |
| To Addresses | `string` | Yes | — | Comma-separated email addresses of the recipients. Supports expressions. |
| Additional Fields | `collection` | No | `{}` | Optional recipients and send settings. |
| — Bcc Addresses | `string` | No | — | Comma-separated BCC recipient email addresses. |
| — Cc Addresses | `string` | No | — | Comma-separated CC recipient email addresses. |
| — Configuration Set Name | `string` | No | — | Name of the configuration set to use when sending the email. |
| — Reply To Addresses | `string` | No | — | Comma-separated reply-to email addresses. |
| — Return Path | `string` | No | — | Email address that bounces and complaints will be forwarded to when feedback forwarding is enabled. |
| — Return Path ARN | `string` | No | — | This parameter is used only for sending authorization. |
| — Source ARN | `string` | No | — | This parameter is used only for sending authorization. |

#### Email: Send Template

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Template Name | `string` | Yes | — | The name of the SES template to use. Find templates in the AWS SES console under Email Templates. |
| From Email (`fromEmail`) | `string` | Yes | — | Email address of the sender. Must be a verified identity in SES. |
| To Addresses | `string` | Yes | — | Comma-separated email addresses of the recipients. Supports expressions. |
| Template Data | `json` | No | `{}` | JSON object of template variable key-value pairs for substitution in the template. |
| Additional Fields | `collection` | No | `{}` | Optional recipients and send settings. |
| — Bcc Addresses | `string` | No | — | Comma-separated BCC recipient email addresses. |
| — Cc Addresses | `string` | No | — | Comma-separated CC recipient email addresses. |
| — Configuration Set Name | `string` | No | — | Name of the configuration set to use when sending the email. |
| — Reply To Addresses | `string` | No | — | Comma-separated reply-to email addresses. |
| — Return Path | `string` | No | — | Email address that bounces and complaints will be forwarded to when feedback forwarding is enabled. |
| — Return Path ARN | `string` | No | — | This parameter is used only for sending authorization. |
| — Source ARN | `string` | No | — | This parameter is used only for sending authorization. |

#### Template: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Template Name | `string` | Yes | — | The name of the template. |
| Subject Part | `string` | No | — | The subject line of the email. |
| Html Part | `string` | No | — | The HTML body of the email. |
| Additional Fields | `collection` | No | `{}` | Optional template parts. |
| — Text Part | `string` | No | — | The email body that will be visible to recipients whose email clients do not display HTML. |

#### Template: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Template Name | `string` | Yes | — | The name of the template. |

#### Template: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Template Name | `string` | Yes | — | The name of the template. |

#### Template: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `20` | Max number of results to return. _(shown when Return All is `false`)_ |

#### Template: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Template Name | `string` | Yes | — | The name of the template. |
| Update Fields | `collection` | No | `{}` | The template parts to change. Parts you leave out keep their current value. |
| — Text Part | `string` | No | — | The email body visible to recipients whose email clients do not display HTML. |
| — Subject Part | `string` | No | — | The subject line of the email. |
| — Html Part | `string` | No | — | The HTML body of the email. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum 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 / Operation | Fields added to the item |
|----------------------|--------------------------|
| Custom Verification Email / `create` | `success: true` |
| Custom Verification Email / `delete` | `success: true` |
| Custom Verification Email / `get` | `templateName`, `fromEmailAddress`, `templateSubject`, `templateContent`, `successRedirectionURL`, `failureRedirectionURL` |
| Custom Verification Email / `getAll` | `customVerificationEmailTemplates` — an array of template summaries |
| Custom Verification Email / `send` | `messageId`, `success: true` |
| Custom Verification Email / `update` | `success: true` |
| Email / `send` | `messageId`, `success: true` |
| Email / `sendTemplate` | `messageId`, `success: true` |
| Template / `create` | `success: true` |
| Template / `delete` | `success: true` |
| Template / `get` | `template` — the stored template with its subject, HTML and text parts |
| Template / `getAll` | `templates` — an array of template metadata entries |
| Template / `update` | `success: 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:

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

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

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

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

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

Create a custom verification email template:

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

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

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

| 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 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.