Sending Emails
Use email to verify users, send magic links, and invite teammates to organizations. Some features will not work unless email sending is enabled.
Why it matters
- Email verification improves account security and deliverability.
- Magic links allow passwordless sign-in.
- Invitations are required for organization/team workflows.
Activate email sending
src/convex/auth.constants.ts
Brand your emails
Add your brand name and your brand tagline to convex as env variables, they will be used in your emails.
Tip: If you deploy to multiple environments (development/production), set these variables in each environment.
Configure Resend
We use Resend to send transactional emails (verification, invites, magic links). If you prefer your own email provider, see Custom Email Providers.
Create a Resend Account & Key
- Sign up at https://resend.com
- In the dashboard → API Keys, generate a new key.
- In your Convex project, set the key: Or add
RESEND_API_KEY
in the Convex dashboard under Environment Variables.
Verify your domain (recommended)
- In Resend, go to “Domains” and add your sending domain (e.g. example.com).
- Follow the DNS instructions to set up DKIM. This significantly improves deliverability and prevents spam issues.
- Configure a from address (e.g. noreply@example.com).
- Set the from address in Convex:
Enable Webhook for Analytics
- In Resend’s Webhooks section, add a new endpoint pointing to:
- Select email.* events only; all others are ignored.
- Copy the Signing Secret and set it in Convex:
🔧 The @convex-dev/resend package automatically provides a /resend-webhook POST handler. No extra code needed.
For more information see Convex Resend.
Test it
- With
sendEmails: true
andRESEND_API_KEY
set, try one of the email flows:- Email verification
- Magic link sign-in
- Organization invite
- Check your inbox, and if you don’t see the email, inspect the Resend dashboard and Convex logs.
Troubleshooting
- Emails not arriving:
- Confirm
sendEmails
is spelled correctly insrc/convex/auth.constants.ts
. - Verify
RESEND_API_KEY
is present in the correct environment. - Complete domain verification and DKIM setup in Resend for better deliverability.
- Check spam/junk folders.
- Confirm
- Webhook signature errors:
- Ensure you copied the current Resend Webhook Signing Secret and set
RESEND_WEBHOOK_SECRET
. - Only subscribe to
email.*
events.
- Ensure you copied the current Resend Webhook Signing Secret and set