For transactional email

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: false on transactional sends so password resets don't get pixel-injected. Your customer-support emails carry the track: false flag while marketing carries track: 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.com reply-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.bounced webhook 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

Last reviewed 2026-05-02.