How to send transactional emails from a Lovable app
Three ways to send sign-up, reset and order emails from a Lovable app (Lovable Emails, Resend, SMTP), how to verify your domain and test delivery.
Leer en español →
A Lovable app can send transactional emails (sign-up confirmations, password resets, receipts, notifications) in three ways: Lovable's built-in Emails feature on paid plans, which sends from your own domain and sets up the DNS for you; the Resend connector, which sends through your own Resend account; or, if your app uses its own Supabase project, a custom SMTP server for auth emails. Whichever you choose, the sending domain must be verified with SPF and DKIM records, and emails must be sent from server code, never from the browser.
Below: how to pick between the three, the setup for each, the DNS step that trips people up, and how to check your emails actually arrive.
Which email option should I use?
| Lovable Emails | Resend connector | Custom SMTP (own Supabase) | |
|---|---|---|---|
| Auth emails (confirm, reset, magic link) | Yes, through the built-in backend | No, auth emails need SMTP or Lovable Emails | Yes |
| App emails (receipts, alerts) | Yes | Yes | Needs separate sending code |
| Who you pay | Lovable credits beyond the included volume | Resend | Your SMTP provider |
| Marketing or newsletters | Not the focus | Yes | Depends on provider |
| Needs your own email account | No | Yes | Yes |
For most Lovable Cloud projects, Lovable Emails is the shortest route. Choose Resend when you already manage sending there, need marketing email, or want Resend's delivery tooling. Choose custom SMTP when your auth runs on your own Supabase project.
How do I set up Lovable Emails?
According to Lovable's custom emails documentation:
- It's available on paid plans, and each paid workspace includes 50,000 transactional emails per month. Beyond that, emails cost 4 credits per 1,000.
- There are hourly limits per workspace. On Pro, 100 app emails and 500 authentication emails per hour; higher on Business and Enterprise. Over the limit, new emails are rejected until the hour resets.
- Authentication emails need the built-in backend (Cloud). App emails need server code: TanStack Start projects have their own server, React + Vite projects use Cloud.
Steps
- Open More → Cloud → Emails and add your domain. A workspace admin or owner has to do this.
- Lovable creates a sending subdomain such as
notify.yourdomain.comand starts a guided DNS flow. You can let it update your DNS provider automatically or copy the records by hand. - Wait for the status to change from Verifying to active.
- Generate the six built-in auth templates (confirm sign-up, password reset, invite, magic link, email change, reauthentication) and adjust the branding.
- For app emails, describe what you need in chat: "Send an order confirmation email after checkout." Lovable writes the template and adds an unsubscribe link to the footer.
The DNS step people get wrong
The setup asks for NS records for the sending subdomain. Add them as records inside your DNS zone, for the host it shows (for example notify). Do not replace your domain's nameservers at the registrar: that would take your whole website and inbox offline. Some DNS providers, such as Hostinger and Wix, can't hold NS records on subdomains; Lovable detects that and shows an alternative.
If someone later edits those records, Lovable marks the domain Offline and sending stops, so leave them alone.
How do I send with Resend instead?
- Create a Resend account and verify your sending domain in Resend. Until you do, you can only send to your own address.
- Create an API key. Sending access is enough for an app that only sends; keys start with
re_and are shown once. - In Lovable, open Connectors, choose Resend, add a connection with the key, and link it to your project.
- Ask in chat: "Use Resend and send a welcome email when a new account is created."
Email sent this way counts toward your Resend plan, not Lovable credits. If you're writing the sending code yourself in an edge function, it's one authenticated request, with the key read from a secret:
await fetch("https://api.resend.com/emails", {
method: "POST",
headers: { Authorization: `Bearer ${Deno.env.get("RESEND_API_KEY")}`, "Content-Type": "application/json" },
body: JSON.stringify({ from: "Acme <hello@notify.yourdomain.com>", to: user.email, subject: "Your receipt", html }),
});
Never put the key in frontend code or in a VITE_ variable. Anyone could read it and send email as you.
What if my app uses its own Supabase project?
Supabase's built-in email service is meant for testing. Per Supabase's SMTP guide, without custom SMTP it only sends to members of your Supabase organization (other addresses fail with "Email address not authorized") and the rate limit is very low, currently 2 messages per hour. That's why real users never get their confirmation email.
Fix it by setting up custom SMTP in the project's Authentication settings, using the SMTP credentials of a provider where your domain is verified. Then raise the auth email rate limit to match your expected sign-ups. Our guide on Supabase not sending confirmation emails goes deeper.
How do I check emails actually arrive?
- Send each type to a Gmail address and an Outlook address you control.
- In Gmail, open the message, choose Show original, and check that SPF, DKIM and DMARC say PASS.
- Click every link in the email. Confirmation and reset links must land on your domain, not on the preview or
localhost; if they don't, see fixing Lovable login redirects. - Check the spam folder. A brand-new sending domain often lands there for the first days.
- Look at the logs: Lovable's Emails view, your Resend dashboard, or the auth logs, to see whether a missing email was never sent or sent and filtered.
If emails pass authentication but still go to spam, read why your app's emails go to spam.
How do I keep sending reliable?
- Send from a subdomain (
notify.) so problems don't affect your main inbox. - Keep transactional and marketing email separate.
- Don't send from a free mailbox address such as Gmail: you can't add SPF or DKIM records for a domain you don't own.
- Watch the hourly limits before a launch or a mass import, so sign-up emails aren't rejected.
Quick answers
Do I need Resend to send emails from Lovable? No. On paid plans, Lovable Emails sends both auth and app emails from your domain without an external account.
Why do confirmation emails only reach me? You're on an unconfigured email service: Supabase's default sends only to organization members, and Resend without a verified domain only to your own address.
Can I send email from the browser? Not safely. The API key would be public. Send from an edge function or server function.
Emails still not landing?
Email problems often combine DNS, auth settings and code. Start with the free health check, see how we fix Lovable apps and handle API integrations, or tell us what's failing.


