Email · Guide
Resend — email that just works
Send transactional email without becoming a deliverability expert.
Difficulty
Easy
Setup time
20 min
Cost
Free up to 3k/mo
Why Resend?
If your app needs to send email — magic links, sign-up confirmations, receipts, notifications — you have three options: roll your own with Postmark/SendGrid (painful), use your provider's built-in email (often terrible deliverability), or use Resend (modern, easy, cheap).
Resend was built by the folks who made react-email. The DX is noticeably better than the alternatives. I use it for every project.
What you'll use it for
- Magic-link and password-reset emails (if you're using Supabase or similar, those send via Resend)
- Transactional: receipts, confirmations, "your export is ready"
- Onboarding drip sequences (via Resend's Audiences + Broadcasts)
- Contact form submissions forwarded to your inbox
What Resend is not for: marketing newsletters at scale (use Substack, Buttondown, or ConvertKit). For that, Resend is fine but you'll want a proper newsletter tool.
Setup, step by step
- Sign up at resend.com
- Add your domain under Domains
- Copy the 3 DNS records (MX, SPF, DKIM) into your domain registrar
- Wait ~5 min for DNS to propagate, click Verify
- Generate an API key under API Keys → store in
.envasRESEND_API_KEY
Sending an email (Next.js)
Install the SDK:
npm install resendCreate an API route like src/app/api/send/route.ts:
import { Resend } from 'resend';
const resend = new Resend(process.env.RESEND_API_KEY);
export async function POST(req: Request) {
const { to, subject, html } = await req.json();
const { data, error } = await resend.emails.send({
from: 'You <hello@yourdomain.com>',
to,
subject,
html,
});
if (error) return Response.json({ error }, { status: 500 });
return Response.json({ data });
}The from address must be on your verified domain. hello@, no-reply@, anything works — you don't need to create mailboxes, Resend handles routing.
React Email for templates
Don't write HTML emails by hand. Use react-email (same company) — you write JSX, they render to inline-styled HTML that works in every client.
npm install @react-email/componentsPricing
- Free: 3,000 emails/month, 100/day — enough for most side projects
- Pro ($20/mo): 50,000/month, priority support, dedicated IP option
For comparison, SendGrid's free tier is 100/day (same), but their $20/month tier is 40k emails — Resend wins on both simplicity and price once you're paying.
Common gotchas
- First email goes to spam. Send yourself a test email, mark it as "not spam" in Gmail. After that, deliverability improves.
- DMARC. Resend warns you to add a DMARC record. For a small project,
v=DMARC1; p=none; rua=mailto:you@domain.comis fine. - Your dev email. In development, send to
delivered@resend.dev— the Resend dashboard shows it without actually sending.
Related skills
The /landing skill doesn't set up email, but if you use /seo, the generated llms.txt and contact pages assume you'll wire up a contact form. Resend is the quickest way to make that form actually send.