Transactional email API for AI-powered apps
Send password resets, receipts, and notifications from AI-built apps. Provisioned inbox, custom domain, ZeptoMail-backed deliverability, and per-send open + click tracking with optional opt-out for privacy-sensitive sends.
The problem
Your AI-built app needs to send transactional email — password resets, magic links, receipts, account notifications, trial-ending warnings. Reliable delivery, threaded replies handled, bounce rates monitored, real custom domain so the sender isn't [email protected].
You could pull in Resend or Postmark for the send-only side. Both are excellent. But if your app already needs email receive (support inbox, reply-to handling, trial flow that asks the user to reply YES) or LinkedIn outreach, running two infrastructures gets expensive fast.
What MyAgentMail gives you specifically for transactional
- Per-send tracking opt-out — set
track: falseon transactional sends so password resets don't get pixel-injected. Your customer-support emails carry thetrack: falseflag while marketing carriestrack: true. Per-send control isn't standard among providers; we ship it. - ZeptoMail backbone for outbound (Zoho's transactional infrastructure), SES as backup. Established deliverability, not a startup that might disappear.
- Real custom domain —
[email protected], fully owned. Bring your own domain, verify SPF/DKIM/DMARC, send from it. No*.myagentmail.comreply-to. - Bounce + complaint pipeline — if your sends start bouncing or getting complaints, the inbox auto-pauses (we don't let one send pattern ruin your IP reputation).
message.bouncedwebhook fires per delivery failure. - Threading and reply handling — reply-to addresses can route back into your app. If a user replies to a transactional email asking a question, you store the reply, fire a webhook, your support flow takes over.
- Per-message tracking even on sends you don't open-track — bounces, deliveries, clicks (when enabled) are all queryable via
GET /v1/inboxes/:id/messages/:mid.
Sketch — typical transactional pattern
import { MyAgentMail } from "myagentmail";
const mam = new MyAgentMail({ apiKey: process.env.MAM_KEY });
// Password reset — track: false (privacy: don't pixel a security email).
async function sendPasswordReset(user, resetUrl) {
await mam.messages.send({
inboxId: NOREPLY_INBOX_ID,
to: user.email,
subject: "Reset your password",
htmlBody: render(passwordResetTemplate, { name: user.name, resetUrl }),
plainBody: `Reset your password: ${resetUrl}`,
track: false, // ← no open/click tracking on security email
});
}
// Trial-ending notice — track: true (open rate is signal of engagement).
async function sendTrialEnding(user) {
await mam.messages.send({
inboxId: BILLING_INBOX_ID,
to: user.email,
subject: "Your trial ends in 2 days",
htmlBody: render(trialEndingTemplate, user),
track: true, // ← default, gets pixel + click tracking
});
}
// Listen for engagement to drive in-product nudges:
// - message.opened → mark user as "saw email"
// - message.clicked → user clicked the upgrade CTA, surface the
// billing page on their next dashboard visit
Tracking caveats — opens vs clicks in 2026
Apple Mail Privacy Protection pre-fetches images via Apple's proxy on delivery, registering open events within seconds of arrival regardless of whether the recipient actually opened. Roughly 30-50% of "opens" are auto-fetches. Gate business logic on message.clicked, not message.opened — clicks survive MPP cleanly.
We deliver events faithfully (no UA-based filtering — Apple rotates) and surface the noise so you know to ignore it. Per-send track: false lets you opt sensitive emails out entirely.
Pricing
Email module: $5/month per provisioned inbox. 7-day free trial. See /pricing.
For comparison:
- Resend: $20/mo for 50k emails — pure send, no provisioned inbox
- Postmark: $15/mo for 10k — premium deliverability, send-only
If you're sending a million transactional emails a month and that's your ENTIRE need, Postmark is probably a better fit. If the same app also needs to receive email, do support, or run LinkedIn outreach, MyAgentMail collapses two or three vendors into one.
Where this is NOT the right fit
- Volume > 1M emails/month, send-only. Pure transactional senders give you better economies of scale.
- You need React Email's tight integration with deep Resend coupling. Resend + React Email is a bespoke pairing we don't try to compete with.
- You're a Twilio shop and want everything (SMS, voice, email) in one bill. SendGrid stays the simpler answer.
Related
Other use cases
- For cold outreachBuild your own cold outreach system on MyAgentMailCold email + LinkedIn outreach infrastructure for indie hackers and small teams. Provisioned inboxes, real LinkedIn sessions, intent signals, server-side cadence engine. Drop-in alternative to Lemlist, Apollo, Instantly — with full data ownership.
- For recruiting agentsEmail + LinkedIn API for AI recruiting agentsSource candidates from LinkedIn, message them with personalized outreach, follow up over email when a connection accepts. Reply detection, multi-account quotas, and intent signals built in.
- For sales agentsEmail + LinkedIn API for AI sales agentsBuild AI sales agents that actually work leads end-to-end — connect on LinkedIn, send personalized email, detect replies, branch the cadence, and follow up at the right moment. One API key, two channels, multi-tenant ready.
- For support agentsEmail API for AI customer support agentsBuild AI customer support agents that read inbound email, draft thoughtful replies, and learn from human edits before sending. Real inbox per agent, full thread state, drafts API for human-in-the-loop.
- For SaaS buildersMulti-tenant email + LinkedIn API for SaaS buildersBuild SaaS products that give each customer their own provisioned inbox and connected LinkedIn account. Workspace-isolated keys, per-tenant rate limits, scoped billing structures — multi-tenancy is first-class, not an afterthought.
Last reviewed 2026-05-02.