# Get every Lovable form submission in your inbox

Connect your Lovable contact, waitlist and quote forms to an endpoint with one prompt. Every submission is checked for spam, kept in an inbox and emailed to you. Works on Lovable's Free plan.

Updated Oct 29, 2026.

Lovable builds good-looking forms, but in many projects the submit handler only shows a "Message sent!" toast and clears the fields. Nothing leaves the browser, and Lovable has no inbox to catch it. The [Lovable contact form guide](/blog/lovable-contact-form) shows how to confirm that in the Network tab, and why Lovable Emails and Resend both need a domain you've verified with DNS records.

The fix here is a change to the submit handler. Lovable posts the form to a Nisuform endpoint, which filters spam, keeps every submission and emails you. Your design stays as it is, nothing new runs on Lovable's backend, and it works on Lovable's Free plan in both TanStack Start and React + Vite projects.

## Connect a form

### Get a prompt with your endpoint

[Create a form](https://app.nisuform.com) in Nisuform. On its **Setup** tab, choose **AI tool**, then **Your own styles**. The dashboard writes a prompt with your endpoint and field names filled in.

### Paste it into Lovable

Use the dashboard's prompt or one of the ones below. If the form has extra fields, like a phone number or a budget, list their names. Every field the form sends gets saved.

### Test in the preview, then publish

Wait two seconds after the form appears, then send. Faster submissions are dropped as bots. The message should reach your inbox and your email within seconds. Publish again so the live site gets the change.



## Prompts for other forms

Every prompt asks for the same four things: post from the browser, keep the field names, add the two spam fields, and only show success when the endpoint confirms it.

### Contact form

```text title="Prompt for Lovable"
My contact form shows a success message but doesn't send anything. Change it so it sends every submission to https://api.nisuform.com/s/YOUR_FORM_KEY.

- Send the form from the browser with fetch, as a POST with the header Accept: application/json. Use FormData and don't set Content-Type.
- Keep the field names name, email and message.
- Add a text input named _gotcha with tabIndex -1 and autoComplete off, hidden with the Tailwind class hidden, not type="hidden". Leave it empty.
- Add a field named _elapsed with the milliseconds between the form appearing and the submit.
- Read the JSON response. Show the success toast only when ok is true. When ok is false, show the message from the response as an error toast and keep what the visitor typed.
- Disable the submit button while the request is in flight.
- Don't add a database table, an edge function, a server function or an email API, and don't change the design.
```

### Waitlist signup

```text title="Prompt for Lovable"
Make the waitlist form on the landing page send every signup to https://api.nisuform.com/s/YOUR_FORM_KEY.

- POST from the browser with fetch, the header Accept: application/json and FormData as the body. Don't set Content-Type.
- Name the email input email.
- Add a hidden honeypot text input named _gotcha (Tailwind class hidden, tabIndex -1, autoComplete off) and a field named _elapsed with the milliseconds since the form appeared.
- When the JSON response has ok true, replace the form with "You're on the list." When ok is false, show its message under the input.
- Don't add a database table, an edge function or an email API, and keep the current design.
```

### Quote request

```text title="Prompt for Lovable"
Connect the quote request form to https://api.nisuform.com/s/YOUR_FORM_KEY.

- Give every input a name: name, email, company, budget, timeline and details. Send select and radio values as their visible labels.
- POST from the browser with fetch, the header Accept: application/json and FormData as the body.
- Add the hidden honeypot _gotcha and the _elapsed field, as for the contact form.
- Show a success state only when the JSON response has ok true. Otherwise show its message and keep the answers.
- Don't add any server code.
```

### File uploads

On Pro, a submission can include up to 5 JPEG, PNG, WebP, GIF or PDF files, 10 MB each by default. Add this line to any of the prompts:

```text title="Add to the prompt"
- Add a file input named attachments with multiple and accept="image/*,application/pdf". Send the form as FormData so the files go as multipart. Allow at most 5 files and show an error before sending if one is over 10 MB.
```

## When you also need Lovable Cloud

The endpoint covers forms whose job is to tell you something: contact, waitlist and quote requests. You get an email, an inbox you can search and export, and on Pro, delivery to Slack, Discord, Telegram or Google Sheets.

Use Lovable Cloud or Supabase when the app itself needs the data, like showing a list of bookings or creating user accounts. You can have both. On Pro, a [signed webhook](/docs/integrations/webhooks) sends each submission to your own backend as well, so you don't have to write an email step.

## Lock the form to your domains

Anyone can see the endpoint in your page's code. That's fine, because it only accepts new submissions. To stop other sites from posting to it, add your published `lovable.app` address and any custom domain to the form's [allowed websites](/docs/protection/access-rules), with and without `www` if your site answers on both. Do it after you've tested in the preview, or add the preview address as well.

## Bolt, v0, Replit and Cursor

The prompts above only ask for a `fetch` call and two hidden fields, so Bolt, v0 and Replit can follow them too. Cursor and Claude Code can go a step further with the [Nisuform MCP server](/docs/mcp), which lets them create the form and read its endpoint themselves.

## Guides

- [Lovable contact form not sending email: why and how to fix it](https://nisuform.com/blog/lovable-contact-form)
- [Set up forms with AI coding tools](https://nisuform.com/docs/ai-agents)
- [Nisuform MCP server](https://nisuform.com/docs/mcp)

## Frequently asked questions

### Does Lovable have a form backend?

No. Lovable builds the form, and its built-in backend can save each message to a database table, but it has no form inbox, spam filter or notification email. A form backend adds all three.

### Does this work on Lovable's Free plan?

Yes. The form posts from the browser to the endpoint, so it doesn't need Lovable Cloud, Lovable Emails, Supabase or a verified domain. Nisuform's Free plan covers 100 submissions a month across 3 forms.

### Can I connect more than one form in the same app?

Yes. Create a Nisuform form for each one, like contact, waitlist and quote request, and give Lovable each endpoint. Each form gets its own inbox, notifications and spam settings.

### Will Lovable break the form when I change the design later?

It can, if a later prompt rewrites the submit handler. Ask Lovable to keep the fetch call and the field names when you change the design. If a toast-only handler comes back, paste the prompt again.

### Does the same prompt work in Bolt, v0, Replit or Cursor?

Yes. The prompt describes a fetch call and a few hidden fields, which any AI coding tool can write in a React app. Tools that support MCP can also create the form and read its endpoint through the Nisuform MCP server.
