The form backend
for AI-built websites
AI builders got very good at generating the form. They still don’t give it anywhere to go. MakeTheForm is the last mile: one endpoint that receives, filters, emails, and stores every submission: no Supabase, no Resend, no server.
An AI website builder generates the form’s interface but not the backend that receives it, so submissions have nowhere to land. A form backend is a hosted endpoint you point the form at. It spam-filters, emails, and stores each submission, so an AI-built site gets a production-ready contact form with no server code.
Why AI-built forms send nothing
The markup is almost always fine. The failure is in the three lines that decide what happens on submit, and it takes one of three shapes.
- 01
The handler blocks the submit and posts nowhere
The most common one by far. The generated handler calls preventDefault to stop the page navigating, sets a success message in state, and never makes a network request at all. The form looks like it works, the visitor is thanked, and nothing has left the browser. Open the network tab and submit: if no request appears, this is what you have.
Fix: Give the handler somewhere to post. Either restore the native submit by setting the form action to your endpoint, or add the fetch call the agent left out.
- 02
It invents an API key that does not exist
Agents assume any integration needs a secret, so they add an environment variable, wire it into a header, and leave you looking for a key to paste. There is nothing to find. A form endpoint is public by design because it ships inside client-side HTML, and a value visible in the page was never a credential.
Fix: Delete the invented variable and put the endpoint URL straight into the client code, where it belongs.
- 03
It wires the form to a backend it also invented
On builders that can scaffold server code, the agent sometimes writes an API route, a database table, and a mail integration to go with your contact form. It compiles and it deploys, and now you own a mail provider reputation, a spam problem, and a schema migration, for a form that collects a name and a message.
Fix: Point the form at an endpoint instead and delete the scaffolding. The three jobs it was doing are the ones you were trying not to take on.
None of these are bugs in the builder. An agent writing a form has no way to know which backend you intend to use, so it produces something that looks complete and defers the one decision it cannot make. Giving it the endpoint up front removes the guess, which is what the prompt below does.
The backend you’d otherwise build
Every AI builder eventually offers to scaffold this for you. Here’s what that actually signs you up to own, versus what the endpoint already handles.
| The job | Do it yourself | MakeTheForm |
|---|---|---|
| Receive the POST | Write + host a route or edge function | Built in |
| Stop spam | Add honeypot, captcha, rate limits yourself | Honeypot + Turnstile + rate limits |
| Email you | Wire Resend/SES, verify a domain, watch deliverability | Authenticated sending, sender in Reply-To |
| Store submissions | Provision a database, model a table, secure it | Searchable inbox + CSV export |
| Know it worked | Build logging + retry + alerting | Visible delivery timeline + retries |
One prompt, any builder
Paste this into your builder with your own endpoint URL. It pins the guardrails agents get wrong: inventing API keys, hiding the endpoint as a secret, or wiping the form on error.
Connect the existing contact form on this site to the MakeTheForm endpoint:
https://mtform.co/f/your-form-key
Requirements:
- Submit with fetch as JSON (Content-Type: application/json). Do not add a backend route.
- Keep the current design and markup structure. Do not restyle the form.
- Disable the submit button while the request is in flight.
- Treat any HTTP 2xx as success; show an inline success message and reset the form.
- On failure, show the message from the JSON response at error.message, and PRESERVE the values
the user already entered. Do not reset the form on error.
- Include a hidden honeypot field named exactly "_mtf_honeypot". It must be visually hidden with
position:absolute;left:-9999px, have tabindex="-1", autocomplete="off", and aria-hidden="true".
Never make it display:none, and never make it required.
- This endpoint URL is public and safe to put in client-side code. Do NOT invent, request, or
reference an API key, and do not move it into an environment variable.
- Do not add any analytics or logging of the submitted field values.Pick your builder
- LovableMake your Lovable contact form actually send
- Bolt.newGive your Bolt.new form a real backend
- v0Wire your v0 form to email in one step
Using a framework instead? See all platforms.
Frequently asked questions
→What is a form backend for an AI-built website?
It’s a hosted endpoint that receives your form’s submissions, filters spam, emails them to you, and stores them. AI builders generate the form’s interface but not this backend, so you point the form at an endpoint instead of writing and hosting server code.
→Why doesn’t my Lovable / Bolt / v0 form send anything?
Because the builder only created the front end. The submit button has nothing to POST to. Wiring the form to a form endpoint gives it a real destination that delivers and stores each submission.
→Do I need Supabase, Firebase, or Resend for a contact form?
Not for a contact or lead form. Those are worth it when you need your own database or full control of email. To simply receive submissions by email and keep a searchable copy, one endpoint is far less to build and secure.
→Is the endpoint safe to expose in AI-generated client code?
Yes. The public form key is a non-secret address designed for the browser. Your destination email never appears in the page source, and abuse is handled by rate limits, origin rules, and spam filtering.
→Which AI builders are supported?
Any that output standard HTML/JS: Lovable, Bolt.new, v0, Cursor, Replit, Framer, and more. Each has a dedicated guide with a copy-paste prompt, and they all POST to the same kind of endpoint.
Ship the backend in 3 minutes
Your AI builder did the hard-looking part. Give the form somewhere to go.
Create free endpoint