Bolt.new Contact Form: Connect It to Formbold

Bolt.new can scaffold a whole site in one prompt, contact form included. This guide wires that form to Formbold so the messages actually reach you.

Why doesn't my Bolt.new contact form work?

Bolt builds the form and leaves the sending to you. Depending on the project, the button either does nothing, logs the data to the console, or Bolt suggests adding Supabase. A Formbold endpoint is the shorter route: one URL, and every message is stored and emailed to you.

What do I need first?

A Formbold form and its endpoint. Click Create New Form in All Forms, open the Form Setup tab and copy the URL, which looks like https://formbold.com/s/YOUR_FORM_ID. Free covers 250 submissions a month, which is plenty for a new site.

What prompt should I give Bolt?

Use Form Setup > Built with an AI Tool? and pick Bolt.new to get a prompt with your endpoint filled in. Or paste this into the Bolt chat:

1
2
3
4
5
6
7
8
9
Wire up the contact form so it sends real submissions.
POST the fields to https://formbold.com/s/YOUR_FORM_ID with fetch,
a JSON body, and the headers Content-Type: application/json
and Accept: application/json.
Every input needs a name attribute: name, email, message.
Show a success state only if response.ok is true, an error otherwise,
and disable the button while sending.
Don't add Supabase, a serverless function, Netlify Forms attributes
or any other backend. Only change the contact form component.

Why mention Netlify Forms?

Bolt deploys to Netlify, and it sometimes adds data-netlify="true" or a hidden form-name input to forms it builds. Those tell Netlify to capture the form itself. You don't want two services fighting over one form, so ask Bolt to leave them out, and delete them if they're already there.

How do I check what Bolt changed?

Open the form component in Bolt's code view, usually under src/components/. Look for three things:

  1. A fetch call to your exact endpoint, not YOUR_FORM_ID or an example domain.
  2. method: "POST" and both headers.
  3. A name on every input, or matching keys in the JSON body.

If Bolt wrapped the request in a try block that shows success no matter what, change it so success depends on response.ok. Otherwise visitors see "Thanks!" even when nothing was sent.

How do I test it?

Submit the form in Bolt's preview first. The preview runs in your browser, so the request goes straight to Formbold and the entry appears in Submissions within seconds. Then deploy and test once more on the live URL.

If nothing arrives, open the Network tab and look at the request to formbold.com/s/.... The status code and response body usually tell you what's wrong.

What should I set up in Formbold after that?

Two things. Turn on Basic Spam Filter in Settings > Spam & Security, since new sites get bot traffic within days. And if you'd like messages in Slack, Telegram or Google Sheets, connect them on the Integrations tab. Integrations are on Starter and higher, and they don't need any change to your Bolt project.

Last updated: October 19, 2026