Transactional Email API for Apps and AI Agents
Mailfully is the best-priced transactional email API, with the most generous free plan out there — 5,000 emails a month, free forever.
5,000 emails a month free, then plans from $19/mo with a flat $0.40 per 1,000 emails.
import { Mailfully } from "@mailfully/node";
const mailfully = new Mailfully({
apiKey: process.env.MAILFULLY_API_KEY,
});
const { data } = await mailfully.emails.send({
from: "[email protected]",
to: "[email protected]",
subject: "Welcome aboard",
html: "<p>Thanks for signing up!</p>",
});Everything a production send path needs
A simple, secure API — with custom domains, templates, webhooks, suppressions, and per-message logs.
Simple API
One authenticated POST sends an email. A typed REST API under /v1 — snake_case on the wire, a single error envelope — plus the official @mailfully/node SDK that returns a data-or-error result and never throws.
Debug logs
Every message keeps its full event timeline — accepted, message id, delivery, bounce, complaint — down to the raw SMTP conversation.
Templates
Reusable email templates with variable placeholders, managed through the API and dashboard. Change an email's copy without shipping code.
Secure
Scoped API keys authenticate every request — we store only a hash, never your secret. Tenant data is isolated by construction and encrypted in transit and at rest.
Custom domain
Verify your own sending domain with guided DKIM, SPF, and DMARC records, then send as [email protected] with authentication aligned before your first message goes out.
Webhooks
Delivery, bounce, and complaint events arrive as signed, retried webhooks — with a per-endpoint circuit breaker and replay.
Suppressions
Hard bounces and complaints are suppressed automatically and stay out of future sends. Inspect, add, and remove entries anytime.
Why they switched
The things that make teams leave a provider, and what they get here instead.
- Silently banned mid-launch.
- A written suspension policy, a warning first, and an appeal that gets answered.
- The bill doubled overnight.
- Published pricing and a flat overage rate that doesn't lurch.
- A retry sent the email twice.
- Exactly-once sends. The same request twice, one email.
- Logs gone after a day.
- Full per-message logs, down to the SMTP conversation.
A typed SDK that never throws.
Every send returns a data-or-error result, so failures are values you handle, not exceptions that crash a background job. Add an idempotency key and retries are free.
import { Mailfully } from "@mailfully/node";
const mailfully = new Mailfully({
apiKey: process.env.MAILFULLY_API_KEY ?? "", // never hard-code your key
});
const { data, error } = await mailfully.emails.send({
from: "[email protected]",
to: "[email protected]",
subject: "Welcome aboard",
html: "<p>Thanks for signing up!</p>",
});
if (error) {
// No method ever throws — failures arrive on the error arm.
console.error(`Send failed (${error.statusCode}):`, error.message);
} else {
console.log("Queued email id:", data.id);
}Per-message debug logs
Every message keeps its full timeline (accepted, message id, deliveries, opens, bounces, complaints), plus the raw SMTP conversation.
Typed SDK, never throws
The official @mailfully/node client is fully typed and returns a data-or-error result. No method throws.
REST API + SMTP relay
Send over HTTPS or drop-in SMTP. Same delivery, logging, and suppression underneath either path.
Signed webhooks
Delivery, bounce, and complaint events delivered as signed, retried webhooks you can verify.
Proven delivery foundation
Proven sending infrastructure underneath, with the operational layer (logs, billing, suppression, abuse handling) built on top.
Suppression handling
Bounces and complaints auto-suppress and stay out of future sends, so a bad address can't quietly tank your reputation.
Built for the people who own the send path.
“I spent years wrestling with SendGrid's legacy API and archaic template builders. Moving our transactional stack to Mailfully felt like stepping into the future—the API is incredibly intuitive, and being able to version control my email templates as React components finally brought sanity to our release process.”
“Honestly, the best feature of Mailfully isn't even the sending itself; it's the audit log. Being able to inspect the exact payload, headers, and delivery status of every single email in a clean, searchable UI has saved us hours of debugging time that we used to lose digging through raw provider logs.”
“I'm usually skeptical of 'developer experience' marketing, but the CLI integration is genuinely top-tier. I set up our domains, verified our DNS records, and triggered our first test email entirely from the terminal. It's rare to find an email service that treats the developer as the primary user rather than an afterthought.”
Start free. Pay for what you send.
5,000 emails a month free, then plans from $19/mo with a flat $0.40 per 1,000 emails. Test keys are always free and never metered.
Send your first email in five minutes.
Install the SDK, verify a domain, and ship. Migrating from Resend, Postmark, or Mailgun? The API and SDK make the cutover quick.
Start free