---
title: "Send transactional email"
method: POST
path: "/transactional/send"
tags: ["Transactional"]
---

# Send transactional email

`POST /transactional/send`

Queues a transactional email for sending. You can either:
- Provide a `slug` to use a saved template
- Provide `subject` and `body` to send custom content directly

**Recipients:**
- `to` can be a single email or an array of up to 50 emails
- Duplicate emails are automatically deduplicated

**Attachments:**
- Attachments can be provided as Base64-encoded content or URLs
- Maximum total attachment size: 40MB per email
- Any file type supported (PDFs, images, documents, etc.)

A successful response means the email was accepted for background processing. Transactional emails are not blocked by subscriber unsubscribe or double opt-in status. If a recipient is suppressed because of a hard bounce or spam complaint, the worker records the send as `suppressed` instead of delivering it.

Optionally set `from` (domain must be verified) and `replyTo` addresses. When reply tracking is enabled, Sequenzy uses a unique trackable `Reply-To` header and treats the provided `replyTo` as the forwarding destination for captured replies.
For direct-content sends with reply tracking and reply forwarding enabled, omitting `replyTo` forwards replies to the company's default reply profile, then falls back to the first reply profile in the company. If no reply profile exists, replies are captured in Sequenzy but are not forwarded externally.
Variables can be passed to customize the email content. Nested objects and arrays are supported for repeat blocks, such as `items`. Returns immediately with a job ID.

## Request body

- object
  - `to` union, required — Recipient email address(es). Can be a single email string or an array of up to 50 emails.
    - string, email
    - string[]
  - `cc` union — Visible carbon-copy recipient email address(es). Duplicates already present in `to` are removed.
    - string, email
    - string[]
  - `bcc` union — Blind-carbon-copy recipient email address(es). Duplicates already present in `to` or `cc` are removed.
    - string, email
    - string[]
  - `slug` string — Slug of the transactional email template to use (mutually exclusive with subject/body)
  - `subscriberExternalId` string — Customer-owned subscriber ID for single-recipient sends. If it matches an existing subscriber, analytics and localization use that subscriber; the value is also stored on the send and emitted as external_id in outbound email webhooks even when no subscriber exists. Maximum length is 255 characters.
  - `subject` string — Email subject (required if not using slug)
  - `body` string — Email body HTML content (required if not using slug)
  - `preview` string — Preview text for the email (only used with direct content)
  - `variables` object — Variables for template replacement (works with both modes). Values can be scalars, nested objects, or arrays used by repeat blocks. Raw HTML templates can use simple subscriber/custom-attribute conditionals such as `{{#if subscriber.plan}}...{{else}}...{{/if}}` and `{{#unless subscriber.plan}}...{{/unless}}`.
  - `from` string — Custom from address. Format: "Name <email>" or just "email". The domain must be verified for your account. If not verified, this field is silently ignored.
  - `replyTo` string — Reply-to address. Format: "Name <email>" or just "email". Can be any valid email address. When reply tracking is disabled, this value is sent as the email's `Reply-To` header. When reply tracking is enabled, Sequenzy sends a unique trackable `Reply-To` header and stores this value as the forwarding destination for replies. For direct-content sends with reply tracking and reply forwarding enabled, omitting this field forwards replies to the company's default reply profile, then falls back to the first reply profile in the company. If no reply profile exists, replies are captured in Sequenzy but are not forwarded externally.
  - `attachments` Attachment[] — File attachments for the email. Each attachment must have a filename and either: - `content`: Base64-encoded file content - `path`: URL to fetch the file from Maximum total size: 40MB per email.
    - `filename` string, required — The filename for the attachment (including extension)
    - `content` string — Base64-encoded file content (mutually exclusive with path)
    - `path` string, uri — URL to fetch the file from (mutually exclusive with content)
    - `contentType` string — MIME type of the attachment (optional, auto-detected if not provided)

## Response `200`

Email queued successfully

- union
  - object
    - `success` boolean
    - `jobId` string
    - `to` union
      - string
      - string[]
    - `transactional` object
      - `id` string
      - `slug` string
      - `name` string
  - object
    - `success` boolean
    - `jobId` string
    - `to` union
      - string
      - string[]

## Other responses

- `400` — Bad request (validation error, missing variables, disabled template, attachment errors, etc.)
- `401` — Unauthorized
- `404` — Template not found
- `500` — Internal server error

## Changes

- **2026-06-12** `f9a826460811` — 1 warning
  - the `subscriberExternalId` request property's maxLength was set to `255`
- **2026-05-20** `1139fdf1ac6b` — 2 info
  - added the new optional request property `bcc`
  - added the new optional request property `cc`
- **2026-05-13** `9a89cb9ec599` — 6 warning
  - removed the request property `bcc`
  - removed the request property `cc`
  - removed the optional property `oneOf[subschema #1: Slug-based response]/bcc` from the response with the `200` status
  - removed the optional property `oneOf[subschema #1: Slug-based response]/cc` from the response with the `200` status
  - …2 more
- **2026-05-05** `5449b620579f` — 1 info
  - added the new optional request property `subscriberExternalId`

[Change history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/transactional/send/post.md)

---

[API](https://skmtc.dev/sequenzy/apis/sequenzy-api.md) · [All operations](https://skmtc.dev/sequenzy/apis/sequenzy-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/sequenzy/sequenzy-api/revisions/ba95c77d23ef/schema)
