Skip to Content
LaunchfastDocs

Email errors

Emails not arriving, Resend errors, domain verification and spam.

Email errors show in your terminal (locally) or in Vercel's Logs (live site) as:

Email to someone@example.com failed: <Resend's reason>

Find Resend's reason below. Resend's own log at resend.com/emails shows every attempt and what happened to it.

Missing environment variable RESEND_API_KEY.

Why: the live site tried to send an email, but RESEND_API_KEY isn't set. (Locally, emails print to the terminal instead.)

Fix: set up Resend, add RESEND_API_KEY and EMAIL_FROM in Vercel, and redeploy.

The yourdomain.com domain is not verified

Why: the domain in EMAIL_FROM hasn't passed Resend's DNS check yet.

Fix:

  1. Open resend.com/domains and select the domain. Each record shows whether it's found.
  2. For any record marked as failing, check at your DNS provider that the type, name and value match exactly. Common mistakes:
    • The name includes the domain twice, such as send.yourdomain.com.yourdomain.com. Most providers add the domain for you: enter send.
    • The DKIM value was cut off when copying.
    • A second SPF record exists for the same name. There must be only one v=spf1 TXT record per name: merge them.
  3. Click Verify in Resend. DNS changes can take from minutes up to 48 hours to spread.

You can only send testing emails to your own email address

Why: EMAIL_FROM isn't set, so the kit uses Resend's testing sender onboarding@resend.dev, which only delivers to your own Resend account email.

Fix: verify your domain and set EMAIL_FROM="Your Product <hello@yourdomain.com>".

API key is invalid

Why: RESEND_API_KEY is wrong, has extra spaces or quotes, or was deleted.

Fix: create a new key at resend.com → API Keys, update it in .env.local or Vercel, restart or redeploy.

Invalid \from` field`

Why: EMAIL_FROM isn't a valid sender. It must be email@domain or Name <email@domain>.

Fix: in .env.local, quote it, because of the spaces and angle brackets:

.env.local
EMAIL_FROM="Your Product <hello@yourdomain.com>"

In Vercel, enter the value without the outer quotes.

Too many requests / rate limit exceeded

Why: Resend limits how many emails per second you can send, and the free plan has a daily and monthly limit.

Fix: check your usage in the Resend dashboard; upgrade the plan if you've outgrown it.

Emails arrive in spam

  • Make sure the domain is fully Verified in Resend (SPF and DKIM).
  • Add a DMARC record at your DNS provider. A simple start: type TXT, name _dmarc, value v=DMARC1; p=none;.
  • Send from your own domain, not a free address.
  • Use a sender name people recognise, and keep emails short and plain.
  • New domains build reputation over time: early emails are more likely to go to spam.

Emails don't arrive and there's no error

  1. Check spam, and Promotions in Gmail.
  2. Check resend.com/emails. Delivered means it reached the recipient's mail server; look in their spam. Bounced means the address doesn't exist or rejected it.
  3. Locally without a Resend key, emails are printed in the terminal, not sent.

Setup errors with Resend or Cloudflare

See Setup errors → Email.

On this page