Best way to send emails from your vibe-coded app: Resend vs Postmark
Your AI-built app needs to send sign-up confirmations, password resets and receipts from your own domain, and they need to land in the inbox.
- Our pick
- Resend100/100
- Why
- Passed all 7 checks on the first try. The domain verified in about 2 minutes, Resend logged every message delivered within a second, every one was in our inbox, and the app only ever held a send-only key. The free plan is enough to email real users.
- Not for you if
- you need to email more than 100 people a day on a free plan (Resend Free caps at 100 a day), or you'd rather wait a day for a provider that reviews every account first (Postmark).
Short answer: Use Resend (100/100). Add your domain, paste its DNS records, and you can email real users minutes later on the free plan (3,000 emails a month, 100 a day). Postmark's API and delivery worked too, but new accounts can't email anyone outside your sending domain until Postmark reviews the account. Postmark says that takes under 24 hours on weekdays.
The verdict
Winner
Resend
An email API for developers, with official SDKs, batch sending and SMTP.
Passed all 7 checks on the first try. We added a test subdomain through its API, published the 4 DNS records it listed, and it verified about 2 minutes later. Our app, holding only a send-only key, sent a plain email, one with a PDF (checksum matched) and a batch of 5. All of them arrived from our domain with Reply-To intact. Tracking was off by default. Score: 100/100.
Runner-up
No runner-up named
None of the tools we tested earned this slot.
Also tested
- Postmark · 56/100
Tested on the same app but not picked. The reasons are in the write-up below.
On this page
Quick answers
What's the easiest way to send emails from a vibe-coded app?
In our test, Resend. We added a subdomain, published the four DNS records it gave us, and it verified in about 2 minutes. Our app then sent a single email, an email with a PDF attached and a batch of five, all from our own domain, and all of them landed in the inbox. It scored 100/100 on the free plan.
Can I send emails with Postmark on the free plan right away?
Not to your users. New Postmark accounts start in test mode: until Postmark staff approve the account, every recipient must be on the same domain as your From address. Our sends to another domain were rejected with error 412. Postmark says reviews take less than 24 hours on weekdays. Its domain setup was the fastest we saw (21 seconds) and its API worked in test mode.
Do I need my own domain to send email from my app?
Yes, for real users. Without a verified domain, Resend only lets you email your own account address (we got a 403 for anyone else), and Postmark only lets you send from addresses you've confirmed. Use a subdomain such as mail.yourdomain.com so your normal email records stay untouched.
How many emails can I send for free?
Resend Free: 3,000 emails a month and 100 a day, 3 domains. Postmark Free: 100 emails a month with no overages, after the account is approved. Both were checked on 2026-10-16.
Do these tools track opens and clicks by default?
No. In our test, both had open and click tracking turned off until you switch it on, which is what you want for password resets and receipts.
Why does Supabase say 'email rate limit exceeded'?
Because Supabase's built-in email sender is capped at 2 emails per hour per project (Supabase's rate-limit docs, checked 2026-10-15). In our login test, our first two sign-ups used that up and every sign-up after that failed with 'email rate limit exceeded'. The fix is to add your own email (SMTP) provider in Supabase. Resend's free plan includes SMTP, but we have not tested Resend through Supabase's custom SMTP setting yet.
Why
Who this is for: your app works, usually built with AI, and now it has to send email: sign-up confirmations, password resets, receipts. You want it sent from your own domain, landing in the inbox, with the API key kept on your server.
Our pick: Resend (100/100). It passed every check on the first try. The domain verified about 2 minutes after we published its DNS records. Our app held only a send-only key, and every email we sent, including a PDF attachment and a batch of five, landed in the inbox from our domain. The free plan lets you email real users straight away.
No runner-up. Postmark (56/100) did a lot right. Its domain setup was the fastest we saw: 21 seconds. Its error message said exactly what was wrong, and its API worked. But a new Postmark account can’t email anyone outside your sending domain until Postmark staff approve it. Our rubric gives a tool that can’t finish the core job no pick slot, so the slot stays empty. Postmark says reviews take less than 24 hours on weekdays. We’ll re-test with an approved account.
Gotchas
Postmark: ask for approval on day one. Until Postmark approves your account, every send to an outside domain fails with error 412 (“all recipient addresses must share the same domain as the From address”). You can still build and test with addresses on your sending domain, or with Postmark’s sink address test@blackhole.postmarkapp.com. Request approval from your Postmark account as soon as you sign up.
Resend: a domain comes first. Until you verify a domain, Resend only lets you email your own account address. Anyone else gets a 403 that tells you to verify a domain. It’s a two-minute fix.
Both: use a subdomain. We sent from mail-test.buildwiththis.com, so the records each tool needed (DKIM, SPF or return-path, plus our own DMARC record) sat under the subdomain and never touched our main email. Do the same with something like mail.yourdomain.com.
Both: give your app a send-only key. Resend’s “Sending access” key and Postmark’s server token can send but can’t add domains or change your account. Keep the full key out of the app, as we did.
Scores
Scored with our published rubric. Tested 2026-10-16. One run each: the gap was 44 points, so no second run was needed.
| Criterion | Resend | Postmark |
|---|---|---|
| Task success (35) | 5 (7 of 7) | 1 (2 of 7: domain verified, key safe; every send rejected until approval) |
| Effort (15) | 5 | 5 (1 manual step: account approval) |
| Time (10) | 5 | 1 (couldn’t finish without the approval) |
| Cost (10) | 5 | 1 (couldn’t finish on the free plan in the run) |
| Quality, docs and developer experience (10) | 5 (5 of 5) | 5 (5 of 5) |
| Ownership (10) | 5 (SMTP on Free) | 5 (SMTP on Free) |
| Safe defaults (10) | 5 (4 of 4) | 5 (4 of 4) |
| Total | 100 | 56 |
The 7 checks: the API accepts a send, the domain verifies with DKIM, the email lands in the inbox from our domain within 2 minutes, the text part and Reply-To come through, a PDF attachment arrives intact, a batch of 5 arrives, and no key leaks from the app.
What it costs
All runs cost $0 on the free plans, with no card.
- Resend Free: 3,000 emails a month, 100 a day, 3 domains. Pro is $20/month for 50,000 emails (checked 2026-10-16).
- Postmark Free: 100 emails a month, no overages. Basic starts at $15/month for 10,000 emails (checked 2026-10-16).
Caveats
- Inbox, not spam folder, is what we checked. We sent only to our own inbox (one mailbox behind our domain). Every message landed there, but one mailbox isn’t a deliverability study across Gmail, Outlook and Yahoo.
- Postmark wasn’t approved yet. Its score shows a new account on day one. In an extra, unscored run from an address its test mode allows, all 7 emails arrived. An approved account should score much higher, and we’ll re-test with one.
- Same app for both. One small Node endpoint (31 lines) with each vendor’s official SDK. Runs were done by an AI agent following vendor docs only.
Next step: let people sign in. Password resets and confirmations need login first. See our tested pick for adding login to your app.
Before you launch: check your app’s security. See our vibe coding security check.
Selling something? See our tested pick for taking payments in your app.
Not tested yet
- Brevo. Its signup asks for an organization street address before you get any API access, and our test identity doesn’t have one. That’s an onboarding finding, not a score.
- Amazon SES. Needs an AWS account with a payment card.
Test log
| Date | Agent | Step | Result |
|---|---|---|---|
| Oct 16, 2026 | Lando (agent) | Preflight before the scored runs: the keys we were first given could send but not add a domain (Resend Sending-access key and Postmark server token both got 401 on the domain API). Without a domain, Resend emailed our own account address only. | Resend sent to the account owner and refused anyone else with a 403 ('verify a domain'). We got a Full-access Resend key and the Postmark account token, used only to add the domain. |
| Oct 16, 2026 | Lando (agent) | Resend, run j08-resend-r1. Added mail-test.buildwiththis.com through the API, published its 4 DNS records plus a DMARC record in Cloudflare, then ran our 7 checks from a small Node app using Resend's official SDK and a send-only key. | Domain verified 2 min 22 s after we asked. All 7 checks passed on the first try: single send, attachment (checksum matched), batch of 5, all delivered to our inbox from our domain with Reply-To kept. No key in the app's output. $0, 9 emails of the 100-a-day free limit. |
| Oct 16, 2026 | Lando (agent) | Postmark, run j08-postmark-r1. Added the same subdomain through the account API with a custom return-path, published Postmark's 2 DNS records, then ran the same 7 checks with Postmark's official SDK and the server token. | DKIM and return-path verified 21 s after the records went in. Every send was rejected: error 412, 'While your account is pending approval, all recipient addresses must share the same domain as the From address.' Account approval needs a person to apply and Postmark staff to review it, so the run couldn't finish. Score: 56/100. |
| Oct 16, 2026 | Lando (agent) | Postmark, unscored extra run: same checks, but sent from our confirmed root-domain sender address, which test mode allows for recipients on the same domain. | All 7 sends accepted, Postmark logged them delivered within 2 s, and all arrived with the PDF checksum matching. The API works; the account review is what stands between a new account and your users. |
Affiliate disclosure
This page has no affiliate links yet. Every link goes to the tool’s own homepage. Affiliate deals never decide a pick, and a tool with no affiliate program can still win. How we make money.
Sources
- Supabase Auth rate limits (checked 2026-10-15)
- Test script and amendments (BuildWithThis)
- Resend pricing (checked 2026-10-16)
- Resend account quotas and limits (checked 2026-10-16)
- Resend open and click tracking, disabled by default (checked 2026-10-16)
- Resend test email addresses (checked 2026-10-16)
- Postmark pricing (checked 2026-10-16)
- Postmark account approval process (checked 2026-10-16)
- Postmark API overview, error 412 (checked 2026-10-16)
- Postmark terms of service (effective 2024-12-10, checked 2026-10-16)
What to use now
A free weekly email.
We'll email you a link to confirm. We use Kit to send the email. Unsubscribe anytime. Privacy