Skip to main content
POST
Send Transactional Email
Send a transactional email. You can either use a saved template (by slug) or send custom content directly.
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. Use the returned emailSendId with the email-send details endpoint to inspect the final status and any provider failure reason.

Request Body

Recipients

to
string | string[]
required
Recipient email address(es). Can be a single email string or an array of up to 50 emails. All recipients will receive the same email and can see each other in the To header.

Option 1: Send via template

slug
string
Canonical transactional template slug (use this OR direct content).
templateId
string
Compatibility alias for slug. Despite the field name, pass the saved transactional email’s API slug, not its database ID.

Option 2: Send direct content

subject
string
Email subject (required if no slug)
body
string
Canonical email HTML body (required if no template slug).
html
string
Compatibility alias for body, accepted with subject for direct sends.
preview
string
Preview text
slug/body remain canonical. If you provide both slug and templateId, or both body and html, the paired values must match. A differing pair is rejected with 400 instead of silently choosing one.

Common fields

variables
object
Template variables for personalization. Values can be scalars, nested objects, or arrays. Repeat blocks read arrays from paths such as items. Raw HTML templates can also use subscriber/custom-attribute conditionals like {{#if subscriber.plan}}...{{else}}...{{/if}} and {{#unless subscriber.plan}}...{{/unless}}. If Sequenzy detects likely variable issues before queueing, the successful response includes diagnostics warnings. Missing required values do not block queueing; the worker renders values without defaults as empty strings and continues sending.
subscriberExternalId
string
Customer-owned subscriber ID for single-recipient sends. If it matches an existing subscriber, analytics, localization, and engagement attach to that subscriber even if the delivery email changed. Sequenzy also stores this value on the send, so outbound email webhooks include it as external_id even when no subscriber record exists. Maximum length: 255 characters.
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 and the default sender profile is used.
replyTo
string
Reply-to address. Format: "Name <email>" or just "email". Can be any valid email address.When reply tracking is disabled, this is sent as the email’s Reply-To header. When reply tracking is enabled, Sequenzy sends a unique trackable Reply-To address instead and stores this value as the forwarding destination for replies.
With reply tracking and reply forwarding enabled, direct-content sends that omit replyTo forward replies to the company’s default reply profile. If no default reply profile is set, Sequenzy uses the first reply profile in the company as a fallback. If no reply profile exists, replies are still captured in Sequenzy but are not forwarded externally. Template sends use the template’s reply profile unless the API request provides replyTo.
attachments
array
File attachments to include with the email. Maximum total size: 40MB.Each attachment object has:
  • filename (required): The name of the file as it will appear to the recipient
  • content: Base64-encoded file content (use this OR path)
  • path: URL to fetch the file from (use this OR content)
You must provide either content or path, but not both.

Example: Send via template

Example: Send array data to a repeat block

If a template contains a repeat block with source items and item alias item, child blocks can use merge tags like {{item.title}} and {{item.description}}.

Example: Send to multiple recipients

Example: Send direct content

The same direct send can use the html compatibility alias:

Example: Send with custom from and reply-to

Example: Send with URL-based attachment

Example: Send with Base64 attachment

Responses

Emails are queued for background processing. Track the returned emailSendId with GET /api/v1/email-sends/{emailSendId}. For single-recipient sends without cc or bcc, EMAIL resolves from the recipient address. Pass name, firstName, lastName, FIRST_NAME, or LAST_NAME in variables when a REST API template needs recipient names.
When using multiple to recipients, all recipient addresses are visible to each other. Use single-recipient sends when recipients should not see each other.
Multi-recipient sends produce a single email send record. The full recipient list (to/cc/bcc) is stored on the record and returned as additionalRecipients from the email-sends API. Opens and clicks are tracked for the message as a whole, not per recipient.