Email Service

Built-in transactional email with automatic SPF/DKIM/DMARC configuration.

Overview

RaidFrame Email is a built-in transactional email service. Send emails from your app without a third-party provider. SPF, DKIM, and DMARC are configured automatically for your domain.

rf add email
✓ Email service provisioned
✓ EMAIL_API_KEY injected into environment
  Sender domain: mail.raidframe.app (default)

Custom Sender Domain

Use your own domain for sending:

rf email domain add myapp.com
Add these DNS records:

  TXT  myapp.com          v=spf1 include:spf.raidframe.com ~all
  TXT  rf1._domainkey     k=rsa; p=MIGfMA0GCSqGSIb3DQEB...
  TXT  _dmarc.myapp.com   v=DMARC1; p=quarantine; rua=mailto:[email protected]

Verify: rf email domain verify myapp.com
rf email domain verify myapp.com
✓ SPF: configured
✓ DKIM: configured
✓ DMARC: configured
✓ Domain verified: you can now send from @myapp.com

Send Emails

Node.js

import { Email } from "@raidframe/sdk";

const email = new Email();

await email.send({
  from: "[email protected]",
  to: "[email protected]",
  subject: "Welcome to MyApp",
  html: "<h1>Welcome!</h1><p>Thanks for signing up.</p>",
});

With Templates

await email.send({
  from: "[email protected]",
  to: "[email protected]",
  template: "welcome",
  data: {
    name: "Alice",
    login_url: "https://myapp.com/login",
  },
});

Python

from raidframe import Email

email = Email()
email.send(
    from_addr="[email protected]",
    to="[email protected]",
    subject="Welcome",
    html="<h1>Welcome!</h1>",
)

REST API

curl -X POST https://api.raidframe.com/v1/email/send \
  -H "Authorization: Bearer $RAIDFRAME_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "[email protected]",
    "to": "[email protected]",
    "subject": "Welcome",
    "html": "<h1>Welcome!</h1>"
  }'

Email Templates

Create reusable templates:

rf email templates create welcome --file ./templates/welcome.html

Templates use Handlebars syntax:

<h1>Welcome, {{name}}!</h1>
<p>Click below to get started:</p>
<a href="{{login_url}}">Log in to MyApp</a>
# List templates
rf email templates list

# Preview a template
rf email templates preview welcome --data '{"name": "Alice"}'

# Delete a template
rf email templates delete welcome

Webhooks

Track delivery events:

email:
  webhooks:
    url: https://myapp.com/api/email-events
    events: [delivered, bounced, complained, opened, clicked]

Webhook payload:

{
  "event": "delivered",
  "message_id": "msg_abc123",
  "to": "[email protected]",
  "subject": "Welcome",
  "timestamp": "2026-03-16T14:23:00Z"
}

Analytics

rf email stats --period 30d
EMAIL STATS (30 days)
─────────────────────
Sent:       4,230
Delivered:  4,198 (99.2%)
Bounced:    32 (0.8%)
Opened:     2,840 (67.6%)
Clicked:    1,120 (26.5%)
Complained: 2 (0.05%)

Pricing

PlanEmails/moPrice
Starter500Free
Standard10,000$5/mo
Pro100,000$20/mo
EnterpriseUnlimitedCustom