Send an Email
Using Templates
Templates are a two-step flow: render your email-builder blocks into a complete HTML document, then send that HTML through the standard send endpoint. The direct/messages/email endpoint takes a finished html (or text) body — it does not accept a template_id or variables.
Step 1 — render blocks to HTML with POST /api/v1/messages/email-builder/render. Merge values inline using {{...}} tags in your block content:
POST /api/v1/messages/email:
POST /api/v1/messages/email-builder/save and list them with GET /api/v1/messages/email-builder/list.
Features
- Transactional email — receipts, notifications, password resets
- Marketing email — campaigns, newsletters, announcements
- React Email templates — build and preview templates with React components
- Attachments — PDF, images, and other file types (up to 25 MB total, 10 MB per file, with a MIME allowlist). Each attachment requires a
content_type. - Custom domains — send from your own domain with DKIM, SPF, and DMARC
- Tracking — open tracking, click tracking, and engagement webhooks
- Suppression lists — automatic bounce and complaint handling
Domain Setup
To send from your own domain, add the following DNS records in Channels > Email > Domains:| Record | Type | Purpose |
|---|---|---|
| DKIM | TXT | Email authentication |
| SPF | TXT | Sender authorization |
| DMARC | TXT | Delivery policy |
| Return-Path | CNAME | Bounce handling |
Webhook Events
| Event | Description |
|---|---|
email.delivered | Email accepted by recipient server |
email.opened | Recipient opened the email |
email.clicked | Recipient clicked a tracked link |
email.bounced | Email bounced (hard or soft) |
email.complained | Recipient marked as spam |