Everything it does.
Nothing it doesn’t.
Selva Mail runs in your AWS account and sends through your own Amazon SES — Amazon’s IPs, Amazon’s reputation. You never run a mail server. One command deploys everything, migrations included, and it scales to zero when idle.
Every claim on this page is checked against the code before it ships. Beta features are labeled. Features we haven’t built aren’t listed.
A real visual email editor.
The thing tools you run yourself never have — and the reason a developer ends up in the loop for every campaign. Not here.
WYSIWYG editing with autosave. Account managers build and send campaigns without a developer in the loop.
{{name|there}} renders the fallback when the field is empty, and the editor autocompletes variables as you type.
Shared layouts with content slots, so every campaign starts from the same frame instead of a blank page.
Workspace theme flows into layouts, layouts into templates. Change the brand once and every email inherits it.
The output is table-based, inline-styled HTML with Outlook conditionals — built to survive real email clients, not just the preview pane.
See the email with actual contact data and test-send it before anything goes to a list, with warnings when something looks off.
Images live in an S3 bucket in your AWS account, ready to drop into any email.
Dark-mode email preview and a source-code toggle in the editor — labeled in the app until they graduate.
12 triggers. 17 step types.
Not a checkbox — a visual flow engine. Here is the actual list, because the list is the point.
Every step on the canvas shows its own completed, skipped, failed and waiting counts — you see where a flow leaks.
Welcome series, re-engagement and more, ready to adapt instead of building from an empty canvas.
Split a flow 50/50 — or N ways — inside an automation and compare how each path performs.
Multi-clause AND/OR conditions, goal steps, and exit conditions that pull a contact out when the job is done.
Choose block, concurrent or restart when a contact qualifies twice. Loop guards stop runaway flows.
A webhook step can POST the contact to any URL you choose, per contact, with SSRF guarding built in.
Flows run on EventBridge with a one-minute safety tick, and an outcome log answers “why didn’t it fire?”
Send to people who read you.
Contacts, imports, broadcasts and grading — built so the list you grow stays a list worth mailing.
String, number, date and boolean fields — validated on write — plus tags.
Upload, map columns, preview, then batch processing. No format guessing.
Every contact graded on real engagement, with per-workspace thresholds and triggers that fire when a grade changes. Grade contacts to send smarter — not to shrink an invoice.
Audience filtering and grade-gated targeting let a broadcast skip disengaged addresses, which protects your domain reputation too.
Multi-list targeting with de-duplication, scheduling, duplicate, cancel, and test-send.
Sent, delivered, opened, clicked, bounced, complained, unsubscribed — and the contacts behind each number.
Per-list confirmation template with an expiring token, sent automatically on every join path.
The header inboxes expect, with a per-list or global choice for the reader.
Honeypot plus Cloudflare Turnstile, allowed origins, and post-signup redirects.
Every newsletter can have a public archive page and its own RSS feed.
One API for your app.
Receipts, resets and notifications on the same pipeline, the same domains and the same event log as your campaigns. Queued in milliseconds, delivered by SES.
curl https://mail.yourdomain.com/api/v1/emails \
-H "Authorization: Bearer $API_KEY" \
-d '{
"to": "ana@example.com",
"template": "receipt",
"variables": { "order.id": "1042" }
}' to, cc and bcc, HTML and text bodies, or a template slug plus variables.
SHA-256 hashed at rest, admin and read-only roles, revocable, with optional expiry.
A bounced or complained address never gets another email, on any pipeline.
The from address must belong to a domain you have verified. The API refuses anything else.
SQS FIFO, three retries into a dead-letter queue, an idempotent re-delivery guard, and a reconciler that rescues stuck emails.
Contacts, lists, tags, broadcasts and templates — including bulk contact upsert up to 1,000 per request.
Full event timeline per message, with a sandboxed HTML preview of exactly what was sent.
Coming from a sending API? See how it compares to Resend, SendGrid or Postmark.
Amazon’s IPs. Your DNS, checked.
Sending through your own SES account means you inherit Amazon’s sending infrastructure — Selva Mail’s job is to keep your side of it honest.
DKIM CNAMEs, DMARC and SPF records generated for you, each with its own live DNS check.
It flags an SPF record that exists but does not authorize SES — the error everyone makes.
Reports are parsed and surfaced in the dashboard, a feature almost nothing you can run yourself ships.
Detects SES DKIM revocations and alerts your admins before your recipients notice.
Wired the way AWS wants to see before granting production access.
Delivery, bounce, open and click events land in your log as SES reports them.
New to SES? Read the guide to getting SES production access.
One install. Every client.
There is no cap anywhere in the code — not on workspaces, domains, senders, keys or contacts.
Their domains, their verified senders, their API keys, their admin and user roles.
Per-workspace brand themes inherited by every email template. Campaigns go out as the client, not as you.
Engagement thresholds and timezone set per workspace, because clients differ.
The first 100 licenses carry agency rights permanently. Read the agency page →
Your list can grow. Your bill doesn’t.
SES bills per email sent, not per contact stored. The rest is 100% serverless — five Lambdas, no always-on compute — so idle cost is ≈$0: your CockroachDB database is the only always-on line.
AWS estimates, excluding the database. Put your own volume into the cost calculator.
You get the repository. Read it, audit it, extend it — it runs in your account, after all.
Set four secrets and run one deploy. Database migrations run inside it — there is no separate migration step to forget.
Stop paying for the same contacts
every month.
$497 once. Runs on your infrastructure, sends through your own AWS SES account. Launch buyers get agency rights permanently — unlimited client workspaces. First 100 licenses.