Migrate from Resend to Notify
Swap Resend for Notify — auth header, send payload, and what maps 1:1.
Notify and Resend both target developers who want a simple transactional email API. Notify is deliberately smaller: send, webhooks, and logs — no template studio. Pro is $10/month for 10,000 emails.
What stays the same
- You send HTML (or text) you already own
- You verify a domain for production
fromaddresses - You observe delivery via logs and webhooks
What changes
| Resend | Notify | |
|---|---|---|
| Recommended client | Official resend SDK (resend.emails.send) | One fetch — no SDK required |
| Auth | Authorization: Bearer re_… (SDK wraps this) | x-api-key: … |
| Endpoint | POST https://api.resend.com/emails | POST https://notify.cx/api/email/send |
| Body | to, subject, html / text | to, subject, message |
| Product surface | SDKs, React Email, templates, marketing plans | Send + webhooks + logs |
Notify uses a single message field for plain text or HTML. html and text are also accepted as quiet aliases; prefer message.
Before / after
Resend (official SDK)
import { Resend } from 'resend';
const resend = new Resend(process.env.RESEND_API_KEY);
const { data, error } = await resend.emails.send({
from: 'Acme <noreply@acme.com>',
to: ['user@example.com'],
subject: 'Welcome',
html: '<h1>Welcome</h1>'
});
if (error) {
console.error(error);
return;
}
console.log(data);
Notify (one fetch — no SDK required)
await fetch('https://notify.cx/api/email/send', {
method: 'POST',
headers: {
'x-api-key': process.env.NOTIFY_API_KEY!,
'Content-Type': 'application/json'
},
body: JSON.stringify({
from: 'Acme <noreply@acme.com>',
to: 'user@example.com',
subject: 'Welcome',
message: '<h1>Welcome</h1>'
})
});
Migration checklist
- Sign up and copy an API key from Credentials
- Verify your domain (SPF, DKIM, DMARC) — see Cloudflare or Route 53
- Remove the
resendpackage (or stop calling it) and setNOTIFY_API_KEY - Switch auth to
x-api-key - Prefer
message(or keephtml/text— both work as aliases) - Point webhook endpoints at Notify’s webhook payload (docs) — Pro or Scale
- Confirm sends in logs
Your HTML stays yours
Whatever builds your email body — a string template, a React render, Markdown-to-HTML — pass the result as message. Notify does not host a template builder.
Pricing snapshot
| Plan | Price | Emails / month |
|---|---|---|
| Free | $0 | 1,000 |
| Pro | $10 | 10,000 |
| Scale | $50 | 100,000 |