# Amazon SES

> Send email through Amazon Simple Email Service: plain, templated or bulk sends, verified sender identities, email templates, the suppression list and configuration sets.

App · Email · 20 actions. Web page: https://docs.lodol.com/docs/integrations/amazon-ses

## Actions

### Check suppressed address

Check whether an address is on the suppression list, and why. An address that is not on it returns suppressed = false. The match is case-sensitive.

**Inputs**

- Email address (`email_address`, text, required): The address to look up.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "email_address": "ana@example.com",
    "feedback_id": null,
    "last_updated_at": null,
    "message_id": null,
    "reason": null,
    "suppressed": false
  }
}
```

### Create configuration set

Create a configuration set, which groups sends for delivery options and reputation tracking.

**Inputs**

- Name (`configuration_set_name`, text, required): Up to 64 letters, numbers, hyphens and underscores, unique in this region.
- Sending enabled (`sending_enabled`, true/false): Allow email to be sent through it (on by default).
- TLS policy (`tls_policy`, text): Whether delivery must use TLS. One of: `REQUIRE` (Require TLS (don't deliver if the receiving server can't use it)), `OPTIONAL` (Optional (use TLS when available - the SES default)).
- Reputation metrics (`reputation_metrics_enabled`, true/false): Publish bounce and complaint metrics to CloudWatch.
- Tags (`tags`, object): Optional AWS tags as name/value pairs.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "configuration_set_name": "transactional",
    "created": true
  }
}
```

### Create email identity

Start verifying an email address or a domain. An address gets a verification email and can send once its link is clicked; a domain returns the DKIM CNAME records to publish in DNS.

**Inputs**

- Email address or domain (`email_identity`, text, required): For example 'ana@example.com' or 'example.com'.
- Default configuration set (`configuration_set_name`, text): Configuration set used by default for mail from it.
- Tags (`tags`, object): Optional AWS tags as name/value pairs.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "created": true,
    "dkim": {
      "current_signing_key_length": "RSA_2048_BIT",
      "last_key_generation_at": "2026-09-01T10:00:00Z",
      "next_signing_key_length": "RSA_2048_BIT",
      "signing_attributes_origin": "AWS_SES",
      "signing_enabled": true,
      "signing_hosted_zone": null,
      "status": "PENDING",
      "tokens": [
        "abc123token"
      ]
    },
    "dkim_records": [
      {
        "name": "abc123token._domainkey.example.com",
        "type": "CNAME",
        "value": "abc123token.dkim.amazonses.com"
      }
    ],
    "identity_name": "example.com",
    "identity_type": "DOMAIN",
    "verified_for_sending": false
  }
}
```

### Create template

Store an email template. Subject and bodies can use {{variable}} placeholders filled in at send time.

**Inputs**

- Template name (`template_name`, text, required): A name for the template, unique in this region.
- Subject (`subject`, text, required): Subject line, e.g. 'Welcome, {{name}}!'.
- Text body (`text_part`, text): Plain-text body. Provide this, an HTML body, or both.
- HTML body (`html_part`, text): HTML body. Provide this, a text body, or both.
- Tags (`tags`, object): Optional AWS tags as name/value pairs.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "created": true,
    "template_name": "welcome"
  }
}
```

### Delete configuration set

Delete a configuration set and its event destinations.

**Inputs**

- Configuration set (`configuration_set_name`, text, required): The configuration set to delete.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "configuration_set_name": "transactional",
    "deleted": true
  }
}
```

### Delete email identity

Remove an email address or domain from SES. Nothing can be sent from it afterwards until it is verified again.

**Inputs**

- Identity (`email_identity`, text, required): The email address or domain to remove.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "deleted": true,
    "identity_name": "example.com"
  }
}
```

### Delete template

Delete a stored template.

**Inputs**

- Template name (`template_name`, text, required): The template to delete.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "deleted": true,
    "template_name": "welcome"
  }
}
```

### Get account

Read the account's sending quota, send rate, whether it is still in the sandbox and whether sending is enabled, for the connection's region.

**Inputs**: None.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "account": {
      "additional_contact_email_addresses": [],
      "contact_language": null,
      "current_pricing_plan": null,
      "dedicated_ip_auto_warmup_enabled": false,
      "enforcement_status": "HEALTHY",
      "in_sandbox": true,
      "mail_type": null,
      "max_24_hour_send": 200,
      "max_send_rate": 1,
      "next_pricing_plan": null,
      "production_access_enabled": false,
      "review_case_id": null,
      "review_status": null,
      "sending_enabled": true,
      "sent_last_24_hours": 3,
      "suppressed_reasons": [
        "BOUNCE",
        "COMPLAINT"
      ],
      "vdm_enabled": null,
      "website_url": null
    }
  }
}
```

### Get configuration set

Read a configuration set's sending, delivery and tracking options.

**Inputs**

- Configuration set (`configuration_set_name`, text, required): The configuration set to read.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "configuration_set": {
      "configuration_set_name": "transactional",
      "custom_redirect_domain": null,
      "https_policy": null,
      "last_fresh_start_at": null,
      "max_delivery_seconds": null,
      "reputation_metrics_enabled": true,
      "sending_enabled": true,
      "sending_pool_name": null,
      "suppressed_reasons": [],
      "tags": {},
      "tls_policy": "OPTIONAL"
    }
  }
}
```

### Get email identity

Read one identity's verification, DKIM and MAIL FROM status, including the DKIM DNS records a domain needs.

**Inputs**

- Identity (`email_identity`, text, required): The email address or domain, e.g. 'example.com'.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "identity": {
      "behavior_on_mx_failure": null,
      "configuration_set_name": null,
      "dkim": {
        "current_signing_key_length": "RSA_2048_BIT",
        "last_key_generation_at": "2026-09-01T10:00:00Z",
        "next_signing_key_length": "RSA_2048_BIT",
        "signing_attributes_origin": "AWS_SES",
        "signing_enabled": true,
        "signing_hosted_zone": null,
        "status": "SUCCESS",
        "tokens": [
          "abc123token"
        ]
      },
      "dkim_records": [
        {
          "name": "abc123token._domainkey.example.com",
          "type": "CNAME",
          "value": "abc123token.dkim.amazonses.com"
        }
      ],
      "feedback_forwarding_enabled": true,
      "identity_name": "example.com",
      "identity_type": "DOMAIN",
      "mail_from_domain": null,
      "mail_from_domain_status": null,
      "policies": {},
      "tags": {},
      "verification_error_type": null,
      "verification_last_checked_at": "2026-09-22T08:00:00Z",
      "verification_last_success_at": "2026-09-22T08:00:00Z",
      "verification_status": "SUCCESS",
      "verified_for_sending": true
    }
  }
}
```

### Get template

Read a template's subject and bodies.

**Inputs**

- Template name (`template_name`, text, required): The template to read.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "template": {
      "html": "<p>Hi {{name}}, thanks for signing up.</p>",
      "subject": "Welcome, {{name}}!",
      "tags": {},
      "template_name": "welcome",
      "text": "Hi {{name}}, thanks for signing up."
    }
  }
}
```

### List configuration sets

List the configuration set names in this region.

**Inputs**

- Page size (`page_size`, number): How many to return per page. At least 1.
- Next token (`next_token`, text): The 'next_token' from a previous page, to read the next one.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "configuration_sets": [
      "transactional"
    ],
    "count": 1,
    "has_more": false,
    "next_token": null
  }
}
```

### List email identities

List the email addresses and domains set up for sending in this region, with their verification status.

**Inputs**

- Page size (`page_size`, number): How many to return per page (1-1000). From 1 to 1000.
- Next token (`next_token`, text): The 'next_token' from a previous page, to read the next one.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "count": 1,
    "has_more": false,
    "identities": [
      {
        "identity_name": "example.com",
        "identity_type": "DOMAIN",
        "sending_enabled": true,
        "verification_status": "SUCCESS"
      }
    ],
    "next_token": null
  }
}
```

### List suppressed addresses

List addresses on the account's suppression list - ones SES will not send to because they bounced or complained.

**Inputs**

- Reasons (`reasons`, text): Only addresses suppressed for these reasons. One or more of: `BOUNCE`, `COMPLAINT`.
- Added after (`start_date`, date and time): Only addresses added to the list after this time.
- Added before (`end_date`, date and time): Only addresses added to the list before this time.
- Page size (`page_size`, number): How many to return per page. At least 1.
- Next token (`next_token`, text): The 'next_token' from a previous page, to read the next one.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "count": 1,
    "has_more": false,
    "next_token": null,
    "suppressed_destinations": [
      {
        "email_address": "bounced@example.com",
        "last_updated_at": "2026-09-18T15:02:11Z",
        "reason": "BOUNCE"
      }
    ]
  }
}
```

### List templates

List the templates stored in this region.

**Inputs**

- Page size (`page_size`, number): How many to return per page (1-100). From 1 to 100.
- Next token (`next_token`, text): The 'next_token' from a previous page, to read the next one.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "count": 1,
    "has_more": false,
    "next_token": null,
    "templates": [
      {
        "created_at": "2026-09-20T12:00:00Z",
        "template_name": "welcome"
      }
    ]
  }
}
```

### Send bulk email

Send a stored template to many recipients in one call, each as a separate email with its own variables. Returns each recipient's status; the step fails only if none was sent.

**Inputs**

- From (`from_email`, text, required): The sender: a verified email address, or any address at a verified domain, in the connection's region. 'Ana <ana@example.com>' sets a display name.
- Template name (`template_name`, text, required): The stored template to send.
- Recipients (`entries`, list, required): One entry per email: an address, or an object with 'to' (address or list), optional 'cc'/'bcc', and 'template_data' overriding the defaults. While the account is in the SES sandbox every recipient must be a verified identity or the mailbox simulator (success@simulator.amazonses.com).
- Default template data (`default_template_data`, object): Variables used for every recipient unless their entry sets its own.
- Reply-to (`reply_to`, list): Addresses replies should go to.
- Configuration set (`configuration_set_name`, text): Optional configuration set to send through, for event tracking and delivery options.
- Message tags (`default_email_tags`, object): Name/value tags attached to every message.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "count": 1,
    "failed_count": 0,
    "results": [
      {
        "error": null,
        "index": 0,
        "message_id": "0100019a1b2c3d4e-5f6a7b8c-9d0e-4f1a-8b2c-3d4e5f6a7b8c-000000",
        "status": "SUCCESS",
        "succeeded": true,
        "to": [
          "ana@example.com"
        ]
      }
    ],
    "succeeded_count": 1
  }
}
```

### Send email

Send an email with a subject and a text and/or HTML body, optionally with attachments and custom headers.

**Inputs**

- From (`from_email`, text, required): The sender: a verified email address, or any address at a verified domain, in the connection's region. 'Ana <ana@example.com>' sets a display name.
- To (`to`, list, required): Recipient email addresses. While the account is in the SES sandbox every recipient must be a verified identity or the mailbox simulator (success@simulator.amazonses.com).
- Subject (`subject`, text, required): The subject line.
- Text body (`text_body`, text): Plain-text body. Provide this, an HTML body, or both.
- HTML body (`html_body`, text): HTML body. Provide this, a text body, or both.
- Cc (`cc`, list): Carbon-copy recipients.
- Bcc (`bcc`, list): Blind-carbon-copy recipients.
- Reply-to (`reply_to`, list): Addresses replies should go to.
- Configuration set (`configuration_set_name`, text): Optional configuration set to send through, for event tracking and delivery options.
- Message tags (`email_tags`, object): Name/value tags attached to the message, reported in event notifications, e.g. {"campaign": "welcome"}.
- Headers (`headers`, object): Extra message headers as name/value pairs (up to 15, printable ASCII), e.g. {"X-Campaign": "welcome"}.
- Attachments (`attachments`, list): Files to attach. Each needs a 'file_name' and either 'content' (text) or 'content_base64'; 'content_type' (e.g. text/csv) and 'disposition' (ATTACHMENT or INLINE) are optional.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "message_id": "0100019a1b2c3d4e-5f6a7b8c-9d0e-4f1a-8b2c-3d4e5f6a7b8c-000000"
  }
}
```

### Send templated email

Send an email built from a stored SES template, filling its {{variables}} from Template data. SES can accept a message and then drop it if a variable is missing, so check the data with Test render template first.

**Inputs**

- From (`from_email`, text, required): The sender: a verified email address, or any address at a verified domain, in the connection's region. 'Ana <ana@example.com>' sets a display name.
- To (`to`, list, required): Recipient email addresses. While the account is in the SES sandbox every recipient must be a verified identity or the mailbox simulator (success@simulator.amazonses.com).
- Template name (`template_name`, text, required): The stored template to send.
- Template data (`template_data`, object): Values for the template's {{variables}}, e.g. {"name": "Ana"}.
- Cc (`cc`, list): Carbon-copy recipients.
- Bcc (`bcc`, list): Blind-carbon-copy recipients.
- Reply-to (`reply_to`, list): Addresses replies should go to.
- Configuration set (`configuration_set_name`, text): Optional configuration set to send through, for event tracking and delivery options.
- Message tags (`email_tags`, object): Name/value tags attached to the message, reported in event notifications, e.g. {"campaign": "welcome"}.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "message_id": "0100019a1b2c3d4e-5f6a7b8c-9d0e-4f1a-8b2c-3d4e5f6a7b8c-000000"
  }
}
```

### Test render template

Render a template with sample data and return the resulting subject and bodies, without sending anything. Fails if a variable the template uses is missing from the data.

**Inputs**

- Template name (`template_name`, text, required): The template to render.
- Template data (`template_data`, object): Values for the template's {{variables}}, e.g. {"name": "Ana"}.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "html": "<p>Hi Ana, thanks for signing up.</p>",
    "rendered_template": "Subject: Welcome, Ana!\r\n...",
    "subject": "Welcome, Ana!",
    "template_name": "welcome",
    "text": "Hi Ana, thanks for signing up."
  }
}
```

### Update template

Change a template's subject and/or bodies. Fields left empty keep their current value.

**Inputs**

- Template name (`template_name`, text, required): The template to change.
- Subject (`subject`, text): New subject line. Leave empty to keep the current one.
- Text body (`text_part`, text): New plain-text body. Leave empty to keep it.
- HTML body (`html_part`, text): New HTML body. Leave empty to keep it.

**Outputs**

- `result` (object)

**Example output**

```json
{
  "result": {
    "html": "<p>Hi {{name}}, thanks for signing up.</p>",
    "subject": "Welcome aboard, {{name}}!",
    "template_name": "welcome",
    "text": "Hi {{name}}, thanks for signing up.",
    "updated": true
  }
}
```
