A React contact form with no backend to deploy
You don't need Express or a serverless function. Your React component sends the form to a Formbold endpoint, and each entry lands in your inbox and your dashboard. Free covers 250 submissions a month.
What does a working React contact form look like?
Like this: one component, useState for the loading and status text, and a fetch call to your endpoint. It runs in Vite, Remix, Create React App or any other React setup. Replace FORM_ID and drop it into a page.
How do I connect a React form to Formbold?
Create the form, paste the endpoint, test it. That's the whole setup.
Create a form
In All Forms, click Create New Form. Name it after the page it sits on, like Website Contact, so you can find it later.
Paste the endpoint into fetch
Copy https://formbold.com/s/FORM_ID from the Form Setup tab. Give every input a name attribute, because that name becomes the field label.
Submit once and check
Send a test from your dev server. The entry appears in Submissions within seconds, and the email follows.
What do you get without writing a backend?
The parts you'd otherwise build on Node: somewhere to store entries, an email sender, spam filtering and integrations.
No server code
No Express app, no Lambda and no SMTP credentials in your repo. The component is the only code you own.
Spam handled outside React
Basic Spam Filter is a toggle in Settings > Spam & Security. The component submits with fetch, so Custom reCAPTCHA is the captcha to use.
File uploads
From Starter: up to 5 files of 10 MB each per submission, with higher limits on Premium and Business.
Pipe entries to Slack or Sheets
On Starter and higher, connect Slack, Telegram, Notion or Google Sheets, or send a webhook.
React form questions
The questions that come up once the form is on the page.
Still have a question?
The docs cover setup, framework guides, integrations and spam protection, step by step.