Lovable contact form not sending email: how to make it deliver
A Lovable contact form that shows success but sends nothing usually has no backend at all: the generated form validates fields and displays a toast without saving or emailing anything. If there is a backend function, the email provider key is missing, the sender is still Resend's onboarding@resend.dev test address, or the domain is not verified so messages land in spam. Check the network request on submit to see which.
What you'll see
A visitor fills in the form, clicks Send and sees "Thanks, we'll be in touch", or nothing at all. No email reaches you, and when you look in the database there is no saved message either. You may only discover this weeks later when someone mentions they wrote to you.
Why it happens
1. The form is only a front end
When you ask for "a contact form", the builder can produce the fields, validation and a success toast with no call to a server. Submitting does nothing, or only logs to the console.
2. The email key was never added
If a backend function exists, it needs the provider's API key, such as RESEND_API_KEY, stored as a secret. Without it the function errors out, and a careless UI still shows success.
3. Still sending from the test address
Resend's onboarding@resend.dev sender only delivers to the email address on your own Resend account. Anything else returns a 403 error saying you can only send testing emails to your own address.
4. Delivered, but into spam
Mail sent from a domain without SPF and DKIM records is easy for inbox providers to distrust. The message technically sends and quietly goes to junk.
How to fix it
- Open the live site, open DevTools > Network, fill in the form and click submit. If no request appears at all, the form has no backend and you need to ask Lovable to build one.
- If a request fires, click it and read the status. A 500 or a message about a missing key points at secrets; a 403 from Resend points at the sender or domain.
- Ask Lovable to save each submission to a table first and then send the email from a backend function. Saving first means a message is never lost, even when email fails.
- Add the provider key as a secret in the project, never in the code. Then verify your own domain in Resend by adding its DNS records, and change the from address to something like hello@yourdomain.com.
- Make the form honest: disable the button while sending, show success only after the server confirms, and show a clear error with an alternative contact if it fails.
- Send yourself a real test from a phone and a laptop, and check the spam folder as well as the inbox.
Prompt to paste into Lovable
My contact form at [page] must actually deliver. On submit: save the entry to a "contact_messages" table, then call a backend function that emails it to me@example.com via Resend using the RESEND_API_KEY secret and a from address on my verified domain. Show the success message only after the server confirms, show a clear error message if it fails, disable the button while sending, and add a honeypot field for basic spam protection.
How to check it's fixed
- Submit a real message on the live site and confirm it appears in the contact_messages table and in your inbox within a couple of minutes.
- Watch DevTools > Network during submit and check the request returns a 2xx status.
- Turn on DevTools offline mode and submit again: the form should show an error, not a thank-you.
What a QAlaunch scan shows for this
- Whether submitting the form empty shows validation messages, or silently does nothing.
- Console errors and failed requests on the page that holds the form.
- The scan never sends real data and cannot check your inbox, so it can point to a broken form but cannot prove delivery; do the real test above.
See exactly what a full report contains in the sample report.
Frequently asked questions
How can I tell if my form has a backend at all?
Submit it with DevTools > Network open. A working form makes a request to a function, Supabase or a form service. If nothing appears in the list when you click send, the form is decoration.
Do I need Resend, or can Lovable send email itself?
Lovable lists Resend among its integrations and it is the common route for app emails. Check Lovable's current integration docs for built-in options, since they change; whichever you use, verify your sending domain.
Why do test emails to me work but not to anyone else?
That is the signature of Resend's onboarding@resend.dev sender, which only delivers to your own account address. Verify a domain and send from it.
Rather have a QA engineer test it by hand?
If this is a site you're launching or handing to a client, I'll go through it by hand, including the Lovable-specific issues a scan can't reach, like logged-in flows.
- Up to 10 key pages tested by hand, not a scan
- Every flow a customer uses: forms, sign-up, checkout, booking
- Real mobile and desktop browsers
- A written report in plain language, with screenshots
- A 15-minute call to walk you through it
- 10 years of professional QA experience
Tell me about your site and I'll reply personally, usually the same day.
No payment now. I'll confirm scope and price first.
Related fixes
- Bolt.new emails not sending: contact forms and auth emails
- Base44 email not sending: forms, visitors and limits
- Lovable changes not showing on the live site: what to check
- Lovable site not showing on Google: causes and fixes
- Lovable custom domain not working: statuses, causes and fixes
- Lovable app shows no Supabase data: fixing Row Level Security
More for Lovable: all Lovable fixes · Lovable testing · 9 bugs every AI-built site ships with
Written by Waqas Ahmad, QA engineer with 10 years of professional testing experience. Last checked October 26, 2026.
Sources: Resend: 403 error with the resend.dev domain · Splitforms: add a contact form to Lovable · RapidDev: form submission errors in Lovable