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:
Orbit verifies your DNS records automatically — verification typically completes within minutes.
Webhook Events
Email engagement fires its own event types:
Delivery outcomes are reported on the channel-agnostic message events, not on
email-specific types. Subscribe to these to track delivery, bounces, and complaints:
Each
message event carries channel: "email" and the originating message_id,
so you can filter for email traffic and correlate back to the send.