# Formbold > Formbold is a form backend and form API for HTML, React, Next.js, Vue, Webflow and static websites. Point any form at a Formbold endpoint and it stores each submission, filters spam and forwards it to email, Slack, Google Sheets, Notion, webhooks and other apps, with no server code to write or host. Key facts: - Each form gets an endpoint like `https://formbold.com/s/YOUR_FORM_ID`. Set it as the form's `action` with `method="POST"`, or send a `fetch` request to it. - Every input needs a `name` attribute; fields without one are dropped. - Works the same on plain HTML pages and in React, Next.js, Vue, Angular, Svelte, Astro and other frameworks. - Submissions are visible in the Formbold dashboard and can be forwarded to email, Slack, Discord, Telegram, Google Sheets, Notion, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks. - Formbold has a REST API and an MCP server for AI assistants. - GDPR compliant: Formbold acts as a data processor, and every account is covered by a Data Processing Agreement with EU Standard Contractual Clauses (https://formbold.com/FormBold-DPA.pdf). Submissions are encrypted in transit and at rest and are never sold or used to train AI. - Plans and limits: https://formbold.com/pricing Quick start: ```html
``` --- # Getting Started with Formbold Source: https://formbold.com/docs Section: Docs / Introduction Connect a static HTML form or a frontend app to Formbold and start receiving submissions in a few minutes. ## What is Formbold? Formbold is a form backend: point any HTML or JavaScript form at your Formbold endpoint, and it stores each submission, filters spam and sends it to email, Slack, Google Sheets, webhooks and 8 other apps, with no server to run. ![Formbold form backend](#) It works the same way on a static HTML page as in a Next.js, React, Vue or Angular app, and the Free plan covers 250 submissions a month across 10 forms. ## How do I connect my first form? It takes five steps: ![Formbold dashboard](#) 1. Log in to the dashboard, open **All Forms** and click **Create New Form**. 1. Give the form a name you'll recognise, like "Website contact", and create it. Only you see this name. 1. Open the form and go to the **Form Setup** tab. Copy your endpoint, which looks like `https://formbold.com/s/YOUR_FORM_ID`. 1. Set your form's `action` to that endpoint and its `method` to `POST`. 1. Submit a test entry on your site and check that it shows up under **Submissions**. ![Form Setup tab with endpoint and code examples](#) The [Form Setup guide](/docs/form-setup) walks through that tab in more detail, including the prompt builder for AI tools like Lovable and v0.dev. ## What does a working HTML form look like? Here's a complete contact form wired to Formbold: ```html
``` ## How do I test it before launch? Use the **Test Form** tab on your form. It sends a real submission with four fields (Full name, Email, Subject and Message), so you can check your email and connected apps without touching your site. Test submissions count toward your monthly limit, so a few are fine but don't overdo it. More in [Test Your Form](/docs/test-form). ## Why are some fields missing from my submissions? Almost always because the input has no `name` attribute. Formbold keys each value by its `name`, so `name="email"` becomes the Email field in your submission. An input without one is ignored. Two more things to check: - Use HTML5 validation like `required` and `type="email"` so people fix typos before they submit. - If the form takes files, add `enctype="multipart/form-data"` to the `
` tag. File uploads need a Starter plan or higher. ## What should I set up next? Most people do these next, roughly in this order: - [Email notifications](/docs/email): choose who gets each submission, plus CC, BCC and the subject line. - [Spam protection](/docs/spam-protection): turn on the spam filter or use your own Google reCAPTCHA keys. - [Connecting apps](/docs/connecting-apps): send submissions to Slack, Google Sheets, Notion, Discord, Telegram or a webhook. - [Workspaces and teams](/docs/workspaces-teams): one workspace per client, with teammates as Admins or Members. - [MCP server](/docs/mcp-server): let Cursor, VS Code, Claude or Codex create forms, change settings, send test submissions and check form stats for you. --- # Set Up Your Form Endpoint Source: https://formbold.com/docs/form-setup Section: Docs / Introduction Everything on the Form Setup tab: your endpoint, the code examples, the test button and the prompt builder for AI tools. ## Where do I find my form endpoint? Open **All Forms**, click your form, and go to the **Form Setup** tab. Your endpoint is at the top, with a copy button next to it. It looks like this: ```bash https://formbold.com/s/YOUR_FORM_ID ``` The same URL appears on the form card in **All Forms** as the Form ID endpoint, so you can grab it from there too. ## What does my HTML form need? Three things, and they're the ones people miss most: 1. `action` set to your endpoint. 1. `method="POST"`. 1. A `name` on every input you want to keep. A field without a `name` is dropped, and you'll get an email with half the data. ```html
``` Use real names like `email` and `message`, not `field_1`. Those names become the labels in your notification emails and in the **Submissions** table, so you'll thank yourself later. ## Which code examples are on the Form Setup tab? The tab has copy-ready examples for **HTML**, **React**, **Vue**, **Next.js**, **Angular** and **Ajax**. Pick your stack, copy the snippet, and your endpoint is already filled in. The longer versions, with loading states and error handling, are in [Code Examples](/docs/code-examples). ## How do I send a test submission? Click **Send Test Submission** on the Form Setup tab. Formbold sends a sample entry to your form, so you can check your inbox and connected apps before your site is live. For a fuller test with your own values, use the [Test Form tab](/docs/test-form). > Test with a real inbox first. Send one test, open the email on your phone, and make sure it didn't land in spam. It's much easier to fix that now than after launch. ## Did an AI tool build your site? Use **Built with an AI Tool?** on this tab. Pick Lovable, Bolt.new, v0.dev, Cursor, ChatGPT or General, and Formbold writes a prompt with your endpoint in it. The full walkthrough, with the mistakes to check for, is in [Connect AI-Built Forms](/docs/ai-form-builders). ## Where do I go from here? Once a test submission shows up in **Submissions**, set up where it goes: email recipients on the Settings tab, or apps on the Integrations tab. The **Visit Docs** link on Form Setup brings you back here any time. --- # Test Your Form Before Going Live Source: https://formbold.com/docs/test-form Section: Docs / Introduction Send a real submission from the dashboard and check that email and your apps receive it, without touching your website. ## What is the Test Form tab for? It's the quickest way to check your setup end to end. You fill in a short form inside the dashboard, Formbold processes it like any other submission, and you see what your team will see. Open your form from **All Forms** and click the **Test Form** tab. ## Which fields does the test form send? Four: **Full name**, **Email**, **Subject** and **Message**. Fill them in with values you'll recognise, like your own name and "Test from dashboard". If your real form has other fields, such as phone or company, those won't be in the test. To test those, submit the form on your site, even if it's on a staging URL. ## What should I check after sending a test? Go through this list once, in this order: 1. The entry appears in **Submissions**, in the **Inbox** folder. 1. The notification email arrives at every address in **Recipient (TO)**, plus **CC** and **BCC** if you set them. 1. The email isn't in spam. If it is, mark it as not spam in your mail app so future ones come through. 1. Each connected app on the **Integrations** tab got the entry, for example a new Slack message or a new Google Sheets row. If the email doesn't arrive, open the Settings tab and check that **Email Notifications** is on in **Email Configuration**. ## Do test submissions count toward my limit? Yes. A test submission counts toward your monthly submission limit like any other. On the Free plan's 250 a month that rarely matters, but don't script a hundred tests. ## Should I delete test entries? It's a good habit before you hand a form to a client. Old "test test" rows make the Submissions inbox and exports look messy, and your client may think they're real leads. --- # Your Dashboard at a Glance Source: https://formbold.com/docs/dashboard-overview Section: Docs / Introduction Where everything lives in the Formbold dashboard, so you can find a setting in one click instead of five. ## What's on the Overview page? **Overview** is the first page you see after you log in. The four cards at the top show **total submissions**, **spam blocked**, **total forms** and **active forms**. Below them is a chart of the last 30 days. Further down are your recent forms and a row of quick links to templates, integrations, help, your forms and these docs. ## Where do I create and open forms? In **All Forms**. Click **Create New Form**, give it a name, and it's ready to use. You can switch between grid and list view and narrow the list with **All Time** and **Filter**. Each form card shows its name, when you created it, submissions this month and all time, and its endpoint. Open a form to get these tabs: | Tab | What you do there | | --- | --- | | Submissions | Read, star and export entries | | Form Setup | Copy your endpoint and code examples | | Analytics | Daily submissions, spam and countries | | Settings | Email, spam, domains, retention and more | | Integrations | Connect Slack, Google Sheets, webhooks and other apps | | Test Form | Send a test submission from the dashboard | ## What's in the sidebar? Everything outside a single form lives in the sidebar: | Sidebar item | What it's for | | --- | --- | | Workspace Settings | Name, logo, time zone, ownership | | Manage Team | Invite people and set their role | | Additional Emails | Addresses your forms can send to | | API & MCP | API tokens, MCP setup and the API guide | | Account Settings | Your name, email, password | | Billing & Usages | Plan limits, usage and invoices | | Help & Support | Community, FAQs and contact | The submission limit widget in the sidebar shows how much of this month's allowance you've used. Keep an eye on it in busy months, because submissions over the limit don't wait for you to notice. ## Is there a faster way to get around? Press **Cmd+K** (or **Ctrl+K** on Windows) to open search. Type a form name or a page, like "billing", and jump straight there. Once you have more than a handful of forms, it beats scrolling. --- # Account Management & Security Source: https://formbold.com/docs/account-security Section: Docs / Account & Security Change your name, email, logo and password, or delete your account, from Account Settings. ## Where do I change my account details? Open **Account Settings** in the dashboard sidebar. This page is about you as a person. Workspace details, like its name and time zone, are under **Workspace Settings** instead. ![Account Settings in Formbold](#) ## What can I change in Account Settings? Your **logo**, your **name** and your **email**. The email is the one you log in with, so double-check it before you save. ## How do I change my password? Use **Change password** on the same page. Pick something long that you don't use anywhere else, and store it in a password manager. If teammates need access, invite them from **Manage Team** rather than sharing your login. ## How do I delete my Formbold account? Use **Delete account** at the bottom of Account Settings. This can't be undone. Export any submissions you need first, and if you own a workspace other people use, transfer it to them in **Workspace Settings** before you delete. ## Where are API tokens and extra email addresses? They have their own pages in the sidebar: - **Additional Emails** holds the addresses your forms can send notifications to. See [Additional Emails](/docs/linked-emails). - **API & MCP** is where you create and revoke API tokens and set up the MCP server. See [API Tokens](/docs/api-tokens). - **Billing & Usages** shows your plan limits and invoices. See [Billing and Plans](/docs/billing-plans). --- # Additional Emails Source: https://formbold.com/docs/linked-emails Section: Docs / Account & Security Add the email addresses your forms can send notifications to, so they show up in Recipient (TO), CC and BCC. ## What are Additional Emails? They're the addresses, other than your own login email, that your forms are allowed to send to. A client's inbox, your sales alias, a shared support address. Once you add one, it shows up in **Recipient (TO)**, **CC** and **BCC** on every form's **Email Configuration** card. ![Additional Emails page in Formbold](#) ## How do I add an email address? 1. Open **Additional Emails** in the dashboard sidebar. You can also get there from **Manage workspace emails** under Recipient (TO) on a form. 1. Enter the address, like `sales@yourclient.com`, and add it. 1. If Formbold sends a confirmation email, ask the owner of that inbox to click the link in it. 1. Open a form's Settings tab and pick the address in **Recipient (TO)**, **CC** or **BCC**. Add the address before you hand a form over to a client. It saves a back-and-forth on launch day. ## How many addresses can I add? The counter at the top of the page shows how many you've used, for example "0/100" on Premium. The limits per plan are: | Plan | Additional emails | | --- | --- | | Free | 2 | | Starter | 50 | | Premium | 100 | | Business | 300 | Sending one form to more than one recipient needs **Starter or higher**. ## How do I remove an address? Delete it from the **Additional Emails** page. Do this when someone leaves a client team or a project ends, so form data stops going to an inbox nobody watches. Then check the forms that used it still have a recipient. --- # API Tokens & Authentication Source: https://formbold.com/docs/api-tokens Section: Docs / Account & Security Create, use and revoke the API tokens that authenticate your requests to the Formbold REST API and MCP server. ## What are Formbold API tokens for? An API token lets your code or AI assistant act on your Formbold account without your password. You send it with each request to the [REST API](/docs/api-reference) or the [MCP server](/docs/mcp-server). You might give one to a backend job that copies new submissions into your database, or to Cursor so it can create and manage your forms through MCP. API access is included on **every plan, including Free**. Treat tokens like passwords. Anyone who has one can read your submissions. ## How do I create an API token? 1. Open **API & MCP** in the dashboard sidebar. 1. Go to the **API Tokens** tab. 1. Create a new token and give it a name that says where it's used, like "Production CRM sync". 1. Copy the token right away and store it in a password manager or your server's environment variables. Make one per app or machine. Then, when you retire a server, you revoke its token and nothing else breaks. ## How do I use the token in a request? Send it in the `Authorization` header with the `Bearer` scheme: ```bash Authorization: Bearer YOUR_TOKEN ``` A quick way to check that a token works is to fetch a form's submissions. Replace 3Vy25 with your own form ID: ```bash curl -H "Authorization: Bearer YOUR_TOKEN" https://api.formbold.com/api/forms/3Vy25/submissions ``` The REST API has one endpoint today: | Method | Endpoint | What it does | | --- | --- | --- | | GET | https://api.formbold.com/api/forms/:formId/submissions | Lists a form's submissions (turn on HTTP API for that form first) | The full details, with parameters and responses, are in the [API reference](/docs/api-reference). ## How do I use the token with the MCP server? Send the same header to `https://api.formbold.com/mcp`. Most clients take it in a `headers` field next to the server URL. Setup for Cursor, VS Code, Claude Code, Claude Desktop and Codex is in [MCP Server](/docs/mcp-server). If the token is missing, the MCP server answers 401 with "Authentication token is required for Formbold MCP access." If it's wrong, expired or revoked, the message is "Invalid or expired Formbold MCP API token." ## How do I revoke a token? Open **API & MCP**, go to **API Tokens**, and revoke the token you no longer need. Any app still using it gets a `401 Unauthorized` from then on, so update that app with a new token first if it should keep working. ## How do I keep tokens safe? - Never commit tokens to Git, and never put one in client-side JavaScript. Anyone can read those. - Store it in an environment variable, like `process.env.FORMBOLD_API_TOKEN`. - Revoke any token you think has leaked. Then create a new one. It takes a minute. The **API Guide** tab on the same page has a short version of this, if you want it handy while you work. --- # Billing, Invoices & Plan Quotas Source: https://formbold.com/docs/billing-plans Section: Docs / Account & Security Compare Formbold plans, check your usage in Billing & Usages and download invoices. ## Which Formbold plans are there? Four: **Free**, **Starter**, **Premium** and **Business**. Every plan includes the REST API and the MCP server. Paid plans add integrations, file uploads and higher limits. ![Formbold plans and limits](#) ## What does each plan include? | Feature | Free | Starter | Premium | Business | | --- | --- | --- | --- | --- | | Price | $0 | $8/month, or $6/month billed yearly | $20/month, or $15/month billed yearly | $40/month, or $30/month billed yearly | | Monthly submissions | 250 | 3,000 | 10,000 | 30,000 | | Forms | 10 | Unlimited | Unlimited | Unlimited | | Workspaces | 1 | 1 | 5 | Unlimited | | Team members | 1 | 2 | 5 | 20 | | Additional emails | 2 | 50 | 100 | 300 | | File uploads | No | 5 files, 10 MB each | 10 files, 25 MB each | 10 files, 50 MB each | | API and MCP access | Yes | Yes | Yes | Yes | | Integrations and webhooks | No | Yes | Yes | Yes | | Custom redirect | No | Yes | Yes | Yes | | Auto Responder | No | No | Yes | Yes | | Allowed domains, custom subject, multiple recipients | No | Yes | Yes | Yes | | Export submissions (CSV) | No | Yes | Yes | Yes | | Remove Formbold branding | No | No | Yes | Yes | | Priority support | No | Yes | Yes | Yes | ## How do I check my usage? Open **Billing & Usages** in the sidebar. **Current Plan Limits** shows three meters: monthly submissions, form creation and additional (target) emails. The submission limit widget in the sidebar shows the same monthly count on every page. If you're close to the limit near the end of a month, upgrade before it runs out rather than after. It's one less thing to explain to a client. ## How do I upgrade my plan? Click **Upgrade Plan** in the dashboard header, or compare plans on the [pricing page](/pricing). Payments are handled by Paddle. ## How do I download invoices? Your invoices are listed on **Billing & Usages**. Click download next to any invoice to save a copy for your records or your accountant. ![Invoice history](#) ## Is yearly billing cheaper? Yes, by 25% on every paid plan: $6 instead of $8 a month on Starter, $15 instead of $20 on Premium, and $30 instead of $40 on Business. --- # Workspaces & Team Collaboration Source: https://formbold.com/docs/workspaces-teams Section: Docs / Workspaces & Teams Keep each client or project in its own workspace, with its own forms, settings and team. ## What is a Formbold workspace? A workspace is a separate space for one client, project or department. Each one has its own forms, submissions, settings and team. If you build sites for clients, make one workspace per client and you'll never send Client A's leads to Client B. ![Workspace switcher in Formbold](#) ## How many workspaces and team members do I get? | Plan | Workspaces | Team members | | --- | --- | --- | | Free | 1 | 1 | | Starter | 1 | 2 | | Premium | 5 | 5 | | Business | Unlimited | 20 | The **Manage Team** page shows how many seats you've used, like "01/05" on Premium. ## How do I move a form to another workspace? Open the form, go to **Settings**, and use **Move Form** in the **General** card. Pick the target workspace and confirm. Afterwards, open the form's **Form Setup** tab and check that the endpoint matches what your website posts to. ## How do I work with my team? Invite people from **Manage Team** with their email address and a role, **Admin** or **Member**. Everyone logs in with their own account, so nobody shares passwords. Details are in [Team Roles](/docs/team-roles). ## What can I change for each workspace? Name, logo, description and time zone, plus Workspace Activation, Transfer Ownership and Delete Workspace. See [Workspace Settings](/docs/workspace-settings). --- # Workspace Settings & Configuration Source: https://formbold.com/docs/workspace-settings Section: Docs / Workspaces & Teams Set your workspace's name, logo, description and time zone, switch it on or off, transfer ownership, or delete it. ## Where are workspace settings? Open **Workspace Settings** in the dashboard sidebar. Everything here applies to the workspace you're in right now, so check the workspace name at the top before you change anything. ![Workspace Settings page](#) ## How do I change the workspace name, logo and description? Edit them at the top of Workspace Settings. Your team sees the **name** and **logo** when they switch workspaces, so use the client's or project's real name and logo. That makes it hard to open the wrong one. The **description** is a short note for your team, like "Acme marketing site forms, owned by Sara". ## How do I set the workspace time zone? Pick your zone in **Time zone** and click **Save timezone**. It has its own save button, separate from the rest of the page, so don't skip it. Set it to where the people reading the submissions are. "Submitted at 3:00" is only useful if everyone agrees which 3:00. ## What does Workspace Activation do? **Workspace Activation** switches the whole workspace on or off. Read the note next to the control before you switch off a workspace that has live forms on a website. ## How do I transfer workspace ownership? Use **Transfer Ownership**. Pick the teammate who should own the workspace and confirm. This is the right move when you hand a finished project to a client: invite them, transfer ownership, and they get full control. ## How do I delete a workspace? Use **Delete Workspace** at the bottom of the page. It deletes the workspace's forms and submissions for good. Export what you need first, or move individual forms to another workspace with **Move Form** in each form's General settings. ![Transfer Ownership and Delete Workspace](#) --- # Team Roles & Permissions Source: https://formbold.com/docs/team-roles Section: Docs / Workspaces & Teams Invite teammates and clients to a workspace as an Admin or a Member, without sharing your login. ## How do I invite someone to my workspace? Open **Manage Team** in the dashboard sidebar. ![Invite form on Manage Team](#) 1. Enter the person's email address. 1. Choose a role: **Admin** or **Member**. 1. Send the invite. They join with their own Formbold account. The **Members** list shows everyone in the workspace, with a counter like "01/05" for the seats you've used. ## Which roles are there? Two you can invite people as, plus the owner. The **owner** is the person who created the workspace, or who received it through **Transfer Ownership**. The owner controls ownership and can delete the workspace. An **Admin** is for people who help you run the workspace, like a project lead or an agency partner. A **Member** is for people who work with forms and submissions day to day, like a client's sales team. When in doubt, start someone as a Member. It's easy to promote a person later, and awkward to take access back. ## How many people can I add? It depends on your plan: 1 team member on Free, 2 on Starter, 5 on Premium and 20 on Business. Need more seats? Upgrade from the **Upgrade Plan** button. ![Members list on Manage Team](#) ## How do I find a teammate in a long list? Use the filters above the **Members** table. On a busy agency workspace, filtering by role is the quickest way to check who still has Admin access. --- # Form Settings Source: https://formbold.com/docs/form-settings Section: Docs / Form Settings A tour of your form's Settings tab, card by card: General, Email Configuration, Spam & Security, Allowed Domains, Auto Responder, Advanced Options and Danger Zone. ## Where are my form's settings? Open the form from **All Forms** and click the **Settings** tab. Settings are per form, so changing one form never affects another. The cards below appear in the same order as in the dashboard. ## What's in the General card? ![General settings card](#) **Form name** is for you and your team. Visitors never see it, so name forms by site and purpose, like "Acme: Contact". **Form Enabled** switches the form on or off. When it's off, Formbold rejects new submissions. Use it to pause an old form instead of deleting it. **Submission Archive** decides whether Formbold stores submissions. Turn it off and submissions are still sent to email and your apps, but **file uploads are not stored**. More in [Data Retention and Submission Archive](/docs/data-retention). **Move Form** moves the form to another workspace. Handy when a client project grows into its own workspace. After a move, open **Form Setup** and check the endpoint your site uses. ## What's in Email Configuration? This is where you set who gets an email for each submission: **Recipient (TO)**, **CC**, **BCC**, **Sender Name**, **Email Subject**, the **Email Branding** logo and a **Preview** button. It also holds **Redirect URL** and the **HTTP API** toggle. ![Email Configuration card](#) Each field is explained in [Email Notifications](/docs/email). Two quick notes on plans: multiple recipients, custom subjects and redirects need **Starter or higher**, and removing Formbold branding needs **Premium or Business**. The logo can be JPEG, PNG, WebP or SVG, up to 2 MB. ## What's in Spam & Security? Three toggles: **Basic Spam Filter**, **Automatic reCAPTCHA** and **Custom reCAPTCHA**, which takes your own **Site Key** and **Secret Key**. Turn on the basic filter for every form. The setup steps are in [Spam Protection](/docs/spam-protection). ## How do Allowed Domains work? Turn on **Allowed Domains** and list the sites that may submit to the form, such as `yourdomain.com` and `staging.yourdomain.com`. Submissions from anywhere else are rejected. It's on **Starter and higher**. ![Allowed Domains toggle](#) List every domain the form really lives on, including `www` if you use it. A missing staging domain is the usual reason a test "doesn't work". ## How do I send an automatic reply? Turn on **Auto Responder**. Formbold then emails the person who submitted the form, which is a nice way to confirm you got their message. It's on **Premium and Business**. ![Auto Responder setting](#) Your form needs an input with `name="email"`, or Formbold has nowhere to send the reply. Keep the message short and set expectations, like "We reply within one working day." Turn on spam protection too, so you're not sending replies to bots. ## How do file uploads work? Add `enctype="multipart/form-data"` to your form and a file input with a `name`: ```html
``` File uploads are on **Starter, Premium and Business**. Starter takes up to 5 files of 10 MB each per submission, Premium up to 10 files of 25 MB, and Business up to 10 files of 50 MB. Files are stored with the submission, so keep **Submission Archive** on for forms that take uploads. ## What's in Advanced Options? ![Advanced Options card](#) **Email Grouping** puts notifications with the same subject into one thread in your mail app. **Intro text** adds a line to the top of each notification email. You can use `+name`, `+email` and `+form` in it. **Data retention** sets how long submissions are kept: 7 days, 30 days, 3 months, 6 months, 1 year, 2 years, 3 years or Never. See [Data Retention](/docs/data-retention). ## How do I delete a form? Use **Danger Zone** at the bottom of the Settings tab. Deleting a form removes it and all its submissions for good. If you might need the data, export it from **Submissions** first, or just switch **Form Enabled** off. ## Where did submissions and analytics go? They have their own guides now: [Manage Form Submissions](/docs/submissions) and [Form Analytics](/docs/form-analytics). --- # Email Notifications Source: https://formbold.com/docs/email Section: Docs / Form Settings Choose who gets an email for each submission and what that email looks like. It's all in the Email Configuration card on your form's Settings tab. ## Where do I set up email notifications? Open your form, click the **Settings** tab and find the **Email Configuration** card. Email is built in. You don't connect it as an app, and it works on every plan. ![Email Configuration card in form settings](#) Make sure the **Email Notifications** toggle is on. If it's off, submissions are still saved and still go to your connected apps, but nobody gets an email. ## How do I choose who receives each submission? Use **Recipient (TO)**. It's a multi-select, so you can pick more than one address. Sending one form to several recipients needs **Starter or higher**. The list only shows addresses you've added to your account. To add a new one, click **Manage workspace emails** under the field, or open **Additional Emails** in the sidebar. See [Additional Emails](/docs/linked-emails). ## How do CC and BCC work? **CC** sends a visible copy to another address. **BCC** sends a hidden copy, which is handy for an archive inbox or a manager who wants to see volume without being on every reply thread. My advice: put the person who actually replies in TO, and everyone else in CC or BCC. When three people are all in TO, nobody is sure who should answer. ## Can I change the sender name and subject line? Yes. **Sender Name** is the name people see in their inbox, like "Acme Website". Use something your team will recognise at a glance. **Email Subject** sets the subject line of each notification. Custom subjects are available on **Starter and higher**. A subject that names the form, like "New demo request (website)", makes inbox filters easy to set up. ## What is the intro text, and which tokens can I use? **Intro text** is a short line at the top of each notification email. You'll find it under **Advanced Options** on the Settings tab. You can insert three tokens: - `+name` adds the submitter's name - `+email` adds the submitter's email - `+form` adds the form name For example: "New message from +name (+email) on +form". This only works if your form fields are actually called `name` and `email`. ## Can I group notification emails into threads? Turn on **Email Grouping** under **Advanced Options**. Emails with the same subject are grouped into one thread in your mail app. That's tidy for a busy form, but if you triage each lead separately, leave it off. ## How do I add my logo to notification emails? Upload it under **Email Branding** in Email Configuration. The logo can be a **JPEG, PNG, WebP or SVG** file, up to **2 MB**. A wide, short logo on a transparent background looks best in most mail apps. Removing Formbold branding from emails is part of the **Premium and Business** plans. ## How do I preview the email before going live? Click **Preview** in Email Configuration to see the email with your current settings. Then send a real one from the [Test Form tab](/docs/test-form) and open it on your phone. Mobile mail apps are where layouts usually break. ## What else is in Email Configuration? Two settings that aren't about email but sit in the same card: - **Redirect URL** sends people to your own thank-you page after they submit a plain HTML form. Available on **Starter and higher**. - **HTTP API** allows programmatic access to this form's submissions. Turn it on if you'll read submissions with the [REST API](/docs/api-reference) or the MCP server. ## Why didn't my notification email arrive? Check these in order. First, that **Email Notifications** is on. Second, that the address is in **Recipient (TO)**. Third, your spam folder. Most missing emails are in one of those three places. If the submission isn't in **Submissions** either, the problem is on the form side, so check your `action` URL. --- # Manage Form Submissions Source: https://formbold.com/docs/submissions Section: Docs / Form Settings Read, sort and export the entries your form receives, and keep spam out of your way. ## Where do I see my form submissions? Open **All Forms** and click **View Submissions** on a form card. Or open the form and pick the **Submissions** tab. A **New** badge on the card, like "1 New", tells you there's something you haven't read. ![Submissions tab in the Formbold dashboard](#) ## What do the Inbox, Unread, Starred and Spam folders mean? Every form has four folders on the left of the Submissions tab. - **Inbox** holds every submission that passed the spam check. - **Unread** shows only the ones nobody has opened yet. It's the best place to start your day. - **Starred** is your shortlist. Star the leads you need to follow up on and they stay here. - **Spam** holds what Formbold's spam check caught. Look through it now and then, especially in the first week after launch, in case a real message got caught. ## How do I read the submissions table? Each row shows **#**, **Date**, **TID**, **Name**, **Message** and **Action**. The Action column holds what you can do with that row. The table is paginated, so use the page controls at the bottom on busy forms. The submission count on a form card in **All Forms** adds up Inbox and Spam. If that number looks high next to your Inbox, check the Spam folder before you worry. ## How do I filter submissions by date? Use the **All Time** control above the table to narrow the date range, and **Filter** for other conditions. Click **Refresh** to load anything that came in while the page was open. The table doesn't update on its own. If you see "No submissions to display" for a moment, wait a second. That message can flash while the table loads. ## How do I export submissions to CSV? Click **Export** above the table. You get a CSV file you can open in Excel, Numbers or Google Sheets. Export is available on **Starter, Premium and Business**. On Free you can still read every submission in the dashboard. Set the date range before you export. A client who asks for "last month's leads" doesn't want three years of data. ## Can I get submissions somewhere else automatically? Yes, and it's usually better than exporting by hand every week. Send each entry to Google Sheets, Slack, Notion or your own server from the **Integrations** tab. See [Connecting Apps](/docs/connecting-apps). How long Formbold keeps submissions is up to you. That's set per form under [Data retention](/docs/data-retention). --- # Data Retention and Submission Archive Source: https://formbold.com/docs/data-retention Section: Docs / Form Settings Decide whether Formbold stores your submissions, and for how long. ## How long does Formbold keep my submissions? As long as you tell it to. Each form has its own **Data retention** setting. Open the form, go to **Settings**, and find it under **Advanced Options**. You can pick one of these: | Option | What happens | | --- | --- | | 7 days | Submissions older than 7 days are deleted | | 30 days | Older than 30 days are deleted | | 3 months | Older than 3 months are deleted | | 6 months | Older than 6 months are deleted | | 1 year | Older than 1 year are deleted | | 2 years | Older than 2 years are deleted | | 3 years | Older than 3 years are deleted | | Never | Submissions are kept until you delete them or the form | Check what your form is set to before you assume anything. The forms we looked at were on 3 years. ## Which retention period should I pick? Keep data only as long as you need it. A contact form that feeds a CRM or Google Sheets rarely needs more than 30 days in Formbold, because the real record lives elsewhere. A job application form might need 6 months or a year. If you have a privacy policy that promises a deletion window, set the form to match it. It's an easy thing to get right, and it's awkward to explain if it's wrong. > Export what you need before you shorten the retention period. Older entries are deleted once they fall outside the new window, and you can't undo that. ## What does Submission Archive do? **Submission Archive** sits in the **General** card on the Settings tab. It controls whether Formbold stores submissions at all. With it on, every entry is saved and shows up in **Submissions**. With it off, Formbold still sends each submission to your email and connected apps, but doesn't keep a copy. The dashboard's own warning matters here: **if Submission Archive is off, file uploads are not stored.** If your form takes attachments, like CVs or invoices, leave the archive on. ## When should I turn Submission Archive off? When you never want the data to sit on Formbold. A common case is a form that sends straight to your own server through a webhook, where your database is the only copy you want. Test it first. Send one submission with the archive off and make sure it arrives everywhere it should, because there's no copy in the dashboard to fall back on. --- # Form Analytics Source: https://formbold.com/docs/form-analytics Section: Docs / Form Settings See how many submissions a form gets each day, how much of it is spam, and which countries it comes from. ## What does the Analytics tab show? Open a form and click **Analytics**. You'll see two things: 1. A chart of **daily submissions over the last 30 days**, with spam shown separately from real submissions. 1. **Submissions by country**, so you can see where your entries come from. It counts submissions, not page views. Formbold only sees the form when someone sends it, so there's no conversion rate here. If you need views and conversions, use your site analytics tool alongside it. ## How can I use the daily chart? The chart is most useful for spotting changes. A few patterns to watch for: A sudden drop to zero usually means something broke on your site, like a changed field name or a deploy that removed the form. Send a test from the [Test Form tab](/docs/test-form) to rule out Formbold, then check your site. A spike in spam means a bot found the form. Turn on **Custom reCAPTCHA** in **Spam & Security** if you haven't already. See [Spam Protection](/docs/spam-protection). A steady rise after a campaign is the good kind. Compare it with the campaign dates. ## What is "submissions by country" good for? It shows where your entries come from. It's a quick sanity check: if you sell only in Germany and most submissions come from somewhere you don't serve, look at the Spam folder and your spam settings. ## Where are the totals for all my forms? On **Overview**, the first page in the sidebar. It shows total submissions, spam blocked, total forms and active forms across your workspace, plus a 30-day chart. See [Your Dashboard at a Glance](/docs/dashboard-overview). --- # Spam Protection Source: https://formbold.com/docs/spam-protection Section: Docs / Spam Protection Block spam with Formbold's Basic Spam Filter, Automatic reCAPTCHA or your own Google reCAPTCHA keys. All three live in Spam & Security. ## Where are the spam settings? Open your form, click **Settings** and scroll to **Spam & Security**. You'll find three toggles there: **Basic Spam Filter**, **Automatic reCAPTCHA** and **Custom reCAPTCHA**. ![Spam & Security settings in Formbold](#) Anything Formbold flags as spam goes to the **Spam** folder in **Submissions**, not your Inbox. Check that folder once in a while, especially in the first week after you change these settings. ## What does the Basic Spam Filter do? It checks each submission on our servers, so your visitors don't see a puzzle or a checkbox. Turn it on for every form. There's no downside, and it catches a lot of the obvious junk. ## When should I use Automatic reCAPTCHA? When you want a reCAPTCHA check without setting anything up. Formbold adds the check itself, with no keys and no code changes. It's designed for standard HTML forms that post straight to your endpoint. If your form submits with `fetch()` or Ajax, use Custom reCAPTCHA instead. ## How do I set up Custom reCAPTCHA with my own keys? The dashboard marks Custom reCAPTCHA as **recommended**, and it's the option I'd pick for any form that gets real traffic. It works with plain HTML posts and with `fetch()` requests. ![Custom reCAPTCHA Site Key and Secret Key fields](#) 1. Go to the Google reCAPTCHA Admin Console at https://www.google.com/recaptcha/admin. 1. Register your site. Choose **reCAPTCHA v2**, the "I'm not a robot" checkbox, and add your domain. Add `localhost` too if you test locally. 1. Copy the **Site Key** and the **Secret Key**. 1. In Formbold, open **Settings > Spam & Security** and turn on **Custom reCAPTCHA**. 1. Paste the **Site Key** and **Secret Key** into their fields and save. 1. Add the reCAPTCHA script and widget to your form, as below. The **Learn How** link next to the toggle brings you back to these steps. ```html
``` The Site Key goes in your HTML. The Secret Key goes only into Formbold. Never put the Secret Key in your page. ## Why are real submissions failing after I added reCAPTCHA? Usually the domain isn't registered in the Google console. Add every domain that serves the form, including `www` and staging. The other common cause is pasting the keys the wrong way round, so check that the Site Key and Secret Key are in the right fields. ## Can I limit which websites can use my form? Yes. **Allowed Domains**, just below Spam & Security, rejects submissions that come from sites you haven't listed. It's on **Starter and higher**. See [Form Settings](/docs/form-settings). ## Do webhooks receive spam? Not by default. The Webhook dialog has a separate **Receive submissions marked as spam** checkbox, off unless you turn it on. See [Webhooks](/docs/webhooks). --- # Connecting Apps & Integrations Source: https://formbold.com/docs/connecting-apps Section: Docs / Connecting Apps Send FormBold submissions to chat, spreadsheets, CRMs, automation tools and your own server. ## Which apps can FormBold send submissions to? Eleven apps are on your form's **Integrations** tab, and email is built in on top of that. Email works on every plan. The apps need **Starter, Premium or Business**. ![Integrations tab in FormBold](#) | App | Category | Good for | | --- | --- | --- | | Email | Built in | Notifications, set up in Settings > Email Configuration | | Slack | Chat | Posting each submission to a team channel | | Google Sheets | Spreadsheet | A new row per submission | | Notion | Productivity | A new page in a Notion database | | Telegram | Chat | Alerts on your phone or in a group | | Discord | Chat | Messages in a server channel | | Mailchimp | Email marketing | Adding subscribers to an audience | | Zendesk | Support | Turning messages into tickets | | Make | Automation | Multi-step scenarios | | Zapier | Automation | Thousands of other apps | | HubSpot | CRM | Creating contacts from leads | | Webhook | Developer | Sending JSON to your own URL | ## How do I connect an app? Open your form, click the **Integrations** tab, find the app and click **Connect**. Follow the steps in the dialog that opens. Each app has its own guide in the sidebar. Then send one submission from the **Test Form** tab and check that it arrived. Five seconds of testing beats finding out a week later that the Slack channel was wrong. ## What happens when a submission comes in? FormBold runs your spam and domain checks first. If the submission passes, it's saved and sent to every app you've connected on that form. Apps work independently, so if one is down the others still get the submission. Credentials for connected apps are stored encrypted. ## Should I use a webhook or a built-in app? Use the built-in app if one exists for your tool. It's less work and nothing to host. Use a [webhook](/docs/webhooks) when the data needs to go into your own system, or through Make or Zapier when you need several steps. --- # Slack Integration Source: https://formbold.com/docs/slack Section: Docs / Connecting Apps Receive instant notifications in any public or private Slack channel when visitors submit your form. ## Overview Keep your entire sales, support, or engineering team updated in real time by piping incoming submissions into a dedicated Slack channel. ![Slack Integration Modal](#) ## Requirements - An active Formbold form. - A Slack workspace with administrative or integration permissions to install apps. - A designated public or private Slack channel (e.g., #contact-leads or #support-tickets). ## Step-by-Step Connection Guide 1. In your Formbold dashboard, navigate to the 'Integrations' tab. 1. Locate 'Slack' in the integrations catalog and click 'Connect'. 1. You will be redirected to the secure Slack authorization screen. 1. Select your Slack workspace in the top right corner. 1. Choose the destination channel where submission alerts should be posted. 1. Click 'Allow' to grant Formbold permission to send messages. 1. You will be returned to Formbold with Slack marked as 'Connected'. ## Testing Your Slack Integration Submit a test message through your frontend form. Within seconds, a formatted message card displaying all submitted fields will appear in your chosen Slack channel! ## Managing or Disconnecting To change the target channel or disconnect Slack, click the 'Configure' or 'Disconnect' button on the Slack card in your Integrations tab. --- # Google Sheets Integration Source: https://formbold.com/docs/google-sheets Section: Docs / Connecting Apps Add every form submission as a new row in Google Sheets, so you can track, filter and report on it. ## Overview Google Sheets is one of the most flexible tools for analyzing leads, sharing data with non-technical stakeholders, and building lightweight tracking dashboards. Formbold's direct Google Sheets connector synchronizes submissions in real-time. ![Google Sheets Modal](#) ## Key Benefits - Automatic Column Matching: Formbold automatically creates column headers matching your form input names. - Timestamp Tracking: Every entry is timestamped automatically. - Instant Sync: New submissions appear in your spreadsheet in under 2 seconds. ## Step-by-Step Connection Guide 1. Open your Formbold form and navigate to the 'Integrations' tab. 1. Click on the 'Google Sheets' card. 1. Click 'Sign in with Google' and grant Formbold permission to access Google Drive and Sheets. 1. Choose whether to create a new spreadsheet automatically or select an existing Google Sheet. 1. Click 'Save and Activate'. ## Testing and Verifying Open the linked Google Sheet in your browser and submit a test entry from your form. A new row will populate immediately containing all the submitted form field values. --- # Notion Integration Source: https://formbold.com/docs/notion Section: Docs / Connecting Apps Sync web form responses directly into a structured Notion database with customized property mapping. ## Overview Send contact requests, job applications, bug reports and survey responses straight into a Notion database. ## Step 1: Prepare Your Notion Database Before connecting, create a database in Notion with properties that correspond to your form fields. For example: - Title property: 'Name' or 'Submission' - Email property: 'Email Address' - Text property: 'Message' or 'Details' - Phone property: 'Phone Number' (optional) - Created Date property: 'Submitted At' ## Step 2: Authorize Notion in Formbold 1. In Formbold, go to the 'Integrations' tab and click 'Notion'. ![Notion Modal](#) 1. Click 'Connect to Notion' to launch the OAuth authorization screen. 1. Select the Notion workspace and grant access to the specific page containing your database. 1. Click 'Allow Access'. ## Step 3: Configure the Field Mapper 1. Select your target database from the dropdown menu. 1. Use the Field Mapper to link each Formbold form input (e.g. name, email, message) to its matching Notion property. 1. Click 'Save Integration'. ## Testing Your Integration Submit a test entry on your frontend form and verify that a new page row appears instantly in your Notion database. --- # Telegram Integration Source: https://formbold.com/docs/telegram Section: Docs / Connecting Apps Receive instant push alerts for every form submission directly in your Telegram chat or group. ## Overview Telegram is a good choice for mobile notifications. Formbold's Telegram bot sends the full submission to your personal chat or a group. ## Step-by-Step Setup Guide 1. In your Formbold form, open the 'Integrations' tab and click 'Telegram'. ![Telegram Modal](#) 1. Open the Formbold Telegram Bot link displayed on screen or start a conversation with the bot in Telegram. 1. Send the '/start' command or follow the on-screen pairing code prompt to authenticate your chat ID. 1. If connecting a Telegram Group, add the Formbold bot to your group and grant permission to post messages. 1. Return to Formbold and click 'Verify Connection'. ## Testing the Alert Submit a test form on your website. Your Telegram app will ping immediately with a formatted message summary of the submission! --- # Discord Integration Source: https://formbold.com/docs/discord Section: Docs / Connecting Apps Send clean, rich embed notifications into your Discord server channels using webhooks. ## Overview Keep your developer or community team in the loop by sending styled rich embeds to any Discord channel whenever a visitor submits a contact form, bug report, or feedback survey. ![Discord Modal](#) ## Step 1: Create a Discord Webhook 1. Open Discord, navigate to your server, and click the server dropdown menu > 'Server Settings'. 1. Select 'Integrations' from the left sidebar and click 'Webhooks'. 1. Click 'New Webhook' or 'Create Webhook'. 1. Name the bot (e.g., 'Formbold Bot') and choose the destination channel (e.g., #form-leads). 1. Click 'Copy Webhook URL'. ## Step 2: Connect Discord in Formbold 1. In Formbold, navigate to your form's 'Integrations' tab. 1. Locate 'Discord' and click 'Configure'. 1. Paste your copied Discord Webhook URL into the field. 1. Click 'Save & Connect'. ## Step 3: Test the Integration Submit a test form from your website. You will see an embed appear in your Discord channel displaying the submission fields and timestamp. --- # Mailchimp Integration Source: https://formbold.com/docs/mailchimp Section: Docs / Connecting Apps Automatically sync newsletter subscribers and lead capture forms with your Mailchimp audiences. ## Overview Grow your email list from your website forms. Connect Formbold to Mailchimp and each new submission is added to your audience. ## Step 1: Generate a Mailchimp API Key 1. Log in to your Mailchimp account. 1. Click your profile avatar in the bottom left corner > Account & billing > Extras > API keys. 1. Click 'Create A Key', give it a label (e.g. 'Formbold'), and copy the key. ## Step 2: Configure Audience Fields & Merge Tags In Mailchimp, go to Audience > Audience dashboard > Manage Audience > Settings > Audience fields and *|MERGE|* tags. Verify that your fields match your form inputs (e.g., EMAIL, FNAME, LNAME). ## Step 3: Connect and Map in Formbold 1. In Formbold, go to Integrations > click 'Mailchimp'. ![Mailchimp Modal](#) 1. Paste your Mailchimp API Key. 1. Select the target Audience list from the dropdown. 1. Map your form fields to the appropriate Mailchimp merge tags. 1. Click 'Save'. ## Testing Submit an email through your form and check your Mailchimp Audience dashboard to confirm the subscriber was added with 'Subscribed' status. --- # Zendesk Integration Source: https://formbold.com/docs/zendesk Section: Docs / Connecting Apps Automatically convert form inquiries into Zendesk support tickets with requester email mapping. ## Overview Turn contact requests, sales inquiries and feedback forms into Zendesk tickets for your support team. ## Step 1: Locate Your Zendesk Subdomain Look at your Zendesk browser URL: https://your-subdomain.zendesk.com. The subdomain is the prefix (your-subdomain). ## Step 2: Create a Zendesk API Token 1. In Zendesk Admin Center, go to Apps and integrations > APIs > Zendesk API. 1. Enable 'Token Access' toggle. 1. Click 'Add API token', enter description 'Formbold Integration', and copy the generated token. ## Step 3: Connect in Formbold 1. In Formbold, go to Integrations > click 'Zendesk'. ![Zendesk Modal](#) 1. Enter your Zendesk Subdomain, your Primary Admin Email, and the API Token. 1. Map the form inputs to Ticket Subject, Requester Email, and Ticket Description. 1. Click 'Save & Connect'. ## Testing Submit a test message on your frontend form. Check your Zendesk ticketing queue; a new ticket will be opened with the submitter set as the requester! --- # Make Integration Source: https://formbold.com/docs/make Section: Docs / Connecting Apps Send submissions to Make.com scenarios to trigger multi-app workflows and advanced data processing. ## Overview Make (formerly Integromat) is a visual automation platform. Send Formbold submissions to Make to branch data, format text, call APIs and connect to thousands of apps. ## Step 1: Create a Custom Webhook in Make 1. Log in to Make.com and click 'Create a new scenario'. 1. Click the '+' circle, search for 'Webhooks', and choose 'Custom Webhook'. 1. Click 'Create a webhook', name it 'Formbold Submissions', and click 'Save'. 1. Make will generate a unique webhook URL (e.g. https://hook.eu2.make.com/xxxx). Click 'Copy address to clipboard'. ## Step 2: Add Webhook to Formbold 1. In Formbold, navigate to Integrations > click 'Make'. ![Make Modal](#) 1. Paste the copied Make Webhook URL. 1. Click 'Save & Activate'. ## Step 3: Determine Data Structure 1. In Make, click 'Redetermine data structure' on the webhook module. 1. Submit a test form on your website. 1. Make will display 'Successfully determined'. You can now chain Google Sheets, Airtable, CRM modules, or email services to your scenario! --- # Zapier Integration Source: https://formbold.com/docs/zapier Section: Docs / Connecting Apps Connect Formbold to thousands of popular apps on Zapier using Catch Hook webhook triggers. ## Overview Zapier connects Formbold to thousands of apps without code. Create calendar events, add Trello cards, post to Discord or update a CRM from each submission. ## Step 1: Create a Zap with Webhook Trigger 1. Log in to your Zapier dashboard and click 'Create Zap'. 1. In the Trigger step, search for 'Webhooks by Zapier'. 1. Select 'Catch Hook' as the Trigger Event and click 'Continue'. 1. Zapier will generate your unique Webhook URL. Click 'Copy'. ## Step 2: Connect Zapier in Formbold 1. In Formbold, go to your form's 'Integrations' tab and select 'Zapier'. ![Zapier Modal](#) 1. Paste the copied Webhook URL into the field. 1. Click 'Save & Connect'. ## Step 3: Test Trigger and Add Actions 1. Submit a test entry through your website form. 1. In Zapier, click 'Test trigger'. Zapier will confirm that the test submission was received. 1. Add your desired Action app (e.g. Google Sheets, HubSpot, Slack, Airtable). 1. Map the form fields into the action app and turn your Zap on! --- # HubSpot CRM Integration Source: https://formbold.com/docs/hubspot Section: Docs / Connecting Apps Sync new contacts and form leads directly into your HubSpot CRM sales pipeline. ## Overview Ensure your sales and marketing teams never miss an inbound lead. Formbold's direct HubSpot integration creates or updates CRM contacts whenever someone fills out your contact, demo request, or consultation form. ## Step 1: Authorize HubSpot Connection 1. In Formbold, open your form and select the 'Integrations' tab. ![HubSpot Modal](#) 1. Click on the 'HubSpot' card. 1. Click 'Connect App' to open the secure HubSpot OAuth authorization page. 1. Log in to your HubSpot account and select the target hub/portal. 1. Grant Formbold permissions to create contacts. ## Step 2: Map Contact Fields 1. Return to Formbold where HubSpot is now marked as authenticated. 1. Map your form fields to HubSpot contact properties: First Name, Last Name, Email Address, Phone Number, and Company. 1. Click 'Save Configuration'. ## Testing Submit a test form from your website. Open your HubSpot Contacts dashboard to verify the new contact has been created with all mapped fields! --- # Code Examples & Framework Guides Source: https://formbold.com/docs/code-examples Section: Docs / Code Examples Copy-ready examples for HTML, React, Next.js, Vue, Angular and plain JavaScript (Ajax), plus a prompt you can paste into your AI coding tool. ## Which framework examples are here? Every Formbold form has one endpoint, and it works with any stack. Pick your framework below, copy the example and swap in your own form ID from the **Form Setup** tab. The same snippets, with your endpoint already filled in, are on that tab too. ![Form Setup Code Examples](#) ## 1. Plain HTML Form The simplest way to use Formbold. Requires no JavaScript libraries or build tools: ```html
``` ## 2. Plain HTML with File Upload To accept file attachments, add enctype='multipart/form-data' to the form element: ```html
``` ## 3. Plain HTML with Google reCAPTCHA Embed the reCAPTCHA v2 widget to filter automated bots on your static form: ```html
``` ## 4. Vanilla JavaScript (AJAX / Fetch API) Submit form data asynchronously without triggering a full page reload, including loading indicators and double-submission guards: ```javascript const form = document.querySelector("#contact-form"); const submitBtn = document.querySelector("#submit-btn"); const statusMsg = document.querySelector("#status-message"); form.addEventListener("submit", async (e) => { e.preventDefault(); submitBtn.disabled = true; submitBtn.textContent = "Sending..."; const formData = new FormData(form); try { const response = await fetch("https://formbold.com/s/YOUR_FORM_ID", { method: "POST", body: formData, headers: { Accept: "application/json", }, }); if (response.ok) { statusMsg.textContent = "Thank you! Your message has been sent."; statusMsg.className = "success"; form.reset(); } else { const errorData = await response.json(); statusMsg.textContent = errorData.message || "Failed to send message."; statusMsg.className = "error"; } } catch (error) { statusMsg.textContent = "Network error. Please try again."; statusMsg.className = "error"; } finally { submitBtn.disabled = false; submitBtn.textContent = "Submit"; } }); ``` ## 5. React (Custom Component) A clean, functional React component with state management and user feedback: ```tsx import React, { useState } from "react"; export default function ContactForm() { const [status, setStatus] = useState({ state: "idle", message: "" }); const handleSubmit = async (e) => { e.preventDefault(); setStatus({ state: "loading", message: "" }); const formData = new FormData(e.target); try { const res = await fetch("https://formbold.com/s/YOUR_FORM_ID", { method: "POST", body: formData, headers: { Accept: "application/json" }, }); if (res.ok) { setStatus({ state: "success", message: "Form submitted successfully!" }); e.target.reset(); } else { setStatus({ state: "error", message: "Submission failed. Please try again." }); } } catch (err) { setStatus({ state: "error", message: "An unexpected error occurred." }); } }; return (
``` ## 8. Angular (standalone component) An Angular standalone component that posts with `HttpClient`. Add `provideHttpClient()` to your app config if you haven't already. ```typescript import { Component, inject } from "@angular/core"; import { HttpClient } from "@angular/common/http"; @Component({ selector: "app-contact-form", standalone: true, template: `

{{ status }}

`, }) export class ContactFormComponent { private http = inject(HttpClient); sending = false; status = ""; onSubmit(event: Event) { event.preventDefault(); const form = event.target as HTMLFormElement; this.sending = true; this.http .post("https://formbold.com/s/YOUR_FORM_ID", new FormData(form), { headers: { Accept: "application/json" }, }) .subscribe({ next: () => { this.status = "Thanks! Your message has been sent."; form.reset(); this.sending = false; }, error: () => { this.status = "Something went wrong. Please try again."; this.sending = false; }, }); } } ``` If you use `*ngIf`, import `NgIf` (or `CommonModule`) in the component's `imports`. On Angular 17 and newer you can use `@if` instead. ## 9. Prompt for AI coding tools The quickest route is the **Built with an AI Tool?** section on your form's **Form Setup** tab. Pick Lovable, Bolt.new, v0.dev, Cursor, ChatGPT or General, and Formbold writes the prompt with your endpoint already in it. If you'd rather write your own, this one works in Cursor, ChatGPT, Claude or v0: ```markdown I have created a Formbold form with the endpoint: https://formbold.com/s/YOUR_FORM_ID Please help me integrate this form into my web application. My stack is: [Insert stack, e.g. Next.js 15 App Router with Tailwind CSS] Requirements: 1. Submit the form to the Formbold endpoint using POST. 2. Provide form fields for Name, Email, and Message with proper validation. 3. Use the Fetch API with an 'Accept: application/json' header, so the page doesn't reload. 4. Disable the submit button and show a spinner while submitting. 5. Display accessible success and error state alerts. 6. Reset the form fields after successful submission. ``` Read what the AI gives back before you ship it. Check the URL is your endpoint and every field still has a `name`. --- # Webhooks Guide Source: https://formbold.com/docs/webhooks Section: Docs / Webhooks Send each form submission to your own server as a JSON POST request. Webhooks are available on the Starter, Premium and Business plans. ## How do Formbold webhooks work? When someone submits your form, Formbold sends an HTTP POST with the submission as JSON to a URL you choose. It happens in real time, so your server doesn't have to poll for new entries. Use a webhook when you want submissions in your own database, a serverless function or an internal tool. For Slack, Google Sheets or a CRM, the built-in integrations are less work. ## How do I add a webhook to my form? Webhooks live with the other apps on your form's Integrations tab. ![Webhook dialog in the Formbold Integrations tab](#) 1. Open your form and click the **Integrations** tab. 1. Find **Webhook** and click **Connect**. 1. Paste your endpoint. It must be an **HTTPS** URL, like `https://example.com/api/formbold-webhook`. 1. Choose which submissions to receive (see the next section) and save. Send a test from the **Test Form** tab right away and check that your server logged it. ## Which submissions does the webhook receive? The dialog has two checkboxes: - **Receive verified submissions (passed spam check)** is on by default. These arrive with `"is_spam": false`. - **Receive submissions marked as spam** is off by default. Turn it on if you want to review or score spam yourself. These arrive with `"is_spam": true`. If you turn both on, always check `is_spam` in your handler before you act on a submission. Otherwise a bot can end up in your CRM. ## What does the webhook payload look like? Every request has `Content-Type: application/json` and a body like this: ```json { "event": "submission.created", "form_id": "YOUR_FORM_ID", "submission_id": "sub_8f2b1a9c3d4e", "created_at": "2026-09-10T12:00:00.000Z", "data": { "name": "Sarah Connor", "email": "sarah@example.com", "message": "Interested in your enterprise solution.", "budget": "$10,000+" }, "files": [], "is_spam": false } ``` The keys inside `data` are your form's field names, so a field with `name="budget"` arrives as `data.budget`. Rename a field on your site and the key changes too, which is a common way to break a webhook without noticing. ## How do I handle the webhook in Node.js with Express? A minimal Express endpoint looks like this: ```javascript import express from "express"; const app = express(); app.use(express.json()); app.post("/api/formbold-webhook", (req, res) => { const { event, form_id, submission_id, data, is_spam } = req.body; // Only accept forms you expect if (form_id !== process.env.FORMBOLD_FORM_ID) { return res.status(404).end(); } // Answer quickly, then do the slow work res.status(200).json({ received: true }); if (is_spam) return; console.log(`[Formbold] ${event} ${submission_id}:`, data.name, data.email); // Save to your database, create a ticket, and so on }); app.listen(3000, () => console.log("Webhook server running on port 3000")); ``` Respond with a `2xx` status as soon as you've read the body. If you need to call other APIs or send emails, do it after responding, or push the job to a queue. ## How do I secure my webhook endpoint? Formbold doesn't sign webhook requests, so your endpoint should do its own checks. These are simple and cover most cases: - **Use HTTPS only.** Formbold requires it, and it keeps the payload private in transit. - **Make the URL hard to guess.** Put a long random value in the path or query string, like `/api/formbold-webhook?key=8f3c...`, and reject any request where it doesn't match a value in your environment variables. - **Check `form_id`.** Accept only the form IDs you expect and ignore the rest. - **Treat `data` as untrusted input.** It's whatever a visitor typed. Validate and escape it before you store it or show it in an admin page. - **Respond fast.** Return `2xx` first and do heavy work in the background, so a slow downstream service doesn't hold up the request. Your API token isn't used for webhooks. Don't put it in the webhook URL. ## How do I test webhooks locally with ngrok? Your laptop isn't reachable from the internet, so use a tunnel: 1. Start your local server, for example on port 3000. 1. Run `ngrok http 3000`. 1. Copy the HTTPS forwarding URL and add your path, like `https://abc123.ngrok-free.app/api/formbold-webhook`. 1. Paste that URL into the Webhook dialog on the **Integrations** tab. 1. Submit your form and watch the payload arrive in your terminal. Free ngrok URLs change each time you restart ngrok, so update the webhook URL when they do. If you just want to see the raw request first, a free URL from webhook.site works too. --- # REST API Reference Source: https://formbold.com/docs/api-reference Section: Docs / API Reference Fetch a form's submissions with the Formbold REST API. Available on every plan, including Free. ## What can I do with the Formbold REST API? Right now it does one job: fetch the submissions for any of your forms. That's enough to copy new leads into a CRM or keep a backup in your own database. | Item | Value | | --- | --- | | Base URL | https://api.formbold.com/api | | Format | JSON responses | | Protocol | HTTPS only | | Plans | Every plan, including Free | ## How do I authenticate? Every request needs an API token in the `Authorization` header. Create one in **API & MCP > API Tokens**. See [API Tokens](/docs/api-tokens). ```bash Authorization: Bearer YOUR_API_TOKEN ``` ## Which endpoints are available? | Method | Endpoint | What it does | | --- | --- | --- | | GET | /api/forms/:formId/submissions | Lists a form's submissions | ## How do I fetch a form's submissions? `GET https://api.formbold.com/api/forms/:formId/submissions` returns the submissions for one form. Replace `:formId` with your form's ID, the last part of its endpoint. If your endpoint is `https://formbold.com/s/3Vy25`, the ID is `3Vy25`. First, turn on **HTTP API** for that form. Open the form, go to **Settings**, and switch on **HTTP API** in the **Email Configuration** card ("Allow programmatic access to this form's submissions"). Without it, the request fails with a `400`. ### Parameters | Parameter | Type | Required | Description | | --- | --- | --- | --- | | formId (path) | string | Yes | Your form's ID, the last part of its endpoint (for example 3Vy25) | ### Request examples cURL: ```bash curl -X GET "https://api.formbold.com/api/forms/3Vy25/submissions" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Accept: application/json" ``` JavaScript or Node.js: ```javascript const formId = "3Vy25"; const response = await fetch( `https://api.formbold.com/api/forms/${formId}/submissions`, { headers: { Authorization: `Bearer ${process.env.FORMBOLD_API_TOKEN}`, Accept: "application/json", }, } ); if (!response.ok) { throw new Error(`Formbold API error: ${response.status}`); } const data = await response.json(); console.log(data); ``` Python: ```python import os import requests form_id = "3Vy25" url = f"https://api.formbold.com/api/forms/{form_id}/submissions" headers = { "Authorization": f"Bearer {os.environ['FORMBOLD_API_TOKEN']}", "Accept": "application/json", } response = requests.get(url, headers=headers) response.raise_for_status() print(response.json()) ``` Run these on a server. A token in front-end code is a token anyone can copy. ### Success response (200 OK) A successful call returns 200 OK with the form's submissions. Each submission is an object like the one below, shown here in a list with a single entry: ```json [ { "country": null, "created_at": "2025-06-16T04:42:51", "domain": null, "fields": { "name": "John Doe", "email": "john.doe@example.com", "message": "This is a test message." }, "files": null, "form_id": "12891", "id": "525393", "is_read": true, "is_spam": false, "is_starred": false, "updated_at": "2025-06-16T04:42:51" } ] ``` The list may sit inside a wrapper object with other top-level keys. Log the raw JSON from your first call and check its shape before you write the parsing code. ### What's in a submission object? | Field | Type | Description | | --- | --- | --- | | id | string | The submission's unique ID. | | form_id | string | Internal ID of the form that received the submission. It's not the ID in your endpoint URL. | | fields | object | What the visitor entered, keyed by your form's input names, for example name, email and message. | | files | null or file data | Files uploaded with the submission. null when there are none. | | country | string or null | The visitor's country, when it's known. Otherwise null. | | domain | string or null | The site the form was submitted from, when it's known. Otherwise null. | | is_read | boolean | Whether the submission is marked as read. | | is_spam | boolean | Whether the submission was flagged as spam. | | is_starred | boolean | Whether the submission is starred. | | created_at | string (ISO 8601) | When the submission arrived, for example 2025-06-16T04:42:51. There's no timezone suffix. | | updated_at | string (ISO 8601) | When the submission was last updated. Same format as created_at. | ## What do the error codes mean? | HTTP code | Status | What to check | | --- | --- | --- | | 400 | Bad Request | The form ID isn't valid, or HTTP API is turned off for this form. Check the ID, then switch HTTP API on in Settings > Email Configuration. | | 401 | Unauthorized | The token is missing or revoked, or the header doesn't start with "Bearer ". | Errors come back as JSON with a message. A request without a valid token gets this: ```json { "success": false, "data": null, "message": "Unauthorized" } ``` ## Can AI assistants use the API? Yes, through the [Formbold MCP server](/docs/mcp-server). It has its own URL and takes the same API token: | Item | Value | | --- | --- | | MCP URL | https://api.formbold.com/mcp | | Authentication | Authorization: Bearer YOUR_API_TOKEN | | Tools | list_workspaces, create_form, update_form, get_form, list_forms, test_submission, get_submissions | With it, Cursor, VS Code, Claude Code, Claude Desktop or Codex can create forms, change form settings, send test submissions and check form stats from a chat. Setup for each client, the arguments for each tool and example prompts are in [MCP Server](/docs/mcp-server). ### What does the MCP server return without a valid token? HTTP 401, with a message that tells you which problem it is, repeated in a details object. No token: ```json { "success": false, "data": null, "message": "Authentication token is required for Formbold MCP access.", "details": { "message": "Authentication token is required for Formbold MCP access.", "error": "Unauthorized", "statusCode": 401 } } ``` An invalid or expired token: ```json { "success": false, "data": null, "message": "Invalid or expired Formbold MCP API token.", "details": { "message": "Invalid or expired Formbold MCP API token.", "error": "Unauthorized", "statusCode": 401 } } ``` --- # Using Formbold with AI Source: https://formbold.com/docs/ai Section: Docs / AI Let your AI assistant create forms, test them and read submissions, connect forms that AI app builders generate, and call the API from your own agents. If you're new here, Formbold is the backend your form posts to. It stores each submission, filters spam and passes entries to email, Slack, Google Sheets, webhooks and 8 other apps. This page is about the AI side of that: assistants that talk to your forms, app builders that write them, and agents that read submissions. ## What can I do with Formbold and AI? All of it works on every plan, Free included. 1. **Talk to Formbold from your AI assistant.** Connect Cursor, VS Code Copilot, Claude Code, Claude Desktop or Codex to the Formbold MCP server. Then ask it to create a form, change its settings, send a test submission or compare how your forms are doing. 1. **Connect forms that AI app builders write.** Lovable, Bolt.new, v0, Cursor and ChatGPT will all generate a contact form that has nowhere to send. Point it at Formbold, and let the dashboard write the prompt for you. 1. **Call the REST API from your own agents.** An agent or a plain script can fetch submissions over HTTPS with an API token. ## How do I let Claude or Cursor work with my forms? Create an API token under **API & MCP > API Tokens**, then add the Formbold MCP server, `https://api.formbold.com/mcp`, to your client with the token as a Bearer header. For most clients that's one config block. Once it's connected, try "Send a test submission with name and email to form to verify it works" or "Compare all my forms. Which form has the highest volume, and which one gets the most spam?" Setup for each client, the seven tools and more prompts are in [MCP Server](/docs/mcp-server). ## How do I connect a form an AI app builder made? Open your form's **Form Setup** tab and scroll to **Built with an AI Tool?**. Pick your tool, copy the prompt, and paste it into the builder's chat. It already contains your endpoint. Read what the builder wrote before you launch. The usual mistakes are a missing `name` attribute or a placeholder URL. The checklist is in [Connect AI-Built Forms](/docs/ai-form-builders). ## Can my own agent read submissions over the API? Yes. Send the token as `Authorization: Bearer YOUR_API_TOKEN` to `https://api.formbold.com/api`. `GET /api/forms/:formId/submissions` returns a form's entries once HTTP API is on for that form. Give each agent its own token. When you shut an agent down, revoke its token and nothing else is affected. Endpoints and responses are in the [REST API reference](/docs/api-reference). ## Is it safe to give an AI assistant access? It's as safe as the token you give it. The token can read every submission in your account, so treat it like a password. Keep it out of Git, use one per tool, and revoke it on the **API Tokens** tab the moment you're unsure. Submissions are personal data from real people. Before you paste them into a chat, think about whether that tool is somewhere your privacy policy says the data may go. --- # Formbold MCP Server Source: https://formbold.com/docs/mcp-server Section: Docs / AI Connect Cursor, VS Code, Claude Code, Claude Desktop or Codex to Formbold so your AI assistant can create forms, change their settings, send test submissions and check how each form is doing. Works on every plan, Free included. ## What is the Formbold MCP server? It's a Model Context Protocol server that lets AI agents work with your Formbold account. From a chat in Cursor, VS Code, Claude Code, Claude Desktop or Codex, an agent can **create forms**, **manage form settings**, **test the submission pipeline** and **check form analytics**. You ask in plain language and the agent calls the right tool. | Item | Value | | --- | --- | | Base URL | https://api.formbold.com/mcp | | Authentication | Authorization: Bearer | | Clients | Cursor, VS Code, Claude Code, Claude Desktop, Codex | | Plans | Every plan, including Free | ## How do I authenticate? Send your API token as a Bearer token in the `Authorization` header on every request: ```bash Authorization: Bearer ``` To get a token, open **API & MCP** in the dashboard sidebar, go to the **API Tokens** tab and create one. Give it a name you'll recognise later, like "Cursor on work laptop", and copy it straight away. More in [API Tokens](/docs/api-tokens). > Never commit tokens to Git. Make one token per tool or per machine, so if a laptop goes missing you revoke that one token and everything else keeps working. ## Which tools does the server give my assistant? Seven. Your assistant picks the right one from what you ask, so you rarely need to name them. | Tool | Purpose | Key arguments | | --- | --- | --- | | list_workspaces | List accessible workspaces and verified emails | None | | create_form | Create a new form endpoint | name, workspace_id, notification_email | | update_form | Update settings, redirect URL, spam filter, domains | form_id, name, redirect_url, allowed_domains, is_active | | get_form | Get form details, endpoint URL, and stats | form_id | | list_forms | List forms with submission counts | workspace_id, all_workspaces, limit | | test_submission | Send a test payload to verify ingestion | form_id, data (key-value map) | | get_submissions | View recent submissions (PII masked by default) | form_id, limit, include_content | `get_submissions` masks personal data by default. The `include_content` argument controls whether the content of each entry comes back, so only turn it on when your assistant needs to read what people wrote. ## What happens if the token is missing or wrong? The server answers with HTTP status **401 Unauthorized** and a JSON body. A request with no token gets this: ```json { "success": false, "data": null, "message": "Authentication token is required for Formbold MCP access.", "details": { "message": "Authentication token is required for Formbold MCP access.", "error": "Unauthorized", "statusCode": 401 } } ``` An invalid, expired or revoked token gets this: ```json { "success": false, "data": null, "message": "Invalid or expired Formbold MCP API token.", "details": { "message": "Invalid or expired Formbold MCP API token.", "error": "Unauthorized", "statusCode": 401 } } ``` Either way, check that the header reads `Authorization: Bearer`, then a space, then your token, and that the token is still listed on the API Tokens tab. ## How do I connect Cursor? Add Formbold to `.cursor/mcp.json` in your project, or to `~/.cursor/mcp.json` to use it in every project: ```json { "mcpServers": { "formbold": { "url": "https://api.formbold.com/mcp", "headers": { "Authorization": "Bearer " } } } } ``` Save the file. Formbold should show up in Cursor's MCP list with a green dot. If it stays red, restart Cursor once. ## How do I connect VS Code? Add Formbold to `.vscode/mcp.json` in your workspace. VS Code uses `servers` as the top-level key, not `mcpServers`, and a remote server needs `"type": "http"`: ```json { "servers": { "formbold": { "type": "http", "url": "https://api.formbold.com/mcp", "headers": { "Authorization": "Bearer " } } } } ``` Open Copilot Chat in Agent mode and check the tools list. You should see the Formbold tools there. ## How do I connect Claude Code? Run one command in your terminal: ```bash claude mcp add --transport http formbold https://api.formbold.com/mcp --header "Authorization: Bearer " ``` Or add it to `.mcp.json` in your project root. Keep `"type": "http"`, because Claude Code skips a server that has a `url` but no `type`: ```json { "mcpServers": { "formbold": { "type": "http", "url": "https://api.formbold.com/mcp", "headers": { "Authorization": "Bearer " } } } } ``` Then run `claude mcp list`. Formbold should be listed as connected. ## How do I connect Claude Desktop? Claude Desktop reaches the Formbold server through `mcp-remote`, a small bridge that runs with Node.js. Open **Settings > Developer > Edit Config**. That opens `claude_desktop_config.json`. Add Formbold under `mcpServers`: ```json { "mcpServers": { "formbold": { "command": "npx", "args": [ "-y", "mcp-remote", "https://api.formbold.com/mcp", "--header", "Authorization:${AUTH_HEADER}" ], "env": { "AUTH_HEADER": "Bearer " } } } } ``` Save the file, then quit Claude Desktop completely and open it again. Closing the window isn't enough. ## How do I connect Codex? Add Formbold to `~/.codex/config.toml`. The Codex CLI, the IDE extension and the Codex app all read this file: ```toml [mcp_servers.formbold] url = "https://api.formbold.com/mcp" http_headers = { "Authorization" = "Bearer " } ``` To keep the token out of the file, replace the `http_headers` line with `bearer_token_env_var = "FORMBOLD_API_TOKEN"` and set that variable in your shell. Start a new Codex session so it picks up the change. ## What can I ask in the AI chat? Name the form and say what you want back. Each of these prompts maps to one or two tools: | Prompt | Tools | What happens | | --- | --- | --- | | "Show my Formbold workspaces and verified notification emails." | list_workspaces | Lists your workspaces and the notification emails you can send to. | | "Create a new Formbold contact form for my workspace." | create_form | Creates the form and returns its endpoint URL. | | "Enable spam protection and restrict allowed domains to mysite.com on form ." | update_form | Changes the form's spam and domain settings. | | "Send a test submission with name and email to form to verify it works." | test_submission | Sends a test entry so you can confirm the form receives data. | | "Analyze the performance and recent feedback for form ." | get_form + get_submissions | The AI summarizes submission volume, calculates inbox vs. spam ratios, and reviews recent entries. | | "Compare all my forms. Which form has the highest volume, and which one gets the most spam?" | list_forms | The AI compares forms, ranks traffic, and highlights high-performing vs. dormant endpoints. | | "Compare recent submissions between form and form and highlight key differences." | get_submissions | The AI fetches entries from both forms and compares customer feedback themes. | Replace `` with your form's ID, the last part of its endpoint. For `https://formbold.com/s/3Vy25`, the ID is `3Vy25`. When your assistant creates a form, check it on **All Forms** before you ship. It takes ten seconds and catches a wrong name early. ## How do I test the connection with cURL? Send an `initialize` request with your token: ```bash curl -i -X POST https://api.formbold.com/mcp \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl-test","version":"1.0"}},"id":1}' ``` A missing or wrong token returns one of the 401 errors above. If the response includes an `Mcp-Session-Id` header, send that header with your later requests, such as `tools/list`. ## How do I keep my token safe? Treat the token like a password. It can read every submission your account can read. - Never commit tokens to Git. If `.cursor/mcp.json`, `.vscode/mcp.json`, `.mcp.json` or `config.toml` holds a real token and lives in a repo, add it to `.gitignore`. - Use a separate token for each client, so you can revoke one without breaking the others. - If you think a token leaked, revoke it on the API Tokens tab and create a new one. Revoking takes effect straight away. ## Why isn't the Formbold MCP server connecting? Most problems come down to a few things. A 401 means the header is missing or the token is wrong. Check there's a space after Bearer and that you copied the whole token. In VS Code and Claude Code, check that the entry has `"type": "http"`. Claude Code skips a `url` entry without it. If Claude Desktop says "npx: command not found", Node.js isn't installed or the app can't see it. Install Node.js 18 or newer and restart Claude Desktop. On Windows, some clients split arguments on spaces, which breaks an `Authorization: Bearer ...` argument. The Claude Desktop example passes the header through `AUTH_HEADER` to avoid that. For calling Formbold from your own code instead, see the [REST API reference](/docs/api-reference). --- # Connect Forms Built with Lovable, Bolt.new, v0, Cursor or ChatGPT Source: https://formbold.com/docs/ai-form-builders Section: Docs / AI AI app builders write good-looking forms that don't send anywhere. This guide shows you how to point them at Formbold and check the result before launch. ## Why doesn't the form my AI tool built send anything? Because most AI builders write the front end only. The form looks right, the button clicks, and the data goes nowhere, or to a placeholder URL. Formbold gives that form a real endpoint that stores submissions and emails them to you. You'll need a Formbold form first. Create one in **All Forms** with **Create New Form**. ## How do I use the "Built with an AI Tool?" prompt builder? 1. Open your form and go to the **Form Setup** tab. 1. Scroll to **Built with an AI Tool?**. 1. Pick your tool: **Lovable**, **Bolt.new**, **v0.dev**, **Cursor**, **ChatGPT** or **General**. 1. Copy the prompt. It already contains your endpoint, `https://formbold.com/s/YOUR_FORM_ID`. The prompt asks the AI to submit your form with `fetch` and a JSON body, show a success message, and handle errors. You don't need to edit it. ## Where do I paste the prompt? Into the same chat where you built the app. In Lovable, Bolt.new and v0 that's the project chat. In Cursor, open the chat with the form's file in context. In ChatGPT, paste the prompt together with your form's code. If your app has more than one form, say which one, for example "Use this for the contact form on the Contact page only." ## What should I check after the AI updates my form? Read the code it changed. It takes two minutes and saves an afternoon. Check these: - **The URL** is your real endpoint, not `YOUR_FORM_ID` or an example domain. - **The method** is `POST`. - **Every field has a `name`**, or a matching key in the JSON body. That name is the label you'll see in Submissions and in the email. - **The headers.** A `fetch` call with a JSON body should send `Content-Type: application/json` and `Accept: application/json`. Then publish a preview and send a real submission. Check that it shows up in **Submissions** and that the email reaches your inbox, not spam. ## Should I set a redirect or spam protection? Probably both. A `fetch` form shows its own thank-you message, so a redirect is optional. If the AI wrote a plain HTML form instead, set a **Redirect URL** in **Settings > Email Configuration** so visitors land on your own thank-you page. Redirects are on Starter and higher. For spam, turn on **Basic Spam Filter** in **Settings > Spam & Security** straight away. Forms on AI-built sites often go live fast and get found by bots just as fast. Details in [Spam Protection](/docs/spam-protection). ## What mistakes do AI tools make most often? These four cover nearly every "it doesn't work" message we see: 1. **A missing `name` attribute.** The input renders, but its value never reaches Formbold. Add `name="email"` and so on to each field. 1. **`GET` instead of `POST`.** The form puts your data in the URL and Formbold ignores it. Change the method to `POST`. 1. **The wrong endpoint.** A placeholder, an old form ID, or a made-up API URL. Copy the endpoint from **Form Setup** again. 1. **No `Content-Type` or `Accept` header on `fetch`.** Without them the request may be sent as plain text, or your code can't read the response. Add both as `application/json`. If it still fails, open the browser's Network tab, submit the form, and look at the request to `formbold.com/s/...`. The status code and response usually point straight at the problem. ## Can the AI create the Formbold form for me too? Yes, if your coding tool supports MCP. Connect the [Formbold MCP server](/docs/mcp-server) and ask "Create a Formbold contact form called Website Contact and wire it into the contact page." The `create_form` tool makes the form and hands the endpoint back to the AI. Then ask "Send a test submission with name and email to the new form to verify it works." The `test_submission` tool confirms that entries arrive before you launch. ## Is there a step-by-step guide for my tool? Yes, for the three we're asked about most: [Lovable](/docs/lovable-contact-form), [Bolt.new](/docs/bolt-contact-form) and [v0](/docs/v0-contact-form). Each one has a prompt you can paste, the code you should end up with and the mistake that tool makes most often. --- # Make your Lovable contact form send Source: https://formbold.com/docs/lovable-contact-form Section: Docs / AI Lovable builds a good-looking contact form in seconds, but by default nothing receives it. Here's the prompt that connects it to Formbold, and what to check afterwards. ## Why doesn't my Lovable contact form send anything? Because Lovable writes the front end and stops there. The submit button often just shows a toast, or Lovable offers to build a Supabase table and an Edge Function for it. For a contact form you don't need either. Point the form at a Formbold endpoint and each message is stored, filtered for spam and emailed to you. ## What do I need before I start? A Formbold form. Open **All Forms**, click **Create New Form** and name it, for example "Lovable site contact". Then copy the endpoint from the **Form Setup** tab. It looks like `https://formbold.com/s/YOUR_FORM_ID`. The Free plan is enough for this: 250 submissions a month across 10 forms. ## What prompt do I paste into Lovable? The quickest route is **Form Setup > Built with an AI Tool?**. Pick **Lovable** and the dashboard writes the prompt with your endpoint already in it. If you'd rather write it yourself, this one works: ```text Update the existing contact form so it really sends. On submit, POST the form fields to https://formbold.com/s/YOUR_FORM_ID using fetch with a JSON body and these headers: Content-Type: application/json and Accept: application/json. Give every input a name attribute (name, email, message). Disable the button while sending. Show a success message only when response.ok is true, and show an error message otherwise. Do not add Supabase, Lovable Cloud, an Edge Function, an email API or any other backend for this form. Keep the current design. ``` The last line matters. Without it, Lovable may decide the form needs a database and start building one. ## What should the code look like afterwards? Open the component Lovable changed, usually something like `src/components/ContactForm.tsx`. The submit handler should look roughly like this: ```tsx async function handleSubmit(e: React.FormEvent) { e.preventDefault(); const form = e.currentTarget; setSending(true); const data = Object.fromEntries(new FormData(form)); const res = await fetch("https://formbold.com/s/YOUR_FORM_ID", { method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json", }, body: JSON.stringify(data), }); setSending(false); if (res.ok) { form.reset(); setStatus("Thanks, we'll get back to you soon."); } else { setStatus("Something went wrong. Please try again."); } } ``` If you see a `setTimeout` that fakes a delay, a `console.log` instead of a request, or a call to `supabase.from(...)`, the prompt didn't take. Paste it again and name the file. ## How do I test it before I publish? Send one message from the Lovable preview. Within a few seconds it should appear in your form's **Submissions** tab, and the email should follow. If it doesn't: - Open the browser's Network tab, submit again and click the request to `formbold.com/s/...`. A 4xx status usually means a wrong form ID. - Check the inputs. Generated components sometimes keep values in state and leave `name` off the input. With this handler, a field without a name never reaches Formbold. - Publish, then test once more on the live URL. That's the one your visitors use. > Do the live test from your phone. It's the fastest way to catch a form that works on desktop and breaks on mobile. ## Should I turn on spam protection straight away? Yes. Lovable sites tend to go live quickly, and bots find contact forms just as quickly. In **Settings > Spam & Security**, turn on **Basic Spam Filter**. This form submits with fetch, so if you want a captcha as well, use **Custom reCAPTCHA** with your own v2 keys. The steps are in [Spam Protection](/docs/spam-protection). ## Can Lovable send the submissions to Slack or Google Sheets? Formbold can, on Starter and higher. Connect the app on the form's **Integrations** tab and leave Lovable out of it. Your Lovable code stays the same. --- # Connect a Bolt.new contact form to Formbold Source: https://formbold.com/docs/bolt-contact-form Section: Docs / AI 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. In some projects the button does nothing at all. In others it logs to the console, or Bolt suggests adding Supabase. A Formbold endpoint is shorter: 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: ```text 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. 1. `method: "POST"` and both headers. 1. 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. --- # Wire a v0 contact form to Formbold Source: https://formbold.com/docs/v0-contact-form Section: Docs / AI v0 generates Next.js components with shadcn/ui, and its contact forms usually end in a mock Server Action. Swap that for your Formbold endpoint and the form starts sending. ## Why doesn't my v0 contact form send? v0 tends to finish a contact form with a placeholder. You'll often see a Server Action marked `"use server"` that waits a second and returns success, or a handler that only logs the data. Nothing is sent anywhere. Replace that with a request to your Formbold endpoint and every submission is stored and emailed to you. ## What do I need from Formbold? A Formbold form. Click **Create New Form** in **All Forms**, then copy the endpoint from **Form Setup**: `https://formbold.com/s/YOUR_FORM_ID`. The Free plan gives you 250 submissions a month and 10 forms. ## What prompt do I give v0? Pick **v0.dev** under **Form Setup > Built with an AI Tool?** for a prompt with your endpoint in it, or use this: ```text Replace the mock submit logic in the contact form. Make the form a client component ("use client") and on submit 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. Keep name attributes on every input: name, email, message. Show the success state only when response.ok is true and an error state otherwise. Remove the fake delay and any unused Server Action. Keep the existing shadcn/ui design. ``` ## Can I keep a Server Action instead? Yes, if you prefer. A Server Action can call the same endpoint with `fetch`, and the request is identical. The client version is simpler, though, and it keeps working if you later move the site to a static export. Pick one and delete the other, so there's no half-used action left behind. ## What should the component look like? Roughly this, inside the file v0 generated: ```tsx "use client"; import { useState } from "react"; export function ContactForm() { const [status, setStatus] = useState<"idle" | "sending" | "sent" | "error">("idle"); async function onSubmit(e: React.FormEvent) { e.preventDefault(); setStatus("sending"); const form = e.currentTarget; const res = await fetch("https://formbold.com/s/YOUR_FORM_ID", { method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json" }, body: JSON.stringify(Object.fromEntries(new FormData(form))), }); if (res.ok) form.reset(); setStatus(res.ok ? "sent" : "error"); } // keep v0's JSX, and make sure each and
``` ## What are the setup steps? 1. **Make a form in the dashboard**: Click Create New Form and give it a name you'll recognise later. Free accounts can have 10. 2. **Paste the endpoint**: Put https://formbold.com/s/FORM_ID from Form Setup in the fetch call. Keep the Accept: application/json header so the script can read the response. 3. **Test it**: Submit once with the Network tab open. A 200 response means it worked, and the entry is already in Submissions. ## After the request lands - **No backend script**: No PHP handler or Node server behind the form. Your page and one fetch call are the whole stack. - **Custom reCAPTCHA for fetch**: Automatic reCAPTCHA is built for plain HTML posts. For an Ajax form, use Custom reCAPTCHA with your own v2 keys, plus Basic Spam Filter. - **File uploads**: Send a FormData body without a Content-Type header and files come through. Starter and higher. - **Hand entries to other tools**: From Starter, Formbold can forward each entry to Discord, Zapier, Make or your own webhook, so your script never has to. ## Frequently asked questions ### Do I need jQuery? No. fetch is built into every current browser. If your site already loads jQuery, $.ajax with the same URL and headers works too. ### Why does response.json() throw an error? Usually the Accept: application/json header is missing, so the reply isn't JSON. Add it to the request headers. ### Can I upload files with Ajax? Starter and higher support it. Pass new FormData(form) as the body and leave out Content-Type. JSON.stringify drops files, so don't convert the data. ### Will Automatic reCAPTCHA work here? No, it's designed for standard HTML posts. Use Custom reCAPTCHA instead. The widget adds a hidden g-recaptcha-response field inside your form, and FormData picks it up. ### Can I try this without paying? Yes. The Free plan covers 250 submissions a month on up to 10 forms. Paid plans start at $8 a month, or $6 billed yearly. --- # Astro contact form with zero client JavaScript Source: https://formbold.com/platforms/astro Astro ships no client JavaScript by default, and this form doesn't need any. Point it at your Formbold endpoint and each submission is stored and emailed to you, even on a fully static build. ## What goes in my Astro component? A plain HTML form in src/components/ContactForm.astro. Import it into a page with import ContactForm from "../components/ContactForm.astro", render , and swap FORM_ID for your own. ```html --- // src/components/ContactForm.astro ---
``` ## Adding the form to an Astro site 1. **Create a form**: Open the dashboard and click Create New Form. Free gives you 10 forms, so there is room for a separate test form. 2. **Set the action**: Copy https://formbold.com/s/FORM_ID from Form Setup into the action attribute. Keep method="POST". 3. **Build and test**: Run astro dev, submit once and check Submissions. The same form works after astro build on any static host. ## Why does this work on a static Astro site? - **No server endpoint**: No API route in src/pages and no SSR adapter. Keep deploying to Netlify, Vercel, Cloudflare Pages or GitHub Pages as you do now. - **Automatic reCAPTCHA**: This is a native HTML post, so Automatic reCAPTCHA works without keys. Turn it on next to Basic Spam Filter. - **File uploads**: Add enctype="multipart/form-data" and a file input. Available on Starter and higher. - **Send people to /thanks**: On Starter and higher, set a Redirect URL and visitors land on a thank-you page you build in src/pages. ## Frequently asked questions ### Do I need an SSR adapter or an API endpoint? No. Formbold receives the post, so your site can stay fully static. ### Can I submit without leaving the page? Yes. Add a script tag to the component that calls fetch with new FormData(form) and an Accept: application/json header. Astro bundles that script for you. ### Can I use the form in an MDX post? Yes. Import the component at the top of the .mdx file and render it like any other Astro component. ### How big can uploaded files be? Uploads start on Starter, which accepts 5 files of up to 10 MB each per submission. Add enctype="multipart/form-data" to the form tag. ### Does a static Astro site need a paid plan? No. Free gives you 250 submissions a month and 10 forms. Starter is $8 a month, or $6 billed yearly, if you want redirects, uploads or integrations. --- # An Alpine.js contact form in one x-data component Source: https://formbold.com/platforms/alpinejs If your page already loads Alpine from a script tag, you're most of the way there. x-data holds the fields and a loading flag, fetch sends them to Formbold, and each entry lands in your inbox. The Free plan includes 250 submissions a month. ## The x-data component One x-data component, x-model on each field and a submit method that calls fetch. Paste it into any page that already loads Alpine 3, then replace FORM_ID. ```html
``` ## How do I wire Alpine.js to Formbold? 1. **Create the form**: Click Create New Form in the dashboard. Call it something like Alpine contact so it's easy to spot later. 2. **Drop in your endpoint**: The fetch call inside contactForm() needs your https://formbold.com/s/FORM_ID address. You will find it on the Form Setup tab. 3. **Send a test**: Submit the form and open Submissions. The keys in formData become the field labels you see there. ## What does Formbold add to an Alpine form? - **Static hosting is fine**: There's no endpoint of your own to deploy or patch, so Netlify, GitHub Pages or a plain storage bucket all work. - **Spam settings for a fetch form**: Turn on Basic Spam Filter. Alpine submits with fetch, so Custom reCAPTCHA is the captcha option that works here. - **File uploads**: From Starter. Switch the body to FormData for files, since x-model values sent as JSON can't carry them. - **Send it on to Slack or Notion**: On Starter and up, connect Slack, Notion, Google Sheets, Telegram or Discord from the Integrations tab, or use a webhook. ## Frequently asked questions ### Do I need x-model on every field? Only if you send JSON from formData, as this snippet does. A field that isn't in formData never reaches Formbold. The other option is @submit.prevent="submit($event)" and new FormData(event.target), which reads every named input. ### Does it work with Alpine from a CDN? Yes. The snippet uses Alpine 3 syntax and plain fetch, so a single script tag is enough. ### Why don't files come through with x-model? x-model holds strings, and JSON can't carry a file. On Starter and higher, build the body with new FormData(form) and skip the Content-Type header. ### Where do the submissions go? To your form's Submissions tab, and to your inbox as an email per entry. ### What does it cost? Nothing to start. Free covers 250 submissions a month on 10 forms. Starter is $8 a month, or $6 billed yearly, and raises the limit to 3,000. --- # Angular contact form with HttpClient and no API of your own Source: https://formbold.com/platforms/angular You already have HttpClient, so sending a contact form is one call. Use a standalone component with ngModel, post JSON to your Formbold endpoint, and Formbold stores the entry and emails you. Free includes 250 submissions a month and 10 forms. ## What does a working Angular contact form look like? Standalone component with FormsModule and HttpClient. Replace FORM_ID. Call provideHttpClient() in app.config.ts once for the app. ```typescript // contact.component.ts import { Component, inject } from "@angular/core"; import { HttpClient, HttpHeaders } from "@angular/common/http"; import { FormsModule } from "@angular/forms"; import { NgIf } from "@angular/common"; @Component({ selector: "app-contact", standalone: true, imports: [FormsModule, NgIf], template: `

{{ status }}

`, }) export class ContactComponent { private http = inject(HttpClient); email = ""; subject = ""; message = ""; loading = false; status = ""; submit() { this.loading = true; const headers = new HttpHeaders({ "Content-Type": "application/json", Accept: "application/json", }); this.http .post<{ message?: string }>( "https://formbold.com/s/FORM_ID", { email: this.email, subject: this.subject, message: this.message }, { headers } ) .subscribe({ next: (result) => { this.status = result?.message || "Message sent."; this.email = ""; this.subject = ""; this.message = ""; this.loading = false; }, error: () => { this.status = "Request failed."; this.loading = false; }, }); } } // Provide HttpClient in app.config.ts: // provideHttpClient() ``` ## How do I connect an Angular form to Formbold? 1. **Create a form in the dashboard**: Open All Forms, create one, then copy https://formbold.com/s/FORM_ID from the Form Setup tab. 2. **Add provideHttpClient()**: In app.config.ts add provideHttpClient() so HttpClient injects cleanly. Paste FORM_ID into the component. 3. **Submit from ng serve**: Fill the form once. The row shows up under Submissions, and the notification email follows. ## What do you skip by posting to Formbold? - **HttpClient only**: One POST from the component. You do not need a Formbold-specific Angular library. - **Spam settings live in the dashboard**: Basic Spam Filter is under Settings > Spam & Security, so there's nothing to add to the component. Custom reCAPTCHA covers the captcha case. - **Uploads on Starter+**: Paid plans accept files at 10 MB, 25 MB or 50 MB by plan. Send multipart FormData from Angular when you need them. - **CRM and chat tools**: Starter and higher push entries to Slack, HubSpot, Notion, Sheets and webhooks from the Integrations tab. ## Frequently asked questions ### Do I need ReactiveFormsModule? No for this example. Template-driven ngModel is enough. You can swap in a FormGroup and still JSON.stringify the value into the same POST. ### Can I keep the homepage HTML action form? Yes. A plain action and method="POST" works if you do not need an in-page JSON response. HttpClient is better when you want loading state and inline errors. ### Why does HttpClient fail with CORS? Formbold accepts browser POSTs to /s/FORM_ID. If something fails, check the endpoint ID and that you are not sending an Authorization header from the browser. ### How do I map Angular fields to dashboard columns? The object keys you POST become the field names. Keep name="email" style keys stable once you start using integrations. ### How far does the Free plan go? 250 submissions a month across 10 forms, with email notifications and API access. Starter is $8 a month, or $6 billed yearly. ### Where does the API token go? Only on a server you control. The public endpoint collects submissions. Tokens read them and never belong in an Angular bundle. --- # Base44 lead form with an email for every entry Source: https://formbold.com/platforms/base44 Base44 apps come with a managed database and Deno backend functions. A lead form usually wants less than that: an email per entry, a spam filter and a way into Slack or a CRM. Post the form to Formbold and you get those without writing a function. ## What does a Base44 lead form look like with Formbold? Base44 front ends use React with React Router, Vite, Tailwind and shadcn/ui. This component fits that setup. Change the import paths if yours differ. ```jsx // src/components/LeadForm.jsx (Base44 front ends use React, Vite, Tailwind and shadcn/ui) // Adjust the "@/components/ui/..." paths if your project uses different ones. import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; export default function LeadForm() { const [sending, setSending] = useState(false); const [msg, setMsg] = useState(null); async function handleSubmit(e) { e.preventDefault(); const form = e.currentTarget; setSending(true); const reply = await fetch("https://formbold.com/s/FORM_ID", { method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json" }, body: JSON.stringify(Object.fromEntries(new FormData(form))), }) .then(async (r) => ({ ok: r.ok, data: await r.json().catch(() => ({})) })) .catch(() => ({ ok: false, data: {} })); setSending(false); if (reply.ok) { form.reset(); setMsg({ tone: "good", text: "You're on the list. We'll be in touch this week." }); } else { setMsg({ tone: "bad", text: reply.data.message || "Something blocked the request." }); } } return (

{{ statusMessage }}

``` ## Setting it up in Nuxt 1. **Create a form**: Click Create New Form in Formbold. You can have 10 on Free. 2. **Point $fetch at Formbold**: Use your https://formbold.com/s/FORM_ID address, from the Form Setup tab, as the $fetch URL. 3. **Test with npm run dev**: Submit once on localhost:3000 and check Submissions. ## What does Formbold handle for a Nuxt app? - **No server/api route**: Nothing for Nitro to handle, so nuxi generate and static hosting work. - **Spam checks for $fetch submits**: Turn on Basic Spam Filter. $fetch counts as a script submit, so use Custom reCAPTCHA if you want a captcha. - **File uploads**: Starter and higher. Send a FormData object as the body when the form has a file input. - **Slack, Telegram or Discord**: From Starter, the Integrations tab forwards each entry to chat apps, Notion, Google Sheets or a webhook. ## Frequently asked questions ### Do I need a server route in server/api? No. The component posts to Formbold directly. Add a server route only if you want to change the data before it's sent. ### Does it work with nuxi generate? Yes. The request comes from the browser, so a fully static build works the same as SSR. ### Why $fetch and not useFetch? useFetch is for loading data when a page renders. A form submit is a one-off call the visitor triggers, which is what $fetch is for. ### Can I send files with $fetch? You can on Starter and higher. Pass a FormData object as the body instead of the reactive form, and let the browser set the headers. ### What's the cheapest way to run this? Free: 250 submissions a month on 10 forms. Paid plans start at $8 a month, or $6 billed yearly. --- # A React contact form with no backend to deploy Source: https://formbold.com/platforms/react 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. ```tsx // src/components/ContactForm.tsx import { useState } from "react"; export default function ContactForm() { const [loading, setLoading] = useState(false); const [responseMessage, setResponseMessage] = useState(""); async function handleSubmit(event: React.FormEvent) { event.preventDefault(); setLoading(true); const formData = new FormData(event.currentTarget); const json = JSON.stringify(Object.fromEntries(formData)); try { const response = await fetch("https://formbold.com/s/FORM_ID", { method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json", }, body: json, }); const result = await response.json(); if (response.ok) { setResponseMessage(result.message || "Message sent successfully!"); (event.target as HTMLFormElement).reset(); } else { setResponseMessage(result.message || "Something went wrong"); } } catch (error) { setResponseMessage("Failed to send message."); } finally { setLoading(false); setTimeout(() => setResponseMessage(""), 4000); } } return (
{/* Email Address */}
{/* Subject */}
{/* Message */}
{#if status}

{status}

{/if} ``` ## How do I connect SvelteKit to Formbold? 1. **Create the form**: In the Formbold dashboard, create a form and copy https://formbold.com/s/FORM_ID from Form Setup. 2. **Add the component**: Save ContactForm.svelte under src/lib or a route. Give every control a name attribute so FormData keys stay readable. 3. **Test in npm run dev**: Submit once, then check Submissions and your inbox. No +page.server.js handler is required for this path. ## What Formbold covers for a Svelte app - **No +page.server required**: Browser fetch to Formbold is enough for a contact page. Keep server actions for app-specific logic. - **Spam filter in the dashboard**: Basic Spam Filter is a Settings toggle. Add Custom reCAPTCHA when traffic gets noisy. - **File size limits on paid plans**: Starter and up accept uploads at 10 MB, 25 MB or 50 MB by plan. Send FormData without setting Content-Type. - **Integrations from Starter**: Slack, Telegram, Notion, Sheets, webhooks and more sit on the Integrations tab for Starter and higher. ## Frequently asked questions ### Should I use a SvelteKit form action instead? You can, and post from the server action to Formbold if you want. The fetch example keeps everything in the component and matches how the homepage Ajax tab works. ### Why not put {form_id} in the action string? In Svelte, curly braces interpolate. The homepage snippet used that on purpose. For a fixed endpoint, paste the full URL or build it as a string so you do not surprise yourself. ### Does progressive enhancement work? A plain method="POST" action still works without JavaScript. Use fetch when you want JSON status text without a full page load. ### Can I use this from a plain Vite Svelte app? Yes. There is no Kit-only API in the snippet. Any Svelte app that can call fetch is fine. ### Do I need to pay to try it? No. Free has 250 submissions a month and 10 forms, with email notifications and API access. Starter costs $8 a month, or $6 billed yearly. ### Where do MCP and the API fit? API and MCP are available on every plan. Use tokens only in server code, never in a .svelte file shipped to the browser. --- # TanStack Start contact form, no server route Source: https://formbold.com/platforms/tanstack TanStack Start and Router already give you file routes. Point the form at a Formbold endpoint with fetch and Accept: application/json, and skip writing your own API route. Free covers 250 submissions a month and 10 forms. ## What does a TanStack Start contact form look like? Same createFileRoute pattern as the homepage tab, with loading state and a JSON POST. Replace FORM_ID. Works in TanStack Start and any TanStack Router app that can call fetch in the browser. ```tsx // src/routes/contact.tsx import { useState } from "react"; import { createFileRoute } from "@tanstack/react-router"; export const Route = createFileRoute("/contact")({ component: ContactForm, }); function ContactForm() { const [loading, setLoading] = useState(false); const [status, setStatus] = useState(""); async function onSubmit(event: React.FormEvent) { event.preventDefault(); setLoading(true); const formData = new FormData(event.currentTarget); const payload = Object.fromEntries(formData.entries()); try { const response = await fetch("https://formbold.com/s/FORM_ID", { method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json", }, body: JSON.stringify(payload), }); const result = await response.json(); if (response.ok) { setStatus(result.message || "Message sent."); event.currentTarget.reset(); } else { setStatus(result.message || "Something went wrong."); } } catch { setStatus("Could not reach Formbold."); } finally { setLoading(false); setTimeout(() => setStatus(""), 4000); } } return (

{{ statusMessage }}

``` ## Getting a Vue form to send 1. **Create a form**: Sign in and click Create New Form. Free includes 10 forms. 2. **Paste the endpoint**: Swap FORM_ID in the fetch URL for the ID shown on your Form Setup tab. 3. **Send a test**: Run your dev server, submit once and check Submissions. ## What does Formbold do for a Vue form? - **No server setup**: No Express app or function to deploy. The component posts to one URL. - **Spam filtering, captcha optional**: Basic Spam Filter is a single switch in Settings. This form uses fetch, so Custom reCAPTCHA is the captcha that fits. - **File uploads**: Starter and higher. v-model can't hold files, so send FormData when you add a file input. - **Zapier and Make, too**: Starter and higher send entries to Zapier, Make, Slack, Notion or Google Sheets, or to a webhook. ## Frequently asked questions ### Do I need a backend or a plugin? No. The fetch call in the component is all it takes. ### Why are some fields missing? The snippet sends the form object as JSON, so every field needs a key in that object and a v-model. Add both when you add a field. ### Does this work with Vue 2? The template does. Move the logic into data() and methods if you're on the Options API, and keep the same fetch call. ### How do I add a file input? v-model can't hold files, so build the body with new FormData(event.target) and leave out the Content-Type header. Uploads need Starter or higher. ### Is Formbold free? Up to a point. Free covers 250 submissions a month on 10 forms, and Starter is $8 a month, or $6 billed yearly. --- # Webflow forms with a custom action Source: https://formbold.com/platforms/webflow Webflow lets you set a custom action on a form block. Point it at your Formbold endpoint and submissions go to your inbox and your Formbold dashboard, with integrations on paid plans. ## What do I paste into Webflow? You have two options. Keep your designed form and paste your endpoint into the Action field of the form block settings, or drop this HTML into a Code Embed element. Replace FORM_ID either way. ```html
``` ## Three changes in the Designer 1. **Create a form**: Sign up and click Create New Form in Formbold. Free gives you 10 forms. 2. **Set Action and Method**: Select the Form Block, open its settings, paste https://formbold.com/s/FORM_ID into Action and set Method to POST. 3. **Publish and test**: Publish the site, submit the form once and check Submissions in Formbold. ## What does Formbold add to a Webflow form? - **Keep your Webflow design**: Only the form's Action and Method change. Your styling and layout stay as they are. - **Automatic reCAPTCHA**: A form block posts natively, so Automatic reCAPTCHA works with no keys. Turn on Basic Spam Filter too. - **File uploads**: With the Code Embed version, add a file input and enctype="multipart/form-data". Starter and higher. - **Integrations**: Starter and higher send entries to Slack, HubSpot, Mailchimp, Google Sheets, Zapier, Make and more. ## Frequently asked questions ### Do submissions still show up in Webflow? No. With a custom action the data goes to Formbold instead, so you'll find entries in Formbold's Submissions tab and your inbox. ### Why do my emails show labels like Field 2? Webflow names fields automatically. Rename each field in its settings, for example to email or message, and your emails and Submissions table become readable. ### Can I send visitors to my own thank-you page? Yes. Set a Redirect URL in Formbold under Settings > Email Configuration. Redirects are on Starter and higher. ### Which spam settings should I turn on? Both of them. Basic Spam Filter and Automatic reCAPTCHA work with a native form block post, and they're in Settings > Spam & Security. ### How much does Formbold cost? Free covers 250 submissions a month on 10 forms. Starter, at $8 a month or $6 billed yearly, adds redirects, uploads and integrations. --- # Make the v0 contact form send for real Source: https://formbold.com/platforms/v0 v0 draws a tidy shadcn/ui form and then, more often than not, finishes it with a pretend submit. Swap that for your Formbold endpoint. The design stays, the placeholder goes, and each entry is stored and emailed, in the v0 preview and after you publish to Vercel. ## What does the finished v0 component look like? A client component using the shadcn/ui pieces v0 already generated. The endpoint comes from NEXT_PUBLIC_FORMBOLD_ENDPOINT if you set it. Full walkthrough: /docs/v0-contact-form. ```tsx "use client"; // components/contact-section.tsx (Next.js + shadcn/ui, the way v0 scaffolds it) import { useState, type FormEvent } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; const endpoint = process.env.NEXT_PUBLIC_FORMBOLD_ENDPOINT ?? "https://formbold.com/s/FORM_ID"; export default function ContactSection() { const [state, setState] = useState<"ready" | "posting" | "ok" | "fail">("ready"); async function submit(e: FormEvent) { e.preventDefault(); const el = e.currentTarget; setState("posting"); try { const r = await fetch(endpoint, { method: "POST", headers: { Accept: "application/json", "Content-Type": "application/json", }, body: JSON.stringify(Object.fromEntries(new FormData(el))), }); if (!r.ok) throw new Error(String(r.status)); el.reset(); setState("ok"); } catch { setState("fail"); } } return (
``` ## How do I make an HTML form send email? 1. **Create a free account**: Sign up and click Create New Form. The Free plan gives you 10 forms and 250 submissions a month. 2. **Set the action URL**: Copy https://formbold.com/s/FORM_ID from Form Setup into the form's action attribute. Give every input a name, such as name, email and message. 3. **Upload and test**: Publish the page, or open it locally, and send one entry. You'll see it in Submissions and in your inbox. ## What happens after someone clicks Submit? - **No PHP, no mail server**: Works on GitHub Pages, Netlify, Cloudflare Pages, S3 or plain shared hosting, because nothing runs on your server. - **An email per entry**: On every plan. Starter lets you add CC, BCC and more recipients. - **Automatic reCAPTCHA**: Plain HTML posts can use Automatic reCAPTCHA, which needs no keys and no code changes. Pair it with Basic Spam Filter. - **File uploads**: Add enctype="multipart/form-data" and a file input. Uploads are on Starter and higher, up to 50 MB per file on Business. - **Your own thank-you page**: Set a Redirect URL in Settings > Email Configuration and visitors land on your page after they submit. Starter and higher. ## Frequently asked questions ### Do I need JavaScript? No. The browser sends the form on its own once action and method are set. Add JavaScript later only if you want visitors to stay on the page. ### Why are some fields missing from my email? Those inputs have no name attribute. The browser only sends fields that have a name, and that name becomes the label in your email. ### Can visitors attach files? Yes, on Starter and higher. Add enctype="multipart/form-data" to the form tag and an input with type="file" and a name. Starter accepts 5 files of up to 10 MB per submission. ### How do I stop spam? Turn on Basic Spam Filter and Automatic reCAPTCHA in Settings > Spam & Security. Both work with a plain HTML form, and neither needs a code change. ### Is it free? Yes, for up to 250 submissions a month across 10 forms. Starter costs $8 a month, or $6 billed yearly, and raises that to 3,000 submissions with unlimited forms. --- # Hugo contact form as a partial Source: https://formbold.com/platforms/hugo Hugo builds plain HTML, and a plain HTML form is all Formbold needs. Save the form as a partial, point it at your endpoint, and every submission is emailed to you. ## What do I put in the partial? Save this as layouts/partials/contact-form.html and call it from any layout with {{ partial "contact-form.html" . }}. Replace FORM_ID with the ID from your Form Setup tab. ```html
``` ## Setting it up in Hugo 1. **Create a form**: In Formbold, click Create New Form and copy the endpoint. Free gives you 10 forms. 2. **Save the partial**: Paste the form into layouts/partials/contact-form.html with your endpoint in the action attribute. 3. **Test with hugo server**: Submit once on localhost:1313 and check Submissions before you deploy. ## Formbold on a Hugo site - **No server in your stack**: Deploy to Netlify, Cloudflare Pages, GitHub Pages or S3 as usual. Nothing new runs anywhere. - **Captcha without keys**: Hugo outputs a native HTML post, so Automatic reCAPTCHA works without any keys. Turn it on along with Basic Spam Filter. - **Uploads on paid plans**: Starter and up. Give the partial's form tag enctype="multipart/form-data" and add a named file input. - **Thank-you page**: On Starter and higher, set a Redirect URL to a Hugo page such as /thanks/. ## Frequently asked questions ### Can I put the form inside a Markdown page? Not directly, because Hugo doesn't render raw HTML in Markdown by default. Save the form as layouts/shortcodes/contact-form.html and write {{< contact-form >}} in your content instead. ### Do I need JavaScript? No. A plain post works on its own. Add fetch later only if you want an inline success message. ### Do I have to touch the templates for spam protection? No. Basic Spam Filter and Automatic reCAPTCHA are both switches in Settings > Spam & Security. ### Can the partial take file uploads? On Starter and higher, yes. Starter accepts 5 files of up to 10 MB per submission. ### What does Formbold cost for a Hugo blog? Most blogs stay on Free, which is 250 submissions a month on 10 forms. Starter is $8 a month, or $6 billed yearly. --- # A Jekyll contact form that works on GitHub Pages Source: https://formbold.com/platforms/jekyll GitHub Pages can't run server code, so a Jekyll form needs somewhere to send its data. Point it at your Formbold endpoint and each submission goes to your inbox. ## The include file This form. Save it as _includes/contact-form.html, then add {% include contact-form.html %} to any page or layout. Swap in your own form ID for FORM_ID. ```html
``` ## Three steps, no plugins 1. **Create a form**: In the dashboard, hit Create New Form. Naming it after the repo helps once you have a few sites. 2. **Save the include**: Paste the form into _includes/contact-form.html with your endpoint in the action attribute. 3. **Test with jekyll serve**: Run bundle exec jekyll serve, submit once on localhost:4000 and check Submissions. Then push to GitHub. ## Why it builds fine on GitHub Pages - **Works on GitHub Pages**: No plugins, so it builds fine with GitHub Pages and its plugin allowlist. - **reCAPTCHA with no setup**: Because the include is a plain HTML form, Automatic reCAPTCHA needs no keys. Switch it on next to Basic Spam Filter. - **File uploads**: Starter and higher. The include needs enctype="multipart/form-data" plus a file input with a name. - **Thank-you page**: On Starter and higher, set a Redirect URL to a page like /thanks/ in your site. ## Frequently asked questions ### Does it work on GitHub Pages? Yes. The form is static HTML and Formbold does the receiving, so there's nothing for GitHub Pages to run. ### Can I paste the form into a Markdown post? Yes. kramdown passes raw HTML through, so you can paste the form into a .md file or use the include tag. ### How do I send visitors to a thank-you page? Create a page at /thanks/, then paste its full URL into Redirect URL under Settings > Email Configuration. That setting needs Starter or higher. ### Is there a spam setting that doesn't need a plugin? Two of them. Basic Spam Filter and Automatic reCAPTCHA are toggles in Settings > Spam & Security, so your _includes stay as they are. ### Is it free for a GitHub Pages site? Yes, up to 250 submissions a month on 10 forms. Starter is $8 a month, or $6 billed yearly, for 3,000. --- # Tally vs Formbold: Form Builder or Form Backend? Source: https://formbold.com/alternatives/tally Tally is a free form builder with optional Pro at $24/month. Formbold is a form backend for forms you build yourself, with an API and integrations. ## Feature Comparison | Feature | Formbold | Tally | | --- | --- | --- | | Free Plan | Yes (250 submissions/month, 10 forms) | Yes (Unlimited forms & submissions) | | Remove Branding | Premium and Business plans | Paid (Starts at $24/mo) | | Forms & Submissions | 10 forms and 250 submissions a month on Free; unlimited forms and 3,000 to 30,000 submissions a month on paid plans | Unlimited (Fair usage applies) | | Form Builder UI | No builder: use your own HTML or framework form | Rich drag-and-drop UI | | Form Dashboard | Yes (all plans) | true | | File Uploads | Starter and higher (10 MB per file on Starter, up to 50 MB on Business) | Free (10MB) / Unlimited (Pro) | | Email Notifications | All plans; autoresponders on Premium and Business | Free, with Pro options | | Webhook Support | Starter and higher | Free | | Third-party Integrations | Starter and higher: Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks | Google Sheets, Notion, Airtable, Zapier, Make | | Developer API | Every plan, including Free | No developer API | | Custom Thank You Page | Starter and higher | true | | Conditional Logic | In your own form code | true | | Collaboration & Workspaces | Workspaces and up to 20 members, by plan | Paid plans only | | Partial Submissions | Not Available | Pro only | | GDPR and DPA | Yes, DPA available | Yes. DPA accepted with its Terms, EU-based | | Pricing (Monthly) | $8/month, or $6/month billed yearly | Starts at $24/month | ## What is Tally? Tally is a free-first visual form builder with unlimited forms and submissions under fair use. Pro removes branding and adds collaboration features. ![Tally homepage for free form builder](#) ## What does Tally cost? ![Tally pricing page with Free Pro and Business plans](#) - Free: unlimited forms/submissions (fair use), payments, signatures, 10 MB uploads, conditional logic - Pro $24/month: remove branding, custom domains, workspaces, partial submissions, unlimited uploads - Business $74/month: retention controls, email verification ## Why pick Formbold over Tally? Formbold is a form backend: point any HTML or JavaScript form at your Formbold endpoint, and it stores each submission, filters spam and sends it to email, Slack, Google Sheets, webhooks and 8 other apps, with no server to run. The REST API and MCP work on every plan, including Free. - HTML/React/Webflow endpoint without rebuilding forms in Tally - Starter at $8/month, or $6/month billed yearly - Native chat and CRM integrations from Starter ## Who should choose Tally vs Formbold? Choose Tally to design forms in their builder for free. Choose Formbold when the form already lives on your site and you need a backend. ## Frequently asked questions ### Is Tally free forever? Tally offers unlimited forms and submissions under a fair use policy. But features like branding removal, custom domains, and advanced integrations require the $24/month Pro plan. ### Can Formbold replace Tally? Often, yes. If your forms live on a static site, a client project or a SaaS app, Formbold gives you an endpoint, a dashboard and integrations without a form builder. ### Does Formbold support conditional logic? Formbold doesn't render your form, so conditional logic lives in your own form code. You can also route submissions with webhooks, Zapier or Make. ### Who should use Formbold? Developers, freelancers, startups and agencies who build their own forms and want submissions in email, Slack, Notion or their own API. ### Which offers better long-term value? It depends on how you build forms. Tally is better value if you want its editor. Formbold is better value if you only need a backend, with 3,000 submissions a month on Starter. --- # Formspark vs Formbold: One-Time Pricing or a Monthly Plan? Source: https://formbold.com/alternatives/formspark Formspark sells submissions as a one-time pack ($25 promotional upgrade). Formbold is a monthly or yearly plan with integrations and webhooks. ## Feature Comparison | Feature | Formbold | Formspark | | --- | --- | --- | | Free Plan | Yes (250 submissions/month, 10 forms) | Yes (250 One-time) | | Pricing Model | Subscription: $8/month, or $6/month billed yearly | One-time payment ($25 or $50) | | Monthly Submissions | 250 (Free), 3,000 (Starter), 10,000 (Premium), 30,000 (Business) | 50,000 (then repurchase required) | | Forms / Endpoints | 10 (Free), unlimited on Starter, Premium and Business | Limited (based on usage) | | Autoresponders | Premium and Business | Not Supported | | Custom Redirects | true | true | | Webhooks | Starter and higher | true | | CSV Export | All paid plans (Starter, Premium and Business) | true | | API Access | Every plan, including Free | true | | Custom Branding Removal | Premium and Business plans | Not Available | | Integrations (Slack, etc.) | Starter and higher | No integrations | | Templates | Yes (Free) | No built-in templates | | GDPR and DPA | Yes, DPA available | Yes. DPA for every customer, no signature needed | | Support | Email support, priority on paid plans | Basic support only | ## What is Formspark? Formspark sells submission packs as one-time purchases instead of a monthly subscription. Free accounts get 250 submissions that never expire. ![Formspark homepage for one-time form backend packs](#) ## What does Formspark cost? ![Formspark pricing page showing free and upgrade pack](#) - Free: 250 submissions, 10 forms, 5 team members - Upgrade pack: $25 one-time (promotional; list $50) for 50,000 submissions, 100 forms, 50 members - Webhooks, Slack, Zapier, Sheets, Notion, REST API; spam tools including Turnstile and hCaptcha ## Why pick Formbold over Formspark? Formbold is a monthly or yearly subscription with integrations and team features that renew every month. The REST API and MCP work on every plan, including Free. Webhooks start on Starter. - 3,000 submissions every month on Starter ($8/month, or $6/month billed yearly) - Native integrations and webhooks from Starter - CSV export on all paid plans ## Who should choose Formspark vs Formbold? Formspark can be cheaper if your volume is tiny and bursty. Formbold is simpler when you want a predictable monthly allowance and built-in integrations. ## Frequently asked questions ### Does Formspark support email notifications or autoresponders? Formspark doesn't send autoresponses. Formbold includes autoresponders on the Premium and Business plans. ### Can I remove branding with Formspark? Formspark doesn't offer branding controls. Formbold removes its branding on the Premium and Business plans. ### Is Formspark cheaper than Formbold in the long run? It depends on volume. Formspark's one-time packs suit low, steady traffic. Formbold charges a monthly or yearly fee with a monthly submission allowance: 3,000 on Starter up to 30,000 on Business. ### Does Formspark support integrations like Slack or Discord? Formspark has few native integrations. Formbold connects to Slack, Discord, Telegram, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier and Make from the Starter plan. ### Which platform is better for professional use or agencies? Formbold, because it adds team members, workspaces, integrations and autoresponders as you move up the plans. --- # Web3Forms vs Formbold: Form Backends Compared Source: https://formbold.com/alternatives/web3forms Web3Forms is a lightweight HTML form backend with a forever-free plan. Compare its Free, Starter, Pro and Agency limits with Formbold. ## Feature Comparison | Feature | Formbold | Web3Forms | | --- | --- | --- | | Free Plan | Yes (250 submissions/month, 10 forms) | Yes (250 submissions/month, unlimited forms) | | Forms | 10 (Free), unlimited on paid plans | Unlimited (fair use) | | Monthly Submissions (Paid) | 3,000 (Starter), 10,000 (Premium), 30,000 (Business) | 5,000 (Starter yr), 10,000 (Pro), 20,000 (Agency) | | Spam Protection | Spam filter and reCAPTCHA on all plans | hCaptcha, reCAPTCHA, Turnstile | | File Uploads | Starter and higher (10 MB per file on Starter, up to 50 MB on Business) | Pro and Agency (5 to 10 GB) | | Custom Redirects | Starter and higher | All plans (per their pricing table) | | Autoresponder Emails | Premium and Business | Pro and Agency | | Submission Dashboard | Yes (all plans) | Yes (account / paid features) | | Webhooks | Starter and higher | Listed on Free and up in their table | | CSV Export | All paid plans (Starter, Premium and Business) | Listed on Free and up in their table | | Submission API | Every plan, including Free | Listed on Free and up in their table | | Form Branding | Removed on the Premium and Business plans | Remove branding add-on (~$9/mo) or Agency | | Third-Party Integrations | Starter and higher: Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks | Sheets, Slack, Discord, Telegram on Free table; more on Pro | | Trusted Domains | Starter and higher | Pro plan and higher | | GDPR and DPA | Yes, DPA available | Yes. DPA is part of its Terms | | Developer Experience | Dashboard, webhooks and REST API | HTML endpoint plus dashboard on paid | | Pricing (Starting Plan) | $8/month, or $6/month billed yearly | Pro $12/month billed yearly ($149/yr); Starter $49/year | ## What is Web3Forms? Web3Forms is an HTML form backend aimed at static sites. You point your form at their endpoint and get email delivery, spam tools and optional integrations. The Free plan includes 250 submissions a month. ![Web3Forms homepage for HTML form API](#) ## What does Web3Forms cost? ![Web3Forms pricing page with Free Starter Pro and Agency](#) - Forever-free plan with 250 submissions and unlimited forms (fair use) - Starter at $49/year (5,000 submissions) and Pro at $12/month billed yearly (10,000 submissions, file uploads) - Spam options: hCaptcha, reCAPTCHA v3, Turnstile and honeypot - Webhooks, Sheets, Slack, Discord and Telegram listed across plans on their pricing table ## Why pick Formbold over Web3Forms? Formbold centres on a submission dashboard, team workspaces and a fixed set of native integrations from Starter. REST API and MCP work on every plan, including Free. - Dashboard to view and search submissions on every plan - Integrations and file uploads from the Starter plan ($8/month, or $6/month billed yearly) - CSV export on every paid plan - Workspaces and up to 20 team members on higher plans ## Who should choose Web3Forms vs Formbold? Choose Web3Forms if you want the cheapest forever-free HTML endpoint and are fine with their add-ons. Choose Formbold if you want a clearer free tier for forms count, a full dashboard and native integrations on the first paid plan. ## Frequently asked questions ### Is Formbold better than Web3Forms for integrations? Formbold includes Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks from Starter. Web3Forms lists several chat and Sheets options on its pricing table; check which tier includes each one. ### Does Web3Forms provide a submission dashboard? Yes. Web3Forms has moved beyond email-only delivery and offers account features and a dashboard on its current product. Formbold includes the dashboard on Free. ### Which service is more affordable? Both have a free plan with 250 submissions. Formbold Starter is $8/month ($6 yearly). Web3Forms Pro is about $12/month billed yearly. Compare the features you need on each pricing page. ### Can I use Formbold with Webflow or Framer? Yes. Point any HTML form at your Formbold endpoint. ### What is the biggest benefit of Formbold? A dashboard on every plan, plus integrations, webhooks and file uploads from Starter. --- # Typeform vs Formbold: Form Builder or Form Backend? Source: https://formbold.com/alternatives/typeform Typeform builds conversational forms and surveys. Formbold is a form backend for forms you already design. Compare Basic pricing and response limits. ## Feature Comparison | Feature | Formbold | Typeform | | --- | --- | --- | | Free Plan | Yes (250 submissions/month, 10 forms) | Limited free plan (exact response cap varies; paid plans start at Basic) | | Backend Setup | No server required | Hosted form builder, not an HTML endpoint | | File Uploads | Starter and higher (10 MB per file on Starter, up to 50 MB on Business) | On paid plans | | Branding Removal | Premium and Business plans | Plus and higher (Plus is $79/month, or $56/month billed yearly) | | Team Collaboration | 1 (Free), 2 (Starter), 5 (Premium), 20 (Business) | 1 (Basic), 3 (Plus), 5 (Business) | | Spam Protection | Spam filter and reCAPTCHA on all plans | CAPTCHA / anti-spam options | | Monthly Submissions | 250 (Free), 3,000 (Starter), 10,000 (Premium), 30,000 (Business) | Basic 100, Plus 1,000, Business 10,000 responses/mo | | Integrations | Starter and higher: Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks | HubSpot, Slack, Google Sheets, Zapier and more | | GDPR and DPA | Yes, DPA available | Yes. DPA published | | Pricing (Starting) | $8/month, or $6/month billed yearly | Basic $39/month, or $28/month billed yearly | | Ideal For | Developers and teams with their own forms | Designers and marketing teams | ## What is Typeform? Typeform is a no-code builder for conversational forms, quizzes and surveys. You design forms in their UI. It is not a drop-in backend for your own HTML forms. ![Typeform homepage with AI form builder messaging](#) ## What does Typeform cost? ![Typeform pricing page with Basic Plus and Business plans](#) - Polished builder, templates and AI-assisted forms - Core plans: Basic ($39/mo, or $28/mo billed yearly, 100 responses), Plus ($79/mo or $56/mo yearly, 1,000), Business ($129/mo or $91/mo yearly, 10,000) - Logic jumps, branding controls on higher plans, CRM integrations ## Why pick Formbold over Typeform? Use Formbold when you already have a form in HTML, React, Webflow or a static site and only need submissions handled. - Paste an endpoint into your own form - no Typeform embed - Free plan with 10 forms and 250 submissions - Starter at $8/month, or $6/month billed yearly, with integrations and webhooks - REST API and MCP on every plan, including Free ## Who should choose Typeform vs Formbold? Choose Typeform for guided, branded surveys. Choose Formbold when the form UI is yours and you need a backend, dashboard and integrations. ## Frequently asked questions ### Can I use Typeform on static sites? Yes, but only with iframe embedding. It doesn’t provide a backend form endpoint. ### Does Formbold require a server? No, you just use your Formbold endpoint to collect form data. ### Which is cheaper, Formbold or Typeform? Formbold. Starter costs $8/month, or $6/month billed yearly, and includes file uploads and integrations. Check Typeform's pricing page for its current plans. ### Is Typeform better for surveys? Yes, it's great for interactive surveys and quizzes. Formbold is better for contact forms and static sites. ### Does Formbold support file uploads? Yes, from the Starter plan. Each file can be up to 10 MB on Starter, 25 MB on Premium and 50 MB on Business. ### Can I remove branding on the free plan? Not on Formbold's Free plan. Formbold removes its branding on the Premium and Business plans, and Typeform also requires a paid plan. --- # Formspree vs Formbold to Which Form Backend is Right for You? Source: https://formbold.com/alternatives/formspree Formspree's Personal plan is $15/month, or $10/month billed yearly, for 200 submissions. Formbold Starter is $6/month billed yearly for 3,000 submissions, with integrations included. ## Feature Comparison | Feature | Formbold | Formspree | | --- | --- | --- | | Free Plan | Yes (250 submissions/month, 10 forms) | Yes (50 submissions/month, unlimited forms) | | Pricing | $8/month, or $6/month billed yearly | $15/month, or $10/month billed yearly | | Form Limit | 10 (Free), unlimited on Starter, Premium and Business | Unlimited (all plans) | | Submission Limit (Free) | 250/mo | 50/mo | | Email Notifications | Yes (all plans) | Yes (all plans) | | Custom Redirect | Starter and higher | Personal and higher | | Spam Filtering | Spam filter and reCAPTCHA on all plans | Basic filter on all plans, advanced from Professional | | Autoresponders | Premium and Business | Professional and higher | | API Access | Every plan, including Free | Professional and higher | | Team Collaboration | 1 (Free), 2 (Starter), 5 (Premium), 20 (Business) | 1 (Free, Personal), 2 (Professional), unlimited (Business) | | Form Dashboard | Included (All plans) | Included | | Webhooks | Starter and higher | Professional and higher | | Integrations | Starter and higher: Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks | Email, Slack, Discord, Telegram and WhatsApp on Free; more plugins on paid plans | | CRM and support integrations | HubSpot, Mailchimp and Zendesk from Starter | Premium plugins from Professional | | GDPR and DPA | Yes, DPA available | Says it is GDPR compliant. DPA not stated | | Priority Support | Paid plans | Business and higher (SLA on Custom) | ## What is Formspree? Formspree is a long-running form backend for static sites and developers. Its free plan includes 50 submissions a month, unlimited forms, spam filtering, and email plus chat notifications (including WhatsApp on free). ![Formspree homepage for static site form backends](#) ## What does Formspree cost? ![Formspree plans page with Free Personal Professional and Business](#) - Plans: Free (50/mo), Personal ($15 or $10/mo yearly, 200/mo), Professional ($30 or $20/mo yearly, 2,000/mo), Business ($90 or $60/mo yearly, 20,000/mo) - File uploads from Personal (1 GB, 25 MB per file); larger storage on higher plans - Plugins, custom thank-you pages, webhooks and API on higher tiers ## Why pick Formbold over Formspree? Formbold gives you more submissions for less money, with integrations included from the first paid plan. - More free submissions: 250 a month on Formbold, 50 on Formspree - More paid submissions: 3,000 a month on Starter ($6/month billed yearly) versus 200 on Formspree Personal - REST API and MCP access on every plan, including Free, and webhooks from Starter. Formspree starts both on Professional - Starter costs $8/month, or $6/month billed yearly - All integrations from Starter: Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks ## Who should choose Formspree vs Formbold? Pick Formspree if you need its larger plugin catalog, WhatsApp alerts on the free plan, or an SLA. Pick Formbold if you want more submissions per dollar and integrations from Starter. ## Frequently asked questions ### How many forms can I create with Formbold? The Free plan includes 10 forms and 250 submissions a month. Every paid plan has unlimited forms: Starter ($8/month, or $6/month billed yearly) includes 3,000 submissions a month, Premium 10,000 and Business 30,000. ### Is Formspree more secure? Both use HTTPS endpoints and spam filtering. Formbold also lets you restrict a form to your own domains on Starter and higher plans. ### Can I use Formbold for static sites like Jekyll or Hugo? Yes. Point a plain HTML form at your Formbold endpoint. No JavaScript is required. ### Who is Formbold best for? Developers, freelancers and small teams who build their own forms and want submissions in email, Slack, Notion or their own API. ### What’s the pricing difference? Formbold Starter costs $8/month, or $6/month billed yearly. Formspree Personal costs $15/month, or $10/month billed yearly, and its autoresponses and API access start on Professional at $30/month, or $20/month billed yearly. --- # Getform (Forminit) vs Formbold: Form Backends Compared Source: https://formbold.com/alternatives/getform Getform rebranded to Forminit in 2026. Compare Forminit's Free, Pro and Business plans with Formbold's limits and price per submission. ## Feature Comparison | Feature | Formbold | Getform | | --- | --- | --- | | Free Plan | Yes (250 submissions/month, 10 forms) | Yes (100 submissions/month, 1 form, 100 MB storage) | | Pricing | $8/month, or $6/month billed yearly | Pro $19/month, or $16/month billed yearly ($190/yr) | | Forms | 10 (Free), unlimited on Starter, Premium and Business | 1 (Free), 10 (Pro), unlimited (Business) | | Monthly Submissions (Paid) | 3,000 (Starter), 10,000 (Premium), 30,000 (Business) | 5,000 (Pro), 50,000 (Business) | | File Uploads | Starter and higher (10 MB per file on Starter, up to 50 MB on Business) | Yes (up to 25 MB per file; 100 MB to 10 GB storage by plan) | | Autoresponders | Premium and Business | Pro and Business | | Custom Branding Removal | Premium and Business plans | Business plan | | Custom Redirects | Starter and higher | Paid plans | | CSV Export | All paid plans (Starter, Premium and Business) | Pro and Business | | Webhooks | Starter and higher | Pro and Business | | API Access | Every plan, including Free | Pro and Business | | Integrations | Starter and higher: Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks | Slack, Discord and others on paid plans | | Workspaces | 1 (Free/Starter), 5 (Premium), unlimited (Business) | Business plan | | GDPR and DPA | Yes, DPA available | Yes. DPA accepted with its Terms | | Priority Support | Paid plans | Higher tiers / sales | ## What is Getform (now Forminit)? Getform is a headless form backend for HTML and Jamstack sites. In January 2026 it rebranded to Forminit. The product is the same: you get an endpoint, a dashboard, file uploads, spam filters, webhooks and a REST API. [forminit.com/pricing](https://forminit.com/pricing/) is the current source for plans. ![Forminit homepage formerly Getform](#) ## What does Forminit cost? ![Forminit pricing page with Free Pro and Business plans](#) - Free plan with 1 form, 100 submissions a month and 100 MB file storage - Pro at $19/month ($16/month billed yearly) with 10 forms, 5,000 submissions and 1 GB storage - Business at $99/month ($49.50/month billed yearly, $594/yr) with unlimited forms, 50,000 submissions and 10 GB storage - File uploads up to 25 MB per submission, Turnstile and reCAPTCHA, autoresponders on Pro+ - Webhooks, CSV export, REST API and analytics on Pro and Business ## Why pick Formbold over Getform? Formbold includes more free forms and submissions, and packs integrations into the first paid plan. REST API and MCP work on every plan, including Free. - Free plan: 10 forms and 250 submissions a month (Forminit Free is 1 form and 100) - Starter costs $8/month, or $6/month billed yearly, for unlimited forms and 3,000 submissions - Native Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks from Starter ## Who should choose Forminit vs Formbold? Pick Forminit if you already use Getform, want its typed validation and 25 MB uploads, or need Business workspaces and custom SMTP. Pick Formbold if you want more on the free plan and integrations from the first paid tier. ## Frequently asked questions ### Is Getform the same as Forminit? Yes. Forminit is the new name for Getform.io after the January 2026 rebrand. getform.io redirects to forminit.com. ### Is Formbold better than Getform for integrations? Formbold connects natively to Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks from the Starter plan. ### Do both have a submission dashboard? Yes. Both include a dashboard. Formbold's dashboard is on every plan, including Free. ### Which service is more affordable? Formbold Starter is $8/month, or $6/month billed yearly. Forminit Pro is $19/month, or $16/month billed yearly. Check both pricing pages before you buy. ### Can I use Formbold with Webflow or Framer? Yes. Point any HTML form at your Formbold endpoint, including forms in Webflow, Framer and static site generators. --- # Jotform vs Formbold: Form Builder or Form Backend? Source: https://formbold.com/alternatives/jotform Jotform is a full form builder with payments and HIPAA options. Formbold is a form backend for forms you build yourself. ## Feature Comparison | Feature | Formbold | Jotform | | --- | --- | --- | | Free Plan | Yes (250 submissions/month, 10 forms) | Yes (100 submissions, 5 forms, 100 MB) | | Starting Paid Plan | $8/month, or $6/month billed yearly | Bronze $39/month, or $34/month billed yearly | | Forms Limit | 10 (Free), unlimited on Starter, Premium and Business | 5 (Free) to 100 (Gold); Enterprise unlimited | | Monthly Submissions | 250 (Free), 3,000 (Starter), 10,000 (Premium), 30,000 (Business) | 100 (Free), 1,000 (Bronze), 2,500 (Silver), 10,000 (Gold) | | Form Views Limit | No view limit | 10,000 (Free) up to 10,000,000 (Gold) | | File Uploads | Starter and higher (10 MB per file on Starter, up to 50 MB on Business) | 100 MB (Free) to 100 GB (Gold) | | Branding Removal | Premium and Business plans | Paid plans | | Autoresponders | Premium and Business | Yes | | Webhooks & API | API and MCP on every plan, including Free. Webhooks from Starter | On paid plans | | Slack/Discord/Notion Integrations | Starter and higher | Native widgets and Zapier | | HIPAA Compliance | Not included | Gold and Enterprise | | Team Members & Access Control | 2 (Starter), 5 (Premium), 20 (Business) | Multiuser on Enterprise | | GDPR and DPA | Yes, DPA available | Yes. DPA available on request | | Ease of Use | Simple, endpoint-first | Full visual builder | ## What is Jotform? Jotform is a full visual form platform with payments, PDFs, e-signatures and optional HIPAA on higher plans. It is built for non-developers assembling forms in a browser. ![Jotform homepage for visual form builder](#) ## What does Jotform cost? ![Jotform pricing page with Starter Bronze Silver and Gold](#) - Free Starter: 5 forms, 100 submissions/month, 100 MB storage - Bronze from $39/month ($34/month yearly), Silver $49/month, Gold $129/month - Drag-and-drop builder, payment fields, signed documents, HIPAA on Gold/Enterprise ## Why pick Formbold over Jotform? Formbold is a form backend: point any HTML or JavaScript form at your Formbold endpoint, and it stores each submission, filters spam and sends it to email, Slack, Google Sheets, webhooks and 8 other apps, with no server to run. The REST API and MCP server work on every plan, including Free. Starter costs $8/month, or $6/month billed yearly, and adds webhooks and integrations. - Small teams, MVPs and SaaS: Formbold - Corporate workflows and HIPAA: Jotform ## Who should choose Jotform vs Formbold? Jotform fits HIPAA, e-sign and complex no-code workflows. Formbold fits developers who want an endpoint, dashboard and integrations without a heavy builder. ## Frequently asked questions ### Can I use Formbold for HIPAA-compliant forms? Not currently. If you require HIPAA, Jotform’s Gold or Enterprise plans are more suitable. ### Which is better for developers? Formbold, if you write your own forms. You get an endpoint, a REST API, webhooks and native integrations without a form builder in the way. ### Does Formbold support e-signatures or payments? Not yet. Jotform supports these on paid plans but at higher cost. ### Is there a huge difference in pricing? Yes. Formbold Starter costs $8/month, or $6/month billed yearly. Check Jotform's pricing page for its current paid plans. --- # Formcarry vs Formbold: Form Backends Compared Source: https://formbold.com/alternatives/formcarry Formcarry is a form endpoint API for developers. Compare Baby, Starter, Basic and Premium limits with Formbold. ## Feature Comparison | Feature | Formbold | Formcarry | | --- | --- | --- | | Free Plan | Yes (250 submissions/month, 10 forms) | Yes (Baby: 50 submissions/month, 1 form) | | Starting Paid Plan | $8/month, or $6/month billed yearly | $6/month, or $5/month billed yearly (Starter) | | Forms Limit | 10 (Free), unlimited on Starter, Premium and Business | 1 (Baby), unlimited on paid plans | | Monthly Submissions | 250 (Free), 3,000 (Starter), 10,000 (Premium), 30,000 (Business) | 50 (Baby), 500 (Starter), 2,000 (Basic), 30,000 (Premium) | | Team Members | 1 (Free), 2 (Starter), 5 (Premium), 20 (Business) | 1 (Baby), 3 (Starter), 5 (Basic), more on higher tiers | | File Uploads | Starter and higher (10 MB per file on Starter, up to 50 MB on Business) | Included; about 1 GB (Starter) up to 30 GB (Premium) | | API / Webhooks | API and MCP on every plan, including Free. Webhooks from Starter | REST API and webhooks (plan limits apply) | | MCP / AI access | MCP server on every plan, including Free | Listed on Formcarry plans (MCP Server) | | White-label / Branding | Premium and Business plans | White-label on higher tiers | | Integrations | Starter and higher: Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks | Built-in integrations | | GDPR and DPA | Yes, DPA available | Yes. DPA is part of its Terms | | Pricing Transparency | Four plans, monthly or yearly | Baby, Starter, Basic, Growth, Premium | ## What is Formcarry? Formcarry gives you a form endpoint, a dashboard, a REST API and webhooks. It suits developers who want an API-first backend without building one. ![Formcarry homepage for form endpoint API](#) ## What does Formcarry cost? ![Formcarry pricing page with Baby Starter Basic and Premium plans](#) - Baby (free): 1 form, 50 submissions a month - Starter from $6/month ($5/month yearly) with unlimited forms and 500 submissions - Basic $19/month ($15 yearly) with 2,000 submissions; Premium up to 30,000 - File uploads, MCP server access and built-in integrations on the plan cards ## Why pick Formbold over Formcarry? Formbold Starter costs $8/month, or $6/month billed yearly, for unlimited forms and 3,000 submissions. Integrations and webhooks are included from Starter, and the REST API and MCP server work on every plan, Free included. - 10 forms and 250 submissions a month on Free (vs 1 form and 50 on Baby) - 3,000 submissions on Starter vs 500 on Formcarry Starter - Native Slack, Discord, Telegram, Notion, Google Sheets and more from Starter ## Who should choose Formcarry vs Formbold? Pick Formcarry if you want its large Premium file storage. Pick Formbold if you want more free capacity, more submissions on the first paid plan, and API and MCP access even on Free. ## Frequently asked questions ### Does Formcarry allow unlimited forms on free plans? Formcarry's free plan includes 1 form. Formbold's Free plan includes 10 forms and 250 submissions a month, and every paid plan has unlimited forms. ### Can I upload files with Formbold? Yes, from the Starter plan. Each file can be up to 10 MB on Starter, 25 MB on Premium and 50 MB on Business. ### Which supports more team members? Both offer up to 20 members on their top plans. Formbold includes 2 members on Starter, 5 on Premium and 20 on Business. ### Who is Formbold best for? Developers, freelancers and small teams who build their own forms and want submissions in email, Slack, Notion or their own API. ### What integrations do they support? Formbold connects to Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks, starting on the Starter plan. Formcarry offers its own integrations and API calls. --- # Fillout vs Formbold: Form Builder or Form Backend? Source: https://formbold.com/alternatives/fillout Fillout is a visual form builder with a generous free plan (1,000 responses/month). Formbold is a form backend for forms you already build, from $6/month billed yearly. ## Feature Comparison | Feature | Formbold | Fillout | | --- | --- | --- | | Free Plan | Yes (250 submissions/month, 10 forms) | Yes (unlimited forms, 1,000 responses/month) | | Starting Paid Plan | $8/month, or $6/month billed yearly | Starter $19/month, or $15/month billed yearly | | Monthly Responses Limit | 250 (Free), 3,000 (Starter), 10,000 (Premium), 30,000 (Business) | 1,000 (Free), more on paid plans | | Forms | 10 (Free), unlimited on Starter, Premium and Business | Unlimited on all plans | | Team Members / Seats | 1 (Free), 2 (Starter), 5 (Premium), 20 (Business) | Unlimited seats | | Multi-page Forms | Yes, in your own form code (see the multi-step template) | Supported | | Payment Collection | Not supported | Supported | | File Uploads | Starter and higher (10 MB per file on Starter, up to 50 MB on Business) | Yes | | Form Embedding | true | true | | Remove branding | Premium and Business plans | Paid plans only | | PDF Document Generation | Not supported | Included | | Workflows & Automations | Webhooks, Zapier and Make from Starter | Fillout Workflows | | Integrations | Starter and higher: Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks | Airtable, Google Sheets, Notion, webhooks and more | | GDPR and DPA | Yes, DPA available | Yes. DPA on any plan, EU hosting on Team and up | | Pricing Transparency | Monthly or yearly, prices on the pricing page | Monthly or yearly plans | | Best For | Developers and small teams with their own forms | Teams that want a visual builder and workflows | ## What is Fillout? Fillout is a visual form builder with workflows, PDF generation and unlimited seats. It is aimed at teams who build forms inside Fillout, not at shipping a raw HTML endpoint. ![Fillout homepage with form builder product messaging](#) ## What does Fillout cost? ![Fillout pricing page showing the free forever plan and premium features](#) Free includes unlimited forms and seats, 1,000 responses a month and a 20 MB max file size. Starter is $19/month, or $15/month billed yearly, for 2,000 responses. Pro is $49/month, or $40/month yearly, for 5,000 with branding removed, and Business is $89/month, or $75/month yearly, for unlimited responses. ## Why pick Formbold over Fillout? Formbold is a form backend: point any HTML or JavaScript form at your Formbold endpoint, and it stores each submission, filters spam and sends it to email, Slack, Google Sheets, webhooks and 8 other apps, with no server to run. - Free plan with 10 forms and 250 submissions - Starter at $8/month, or $6/month billed yearly, with integrations and webhooks - REST API and MCP on every plan, including Free; CSV export on all paid plans ## Who should choose Fillout vs Formbold? Choose Fillout if you want an all-in-one builder with seats included. Choose Formbold if your form UI lives in your own codebase and you only need submissions handled. ## Frequently asked questions ### Can I create unlimited forms on the free plan? Fillout allows unlimited forms on its free plan. Formbold's Free plan includes 10 forms and 250 submissions a month, and every paid plan has unlimited forms. ### Do both support file uploads? Yes. Fillout includes file uploads. Formbold includes them from the Starter plan, with up to 10 MB per file on Starter and 50 MB on Business. ### Can I remove form branding on the free plan? Not on Formbold: branding is removed on the Premium and Business plans. Fillout also requires a paid plan. ### Which tool offers workflow automation? Fillout has a built-in Workflows feature. Formbold sends submissions to Zapier, Make or your own webhook, starting on the Starter plan. ### What integrations are available? Fillout connects to Airtable, Google Sheets, Notion and more. Formbold connects to Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks, starting on the Starter plan. --- # Basin vs Formbold: Form Backends Compared Source: https://formbold.com/alternatives/basin Basin is a form backend with a free plan and paid Starter from about $12.50/month billed yearly. Compare submissions, storage and automations with Formbold. ## Feature Comparison | Feature | Formbold | Basin | | --- | --- | --- | | Free Plan | Yes (250 submissions/month, 10 forms) | Yes (50 submissions/month, 1 form, 100 MB, 30-day retention) | | Starting Paid Plan | $8/month, or $6/month billed yearly | Starter about $12.50/month billed yearly (3 forms, 250 submissions) | | Forms | 10 (Free), unlimited on paid plans | 1 (Free), 3 (Starter), unlimited on Growth+ | | Monthly Submissions | 250 (Free), 3,000 (Starter), 10,000 (Premium), 30,000 (Business) | 50 / 250 / 1,000 / 5,000 / 25,000 by tier | | File Storage | Starter and higher (10 MB per file on Starter, up to 50 MB on Business) | 100 MB → 500 MB → 2 GB → 10 GB → 50 GB | | Spam Filtering | Spam filter and reCAPTCHA on all plans | Yes; spam does not count toward limits | | Webhooks / Automations | Starter and higher | Paid plans | | CSV Export | All paid plans (Starter, Premium and Business) | Available on Basin (check plan) | | API Access | Every plan, including Free (REST API and MCP) | Paid features / docs | | Collaborators | 1 (Free), 2 (Starter), 5 (Premium), 20 (Business) | Paid plans (unlimited on higher tiers) | | GDPR and DPA | Yes, DPA available | Yes. GDPR page, and Basin docs say a DPA is part of its Terms | | Trial | No card required on Free | 14-day free trial on paid | ## What is Basin? Basin ([usebasin.com](https://usebasin.com/)) is a form backend for HTML forms. You get an endpoint, spam filtering, file uploads, notifications and automations without hosting your own server. ![Basin homepage showing the hero headline Point any form at Basin](#) ## What does Basin cost? ![Basin pricing page with Starter Growth Pro and Agency plans](#) Free covers 1 form, 50 submissions a month, 100 MB storage and 30-day retention. Starter is about $12.50/month billed yearly for 3 forms and 250 submissions. Growth, Pro and Agency scale from 1,000 to 25,000 submissions with larger storage. Spam does not count toward the monthly cap. ## Why pick Formbold over Basin? Formbold gives a larger free tier and packs native chat and CRM integrations into Starter. - Free: 10 forms and 250 submissions vs Basin's 1 form and 50 - Starter at $8/month, or $6/month billed yearly, with unlimited forms and 3,000 submissions - REST API and MCP on every plan, including Free; webhooks and native Slack, Telegram, Discord, Notion, Sheets and HubSpot from Starter ## Who should choose Basin vs Formbold? Choose Basin if you like its spam-credit model and Agency-scale storage. Choose Formbold if you want more free capacity and built-in integrations from the first paid plan. ## Frequently asked questions ### Is Basin a form builder? No. Basin is a form backend. You keep your own HTML or framework forms and point them at Basin. ### Does Formbold have a free plan? Yes. Free includes 10 forms and 250 submissions a month, with spam filtering and email notifications. ### Which is cheaper for 3,000 submissions? Formbold Starter is $8/month, or $6/month billed yearly, for 3,000 submissions. Basin's closest yearly tiers are lower volume on Starter (250) and higher on Growth (1,000). Compare current Basin pricing for the tier you need. ### Can I use Formbold on static sites? Yes. Paste your Formbold endpoint into any HTML form, including Jamstack and Webflow sites. --- # FormKeep vs Formbold: Form Endpoints Compared Source: https://formbold.com/alternatives/formkeep FormKeep sells form endpoints with a free plan (50 submissions) and Essential from $4.99/month. Compare forms packaging, webhooks and retention with Formbold. ## Feature Comparison | Feature | Formbold | FormKeep | | --- | --- | --- | | Free Plan | Yes (250 submissions/month, 10 forms) | Yes (50 submissions/month, unlimited forms, 1-month retention) | | Starting Paid Plan | $8/month, or $6/month billed yearly | Essential $4.99/month (1,000 submissions, 1 form included) | | Forms Packaging | 10 (Free), unlimited on paid plans | Unlimited on Free; paid plans include 1 to 10 forms then per-form fees | | Monthly Submissions | 250 (Free), 3,000 (Starter), 10,000 (Premium), 30,000 (Business) | 50 / 1,000 / 10,000 / 100,000 by tier | | File Uploads | Starter and higher (10 MB per file on Starter, up to 50 MB on Business) | From Essential (2 GB account, 10 MB per file) | | Webhooks | Starter and higher | Essential and higher | | Autoresponses | Premium and Business | Professional and higher | | Branding Removal | Premium and Business plans | Essential and higher (no FormKeep branding) | | API / Integrations | API and MCP on every plan, including Free. Integrations from Starter | Integrations on Professional+; webhooks earlier | | CSV Export | All paid plans (Starter, Premium and Business) | Export via product tools | | GDPR and DPA | Yes, DPA available | Yes. DPA is part of its Terms | ## What is FormKeep? FormKeep ([formkeep.com](https://formkeep.com/)) provides form endpoints for designers and developers, plus an optional Form Designer. Paid plans add webhooks, file attachments and longer retention. ![FormKeep homepage for HTML form endpoints](#) ## What does FormKeep cost? ![FormKeep pricing page with Free Essential Professional and Premium](#) - Free: unlimited forms, 50 submissions/month, daily email notifications, 1-month retention - Essential $4.99/mo: 1,000 submissions, 1 included form (extra forms $4.99 each), webhooks, files - Professional $19.50/mo and Premium $59/mo raise limits and add autoresponses and teams ## Why pick Formbold over FormKeep? Formbold keeps unlimited forms on every paid plan without per-form add-ons, and includes native integrations from Starter. API and MCP work on every plan, including Free. - Free: 250 submissions and 10 forms vs FormKeep's 50 submissions - Starter: unlimited forms and 3,000 submissions for $8/month ($6 yearly) - Slack, Telegram, Discord, Notion, Sheets and more from Starter ## Who should choose FormKeep vs Formbold? Choose FormKeep if you want its designer and per-form packaging. Choose Formbold if you want more free submissions and unlimited forms on paid plans without extra form fees. ## Frequently asked questions ### Why does FormKeep Essential only include one form? Paid FormKeep plans price forms separately: Essential includes 1 form, then charges per extra form. Free oddly allows unlimited forms at 50 submissions. Formbold includes unlimited forms on every paid plan. ### Does Formbold support webhooks? Yes, on Starter and higher. ### Is Formbold good for static sites? Yes. Point your HTML form at a Formbold endpoint. No server required. --- # FormSubmit vs Formbold: Free HTML Form Backends Source: https://formbold.com/alternatives/formsubmit FormSubmit.co emails you form posts with no signup. Formbold adds a dashboard, plans and integrations. See which fit fits your site. ## Feature Comparison | Feature | Formbold | FormSubmit | | --- | --- | --- | | Free Plan | Yes (250 submissions/month, 10 forms) | Yes (email delivery; no public paid tier on homepage) | | Registration | Account required | No registration required for basic use | | Dashboard | Yes (all plans) | Minimal / email-first | | Custom Redirect | Starter and higher | Yes (`_next` field) | | Autoresponse | Premium and Business | Yes (custom message field) | | Webhooks | Starter and higher | Yes (webhook field) | | Spam Protection | Spam filter and reCAPTCHA on all plans | Optional reCAPTCHA; phrase blacklist | | File Uploads | Starter and higher (10 MB per file on Starter, up to 50 MB on Business) | Not a highlighted product feature | | Integrations | Starter and higher: Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks | Email / webhook oriented | | CSV Export | All paid plans (Starter, Premium and Business) | Not a core dashboard feature | | API Access | Every plan, including Free (REST API and MCP) | Form endpoint only | | GDPR and DPA | Yes, DPA available | Not stated | ## What is FormSubmit? FormSubmit ([formsubmit.co](https://formsubmit.co/)) is a free HTML form endpoint that emails submissions to you. You set the form action to their URL with your address. No account is required for the basic flow. ![FormSubmit homepage with example HTML form endpoint](#) ## How does FormSubmit work? ![FormSubmit documentation for special form fields](#) - No registration for basic email delivery - Special fields: reply-to, subject, redirect, CC, blacklist, autoresponse, webhook - Optional reCAPTCHA; claims millions of submissions processed ## Why pick Formbold over FormSubmit? FormSubmit is fine for a quick contact email. Formbold is built for ongoing products that need a dashboard, team access and integrations. Formbold also includes REST API and MCP access on every plan, including Free. - Searchable submission dashboard on every plan - File uploads, CSV export and native Slack/Telegram/Discord integrations on paid plans - Clear free quota (250 submissions, 10 forms) and paid upgrades ## Who should choose FormSubmit vs Formbold? Use FormSubmit for a disposable contact form with email only. Use Formbold when you need storage, spam controls, uploads and app integrations. ## Frequently asked questions ### Is FormSubmit completely free? Basic email forwarding is free and needs no signup. FormSubmit does not publish a clear paid plan table on its homepage the way Formbold does. ### Can Formbold work without a backend? Yes. Paste your Formbold endpoint into your form action or send a fetch request. ### Does Formbold email submissions? Yes. Email notifications work on every plan. Paid plans add more recipients, apps and webhooks. --- # Kwes Forms vs Formbold: Form Backends Compared Source: https://formbold.com/alternatives/kwesforms Kwes Forms focuses on validated HTML forms with plans from Free (100 submissions) to Bronze at $19/month. Compare validation and limits with Formbold. ## Feature Comparison | Feature | Formbold | Kwes Forms | | --- | --- | --- | | Free Plan | Yes (250 submissions/month, 10 forms) | Yes (1 form, 100 submissions/month) | | Starting Paid Plan | $8/month, or $6/month billed yearly | Bronze $19/month (5 forms, 1,000 submissions) | | Forms | 10 (Free), unlimited on paid plans | 1 / 5 / 20 / 100 / 1,000 by tier | | Monthly Submissions | 250 (Free), 3,000 (Starter), 10,000 (Premium), 30,000 (Business) | 100 / 1,000 / 5,000 / 10,000 / 100,000 | | File Uploads | Starter and higher (10 MB per file on Starter, up to 50 MB on Business) | 1 GB (Bronze) up to 50 GB+ (Platinum) | | Validation | HTML + server-side spam tools | Strong client and server validation, multistep components | | Spam Protection | Spam filter and reCAPTCHA on all plans | Unlimited spam blocks on paid | | Team Users | 1 to 20 by Formbold plan | 1 to 20 extra users by Kwes tier | | Webhooks / API | API and MCP on every plan, including Free. Webhooks from Starter | Backend API for submissions | | CSV Export | All paid plans (Starter, Premium and Business) | Submission storage / export tools | | GDPR and DPA | Yes, DPA available | GDPR listed as "Coming Soon" | ## What is Kwes Forms? Kwes Forms ([kwesforms.com](https://kwesforms.com/)) is a form backend with an emphasis on validation and low-code form components. Agencies use it to ship client forms without building a server. ![Kwes Forms homepage for validated HTML forms](#) ## What does Kwes Forms cost? ![Kwes Forms pricing page with Free Bronze Silver Gold Platinum](#) - Free forever: 1 form, 100 submissions/month - Bronze $19, Silver $39, Gold $99, Platinum $249 per month - File uploads, multistep fields, unlimited spam blocks on paid - 14-day free trial on paid plans ## Why pick Formbold over Kwes Forms? Formbold is cheaper at the first paid step and includes a wide native integration list from Starter. API and MCP work on every plan, including Free. - Free: 10 forms and 250 submissions vs Kwes Free 1 form and 100 - Starter $8/month ($6 yearly) vs Bronze $19/month - Native Slack, Discord, Telegram, Notion, Sheets, HubSpot and more ## Who should choose Kwes Forms vs Formbold? Choose Kwes if you want its validation components and agency tiers. Choose Formbold if you want a larger free tier and lower entry pricing with built-in integrations. ## Frequently asked questions ### Is Kwes Forms only for agencies? It markets to agencies, but freelancers use it too. Plans scale from a small free tier to Platinum. ### Does Formbold validate fields? You validate in your own frontend. Formbold stores submissions, filters spam and routes them to email or apps. ### Which has more free submissions? Formbold Free includes 250/month. Kwes Free includes 100/month. --- # Static Forms vs Formbold: Form Backends Compared Source: https://formbold.com/alternatives/staticforms Static Forms offers a free plan with 250 submissions and Starter from $4/month billed yearly. Compare AI Reply, webhooks and integrations with Formbold. ## Feature Comparison | Feature | Formbold | Static Forms | | --- | --- | --- | | Free Plan | Yes (250 submissions/month, 10 forms) | Yes (250 submissions/month) | | Starting Paid Plan | $8/month, or $6/month billed yearly | Starter $4/month billed yearly ($48/yr) for 3,000 submissions | | Forms | 10 (Free), unlimited on paid plans | Unlimited forms on paid plans | | Monthly Submissions | 250 (Free), 3,000 (Starter), 10,000 (Premium), 30,000 (Business) | 250 / 3,000 / 25,000 / 30,000 | | File Uploads | Starter and higher (10 MB per file on Starter, up to 50 MB on Business) | Starter+: 4.5 MB per file, 1 to 10 GB stored | | AI Reply | Not offered | Paid plans (knowledge-base replies) | | Webhooks | Starter and higher | Starter and higher | | Integrations | Starter and higher: Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks | Slack, Telegram, Discord; Sheets/Notion/Zapier on Pro+ | | CSV Export | All paid plans (Starter, Premium and Business) | Inbox with CSV export | | API / Agents | API and MCP server on every plan, including Free | MCP / agent access on paid | | Branding Removal | Premium and Business plans | Pro and Agency | | GDPR and DPA | Yes, DPA available | Yes. Acts as processor under its DPA | ## What is Static Forms? Static Forms ([www.staticforms.dev](https://www.staticforms.dev/)) is a form backend for static sites. Point your form at their API, get spam filtering, email and optional AI replies from your own docs. ![Static Forms homepage for static site form backends](#) ## What does Static Forms cost? ![Static Forms pricing page with Free Starter Pro and Agency](#) - Free: 250 submissions/month, email notifications, reCAPTCHA v2, 1-year storage - Starter $4/mo yearly: 3,000 submissions, uploads, autoresponder, AI Reply, chat alerts, webhooks - Pro $7.50/mo yearly and Agency $16/mo yearly raise limits and add syncs and team seats - Quota emails at 80% and 90%; optional overage on Pro/Agency ## Why pick Formbold over Static Forms? Both start at 250 free submissions. Formbold focuses on native integrations and a simple four-plan ladder without AI add-ons. API and MCP work on every Formbold plan, including Free. - Native HubSpot, Mailchimp, Zendesk, Make and Zapier from Starter - File uploads up to 10-50 MB per file depending on plan - Payments through Paddle; CSV export on all paid plans ## Who should choose Static Forms vs Formbold? Choose Static Forms if you want AI Reply on a low yearly Starter price. Choose Formbold if you want broader native integrations, larger per-file uploads, and API and MCP access on the Free plan. ## Frequently asked questions ### Do both have a 250-submission free plan? Yes. Both advertise 250 free submissions a month. Formbold also includes 10 forms on Free. ### Does Formbold have AI auto-replies? No. Formbold focuses on delivery to email and apps. You can build replies in your own tools via webhooks. ### Can I use Formbold on Hugo or Jekyll? Yes. Any site that can post an HTML form or fetch request works. --- # Pageclip vs Formbold: HTML Form Backends Compared Source: https://formbold.com/alternatives/pageclip Pageclip is a simple form server with Free (1,000 submissions) and Basic at $9/month. Compare simplicity and limits with Formbold. ## Feature Comparison | Feature | Formbold | Pageclip | | --- | --- | --- | | Free Plan | Yes (250 submissions/month, 10 forms) | Yes (1 site, 1 form, 1,000 submissions) | | Starting Paid Plan | $8/month, or $6/month billed yearly | Basic $9/month (1 site, unlimited forms, 20,000 submissions) | | Sites | Not limited by "sites" | 1 site (Free/Basic), unlimited on Pro+ | | Forms | 10 (Free), unlimited on paid plans | 1 (Free), unlimited on paid | | Monthly Submissions | 250 (Free), 3,000 (Starter), 10,000 (Premium), 30,000 (Business) | 1,000 / 20,000 / 100,000 / unlimited | | Delivery | Email + apps | Email, CSV, JSON, Slack | | JS API | fetch / HTML form | Pageclip.send helper | | Integrations | Starter and higher: Slack, Telegram, Discord, Notion, Google Sheets, HubSpot, Mailchimp, Zendesk, Zapier, Make and webhooks | Slack + export oriented | | File Uploads | Starter and higher (10 MB per file on Starter, up to 50 MB on Business) | Not highlighted | | CSV Export | All paid plans (Starter, Premium and Business) | CSV / JSON export | | GDPR and DPA | Yes, DPA available | GDPR request form. DPA not stated | ## What is Pageclip? Pageclip ([pageclip.co](https://pageclip.co/)) markets itself as "a server for your HTML forms." You point forms at send.pageclip.co or call a small JS API. ![Pageclip homepage for HTML form server](#) ## What does Pageclip cost? Pageclip lists Free (one site, one form, 1,000 submissions), Basic at $9, Pro at $19 and Agency at $49 per month. Email, CSV, JSON and Slack delivery are included. There is no separate public pricing page beyond the homepage plan cards. ## Why pick Formbold over Pageclip? Pageclip is minimal. Formbold adds spam tools, uploads, team seats and a longer integration list. API and MCP work on every Formbold plan, including Free. - 10 forms on Free vs 1 form on Pageclip Free - Starter includes integrations and webhooks for $8/month ($6 yearly) - File uploads and autoresponder on higher Formbold plans ## Who should choose Pageclip vs Formbold? Choose Pageclip for the simplest paid HTML endpoint. Choose Formbold when you need integrations, uploads and a fuller dashboard. ## Frequently asked questions ### Is Pageclip still maintained? The marketing site and homepage pricing were live in October 2026. The dedicated /pricing URL returned 404, so confirm plans on the homepage before you buy. ### Does Formbold support Slack? Yes, on Starter and higher. ### Can I migrate from Pageclip? Yes. Create a Formbold form and point your form action at the new endpoint. --- # Netlify Forms vs Formbold: Form Backends Compared Source: https://formbold.com/alternatives/netlify-forms Netlify Forms only works on Netlify-hosted sites. On current credit plans Forms are free and unlimited. Compare portability with Formbold. ## Feature Comparison | Feature | Formbold | Netlify Forms | | --- | --- | --- | | Works Without Netlify Hosting | Yes, any host | No, forms require a Netlify site | | Free Form Usage | Yes (250 submissions/month, 10 forms) | Unlimited forms on credit-based Netlify plans (per Netlify docs) | | Platform Cost | Formbold plans only | Netlify Free / Personal $9 / Pro from $20 (hosting platform) | | Spam Filtering | Spam filter and reCAPTCHA on all plans | Built-in spam filters | | Notifications | Email on all plans; apps from Starter | Email and Slack-style notifications | | File Uploads | Starter and higher (10 MB per file on Starter, up to 50 MB on Business) | Supported (legacy plans metered storage) | | Webhooks / Functions | Starter and higher | Often paired with Netlify Functions | | API Access | Every plan, including Free (REST API and MCP) | Netlify APIs / functions ecosystem | | CSV Export | All paid plans (Starter, Premium and Business) | Export from Netlify UI | | GDPR and DPA | Yes, DPA available | Yes. DPA is part of its subscription terms | | Portability | Move hosts anytime | Tied to Netlify | ## What are Netlify Forms? Netlify Forms is part of the Netlify platform. You add a netlify attribute to an HTML form on a Netlify site and submissions show up in the Netlify UI. ![Netlify Forms documentation overview page](#) ## What does Netlify Forms cost? ![Netlify pricing page covering platform plans that include Forms](#) - On current credit-based plans, Netlify documents Forms as free and unlimited - Spam filtering and notifications included - Legacy plans metered submissions and uploads per site - Only works when the site is hosted on Netlify ## Why pick Formbold over Netlify Forms? Formbold is portable. You can host on Vercel, Cloudflare Pages, S3, WordPress or a VPS and keep the same endpoint. REST API and MCP work on every plan, including Free. - Works with any host, not only Netlify - Native Telegram, Discord, Notion, HubSpot, Mailchimp, Zendesk, Make and Zapier from Starter - Clear form-only pricing if you do not need Netlify hosting ## Who should choose Netlify Forms vs Formbold? Stay on Netlify Forms if your site is already on Netlify and the free forms quota covers you. Choose Formbold if you want a host-agnostic form API or richer native integrations. ## Frequently asked questions ### Are Netlify Forms free? On Netlify's current credit-based plans, docs say Forms are free and unlimited. Legacy plans used metered levels. Always check Netlify's billing docs for your account type. ### Can I use Formbold on a Netlify site? Yes. Point the form at Formbold instead of using the netlify forms attribute. ### Does Formbold require special hosting? No. Any static or server-rendered site that can POST a form works. --- # Free form templates Source: https://formbold.com/templates Copy-paste HTML, React and Next.js form templates that post to a Formbold endpoint. - [Address Form Template](https://formbold.com/templates/address-form-template): Collects a full postal address, phone, purpose and an optional proof-of-address upload. - [Change Request Form](https://formbold.com/templates/change-request-form-template): Request type, subject, description, priority, completion date and attachments. - [Consent form for website](https://formbold.com/templates/consent-form): A consent form with personal details, date of birth, an ID upload and a terms checkbox. - [Email Newsletter Subscription Form](https://formbold.com/templates/newsletter-subscription-form): A single email field and a subscribe button. The smallest form in the library. - [Email Subscription Form with Call to Action](https://formbold.com/templates/email-subscription-form): One email field with a call-to-action button, styled for a hero or banner. - [Employee Availability Form](https://formbold.com/templates/employee-availability-form-template): Staff availability: days, times, preferred shift, date range, weekly hours and flexibility. - [Event Registration Form](https://formbold.com/templates/event-registration-form): Attendee name, email, phone, job title, company and location. - [Event Sponsorship Form](https://formbold.com/templates/event-sponsorship-form-template): For sponsors: organization, contact, sponsorship type and amount, logo and proposal uploads. - [Feedback Form For Website](https://formbold.com/templates/feedback-form): Three rating questions, a comment box and an optional email. - [Free Hiring Form](https://formbold.com/templates/hiring-form-template): A job application with resume upload, LinkedIn, role, skills, salary, start date and work type. - [Fully Working Chat Box Chat Bubble HTML Form](https://formbold.com/templates/chatbox-form): A floating chat bubble that opens a name, email and message form. - [Fully Working File Upload HTML Form](https://formbold.com/templates/file-upload): An email field and a file input. The shortest way to collect files. - [Fully Working HTML Appointment Form](https://formbold.com/templates/appointment-form): Name, phone, email, preferred date and time, and a full address. - [Fully Working HTML Contact Form](https://formbold.com/templates/contact-form): The classic four fields: name, email, subject and message. - [Fully Working RSVP HTML Form](https://formbold.com/templates/rsvp-form): Guest name, number of guests, date, time and an attending yes or no. - [HTML Contact Form with Attachment and File Upload Support](https://formbold.com/templates/contact-form-with-attachment-and-file-upload): A contact form with name, email, phone, message and one file attachment. - [HTML Quiz Form for Website](https://formbold.com/templates/quiz-form): Name plus three multiple-choice questions with radio buttons. - [HTML Survey Form](https://formbold.com/templates/survey-form): A short survey with name, email, age, an occupation dropdown, two radio groups and a comments box. - [Inquiry Form](https://formbold.com/templates/inquiry-form-template): Business inquiries: company, subject, inquiry type, preferred contact time and an attachment. - [Job Application Form for Website](https://formbold.com/templates/application-form): A general application with position, start date, address, a message and a file upload. - [Multi Step Form](https://formbold.com/templates/multi-step-form): A three-step form: personal details, contact details, then a message, with next and back buttons. - [Reimbursement Form](https://formbold.com/templates/reimbursement-form-template): Expense claims: type, date, amount, payment method, merchant, purpose and a receipt upload. - [Simple HTML Contact Form](https://formbold.com/templates/simple-contact-form): First and last name, email, phone, job title and a message. - [Simple Registration Form](https://formbold.com/templates/registration-form): Name, email, phone, full address, country and a terms checkbox. - [Travel Request Form](https://formbold.com/templates/travel-request-form-template): Internal travel requests: destination, dates, travel mode, budget, hotel and an attachment. --- # How to Create Shareable Forms and Connect Them to Popular Apps Source: https://formbold.com/blog/create-shareable-forms-connect-apps-integrations Published: 2026-04-08 Build powerful shareable forms in minutes with Formbold. Easily connect your forms to apps like Notion, Google Sheets, and Slack—no code needed. Want to **create shareable forms that do more than collect data**? With **Formbold**, you can build interactive, responsive forms in minutes using a drag-and-drop builder, without writing a single line of code. Connect your forms instantly to tools like Slack, Notion, Telegram, Google Sheets, EmailEmailcord, and Zapier using built-in integrations—no manual setup or complex workflows. In this guide, we’ll walk through how to design high-converting forms for real use cases like feedback collection, job applications, and event registrations, and how to automate your workflows with powerful integrations. By the end, you’ll have forms that not only capture responses but turn them into real-time actions and insights. ## Create Shareable Forms with Integration ![Image](#) Create forms that not only collect data but also integrate with the tools you use daily, like sending emails from Google Sheets or getting notifications. In this section, we’ll create three shareable forms using **Formbold’s drag-and-drop builder**: - **Feedback Submission Form** - **Recruitment Submission Form** - **Photography Contest Form** We’ll demonstrate how to use **Formbold’s features and integrations** to create interactive, functional forms. Let’s get started. ### **Feedback Submission Form** ![Image](#) Let's create a Feedback Submission Form step by step using this guide. Before we proceed, ensure you've set up your [Formbold account](https://formbold.com/auth/login). If you haven't done so yet, let's [create one](https://formbold.com/auth/register) for a seamless form-building experience. **Step 1:** Once you log in to your Formbold account, you will be redirected to the dashboard page. Click on the [Form Tab](https://formbold.com/account/forms). Step 2: To create a form, we will use the Form Builder. So, click on the [**Create Form with Builder **](https://formbold.com)**" button.** ![Image](#) **Step 3: **To begin creating the Feedback form, drag the '**Heading**' element from the sidebar and drop it into the dropzone area. (Follow Image.) ![Image](#) **Step 4:** Next, click on the '**Heading**' element in the dropzone. A **property editor** panel will appear on the right side. Enter the heading for the Feedback Form, for instance, '*Feedback Submission Form.*' You can make it bold or italic, just by ticking the options. Don't forget to click on the '**Save**' button to finalize.” ![Image](#) **Step 5**: Similarly, drag the '**Paragraph**' element into the dropzone to provide a brief description of the form. **Step 6:** Now, let's create input fields to collect user information. Drag the '**Text Input**,' '**Email ',** '**Phone Number**' elements into the dropzone. ![Image](#) Click on each element to open the property editor and customize as needed. Don't forget to enable the '**Required**field' option for each input box to ensure users provide the required information. ![Image](#) **Step 7:** Now, let's give users the choice of feedback type they want to submit - whether it's a '**Suggestion**,' '**Problem**,' or '**Question**.' Drag the 'Radio' element into the dropzone to provide these options. Refer to the image for clarity. Use the **'+' and '-'** signs to add or remove options according to your preference.” ![Image](#) **Step 8:** Now, let's allow users to provide feedback by dragging the '**Text Area**' element into the dropzone to create a designated space for the input. Don’t forget to enable the **Required** option. ![Image](#) **Note** that there's no need to add a submit button as one is provided by default. We have successfully added all the required elements to our feedback submission form. Now explore the action section. ![Image](#) The action section contains 5 options: 1. **Save Changes**: To save the changes. 1. **Form Setting**: Make the form name change to formss. 1. **Preview**: To preview the live form. 1. **Theme**: To change the color of the form. 1. **Publish**: To publish the form publicly. **Step 9**: Please refer to the image above and click **option 2**, '*Form Settings*,' to set the form name. And use **option 3** to preview the form. Click on the **Update Form** button to save changes. ![Image](#) **Step 10: **Now, click **Option 5** (refer to the image above) to publish the form and obtain the shareable link, as shown in the image below. ![Image](#) Voila! You've successfully created a shareable Feedback Submission Form. Copy the link and start accepting responses. Now, let’s create a Recruitment Submission Form to explore additional elements and functionalities. ### **Recruitment Submission Form** ![Image](#) Let's begin creating the recruitment submission form. This is crucial for effectively managing applications and selecting suitable candidates. Follow these steps to create a Recruitment Submission Form: **Step 1**: Click on the “**Create Form With Builder**” Button on the forms dashboard to create a new form. **Step 2:** Now, let's drag and drop the 'Heading' and 'Paragraph' elements into the drop zone to create the heading and paragraph for the Recruitment Submission Form. **Step 3**: Next, let's drag and drop the '**Link**' element into the drop zone to create a link for additional information. ![Image](#) **Step 4:** Now, let's proceed to create input boxes for collecting user information. Drag the '**Text** Input,' '**Email** '**Phone Number**' elements into the drop zone to create fields for 'First Name,' 'Last Name,' 'Email 'Phone Number.' As we did earlier, click on each element to open the property editor and customize it. **Step 5**: Now, let's drag and drop the '**Date**' element into the drop zone to collect the date of birth of the candidate. Don't forget to turn on the 'Required' option. ![Image](#) **Step 6**: Let's add an option for choosing a batch. Drag the '**Radio**' element into the drop zone to provide options. Add options like 2021,2022,2023,2024 **Step 7:** Next, create a dropdown menu for branch selection by dragging the 'Dropdown' element into the drop zone. Open the property editor to customize them. **Step 8:** Now, let's create a checkbox for the roles they want to apply for. This allows them to select multiple options. Drag the '**Checkbox**' element into the drop zone. ![Image](#) **Step 9:** Now, to allow candidates to upload their resume and CV, we need to add the '**Upload File**' element if we want to specifically accept PDF files. If we want to allow any file format for CV, we'll use the '**Attach File'** element. So, let's drag and drop the '**Upload File**' and '**Attach File**' elements into the drop zone. Customize the file type for the **'Upload File**' element as PDF. ![Image](#) **Step 10:** Now, let's allow users to provide extra info by dragging the '**Text Area**' element into the dropzone, to provide a specified space for the input. Don’t forget to enable the **Required** option. Congrats, you have successfully created a Recruitment form. Now, please follow the steps discussed in the Feedback Submission Form to save, publish, and share… ### Photography Contest Form ![Image](#) Let's design a Photography Contest Form using Formbold. This form will allow photographers to submit their masterpieces for an exciting contest. In this section, we will guide you to create a photography contest form using Formbold Form Builder. However, we won't discuss each and every step for this form. I encourage you to follow the above form creation steps to enhance your proficiency in creating forms. Let's check out this process. Just providing a basic overview to guide you in creating a Photography Contest Form. I encourage you to try it out on your own. **Step 1**: Create a Heading and give a short description using the “**Heading**” and “**Paragraph**” elements. **Step 2**: Now add an image at the top using the “**image**” element. ![Image](#) **Step 4:** Next, add an option to submit an image file using the “Upload File” element. **Step 5**: Utilize the 'Date' element to prompt users to provide the date on which the image was taken. Additionally, include a 'Text Area' element to allow users to describe their submissions. ![Image](#) That's it! We've covered all the essential elements needed for a photography contest form. Feel free to add more if needed. Happy form creation! Now, go through the step-by-step guide on the different integrations to receive responses on different channels. ### Integration with Email Emaile successfully created various forms, including the Feedback Submission Form, Recruitment Submission Form, and Photography Contest Form, using every element of the Form Builder. Now, it's time to see these forms in action. Formbold seamlessly integrates with email, ensuring you receive timely notifications upon form submission. However, let's go through the integration steps in case you'd like to customize or make modifications. For this purpose and all upcoming app integration demonstrations, we'll utilize the **Feedback Submission Form** we created earlier. Let's go through the steps to integrate. **Step 1**: Navigate to the [Form Dashboard](https://formbold.com/account/forms) and click on 'Settings' in the action section for the Feedback Submission Form. You can do the same for other forms as well. ![Image](#) **Step 2:** In the '**Submission Process**' section, as shown in the image for reference, you can manage various email notification settings. You can toggle email** notifications on or off**, update the target email for receiving notifications, add CC to send a copy of the response, and even customize the email. PS: We suggest you turn the email** notification OFF**, in case you don't wish to fill your mailbox with notifications for each and every response. ![Image](#) **Step 3:** For testing purposes, let's enable the emailemailfication for now. Now, open the public URL of the form and submit a response. If you're unable to find the form's public URL, check the form creation section above… Once you submit a response to the form, you'll receive an emailemailfication like this (below image) for the response. ![Image](#) ### Integration with Apps Formbold offers seamless app integrations with popular channels, including Webhooks, Google Sheets, Telegram, Slack, and Notion. We've already explored the default Email Integration that comes with Formbold. However, for other App integrations, we need to follow certain steps to make them work. To simplify this process, we'll discuss app integrations with different channels one by one, ensuring a smooth setup and understanding. Let's start our app integration journey with Google Sheets, which lets us collect all form responses in an organized spreadsheet. ![Image](#) ### Integration with Google Sheet Google Sheets serves as a central hub, effectively managing and organizing data in a structured format. When you integrate your forms with Google Sheets, you simplify the process of gathering and analyzing form responses. It helps in easy visualization and real-time collaboration with team members. We'll use the Feedback Submission Form to integrate with Google Sheets. Let's integrate ForBold Form with Google Sheets. **Step 1**: Navigate to the Form Dashboard page and click on the 'Apps' tab to discover all the available integration options. Then, click on the '**Google Sheets**' option. ![Image](#) **Step 2: **Next, a login page will open. Log in with your Google account and allow the required permissions to proceed. ![Image](#) **Step 3**: After granting all the required permissions, a pop-up with the Google Sheets link will appear. You can either **copy** this link or **open** it directly to see the response. The great advantage of Google Sheets integration is that you can access all your previous form responses directly in the sheet, ensuring a complete record of all submissions. ![Image](#) Voila! You've successfully integrated Google Sheets with Formbold. Easy, isn't it? Let's now explore integration with the Telegram app. ### Integration with Telegram Integrating your forms with Telegram is like having a direct and always active communication channel. **Formbold Telegram bot **provides instant notifications as soon as a response is received in your inbox, ensuring timely updates and rapid communication. Whether you're in a meeting or out and about, your form's messages reach you wherever you are. Let's explore how to set a connection between Formbold Form and Telegram with easy steps: For this integration process, we'll utilize the *Feedback Submission Form*. **Step 1:** Click on the 'Apps' tab on the Form Setting Dashboard Page, locate the 'Telegram' option, and click on it. ![Image](#) **Step 2:** Next, a pop-up will appear, prompting you to log in to Telegram and grant permission for the Telegram Bot to send you messages. Just log in with the Telegram account where you wish to receive the notifications. ![Image](#) **Step 3**: In this step, you'll need to send a 'Hello' message to the Telegram bot. ![Image](#) Done! You have successfully integrated the Feedback Submission Form with the Formbold Telegram Bot. Now, you will receive a notification for each form submission directly into your Telegram inbox. Let's now explore integration with Slack. ### Integration with Slack Integrating your forms with Slack is like having a dedicated messenger for your team. It ensures everyone receives the response instantly. When your forms are linked with Slack, the entire team can receive real-time updates and engage in discussions about responses, ensuring seamless communication and collaboration. Here's how you can integrate Formbold Form with Slack with easy steps: For the integration with Slack, we'll use the *Feedback Submission Form.* **Step 1:** Click on the '**Apps**' tab on the Form Setting Dashboard Page, locate the 'Slack' option, and click on the **Connect** button. ![Image](#) **Step 2**: Log in with your Slack account and choose the **Slack channel** where you want to receive notifications for form responses. Then, click on the '**Allow**' button to proceed. ![Image](#) **Step 3**: Congratulations! You've successfully integrated the form with the Slack channel. Now, it's time to proceed with testing. Just open the public URL of the Feedback Submission Form, submit a dummy response, and observe it being received in the Slack channel. Upon submitting the response, you'll receive a submission notification like this ( Check the image below) in your Slack channel. ![Image](#) Voila! You have successfully integrated and tested Formbold Form with a Slack channel. Let's now explore integration with Notion. ### Integration with Notion Notion is an all-in-one workspace and collaboration tool that lets users organize, plan, and collaborate on projects across a unified, customizable platform. We will use Notion databases to get responses that can be customized to fit various needs. With Notion integration, responses are neatly organized in the Notion database, offering a smooth retrieval and analysis process. You can structure your data in Notion however you like to best suit your specific needs. Here's how you can integrate Formbold Form with Notion with easy steps: Once more, for the Notion integration, we'll use the Feedback Submission Form. **Step 1:** Click on the 'Apps' tab on the Form Setting Dashboard Page, locate the 'Notion' option, and click on the **Connect** button. ![Image](#) **Step 2**: Log in with your Notion account and select the specific page with the database where you'd like to receive data for form responses. Then, click on the '**Allow**' button to proceed. ![Image](#) **Step 3:** Navigate back to the 'App' page, then click on 'Notion' in the connected Apps section. A pop-up will appear, allowing you to choose the Notion database. Select the appropriate database and click 'Update,' or manually map the table with responses. **Key considerations for Notion integration:** - **Configure Database Connection**: Set up the connection by choosing the Notion database where you want your form responses to go. - **Map Form Fields to Database** ![Image](#) Done! You have successfully integrated a Notion page (database) with Formbold, allowing you to receive data directly in a structured format within the database. Now you can use the response data however you need. Let's now explore integration with Webhooks ( Zapier). ### Integration with Webhooks (Zapier) Webhooks act like messengers, informing other applications instantly when a form is submitted. By linking the forms to webhooks, we can trigger actions in your other tools, saving time and ensuring no responses are delayed. - Webhooks send responses instantly to connected apps, ensuring no delay in processing. - The integration triggers automated actions based on form submissions—such as updating a database, sending an email, or posting a message. - Instead of manually entering data in different applications, webhooks do the job for you. For the integration and demonstration of Webhooks, we'll utilize the popular platform **Zapier**. **Zapier** is like having a dedicated assistant that takes your form responses and performs a series of tasks for you. It listens for form submissions (via webhooks), and when triggered, it initiates a predefined sequence of actions across multiple applications. We will integrate Zapier with Formbold via a Webhook and capture the triggers in a Google Sheet. Once more, for the Webhooks integration, we'll use the Feedback Submission Form. **Here's how you can integrate Formbold Form with Webhooks (Zapier) with easy steps:** **Step 1**: Click on the '**Apps**' tab on the Form Setting Dashboard Page, locate the 'WebHooks' option, and click on the **Connect** button. ![Image](#) Upon clicking the 'Connect' button, a pop-up will appear, prompting you to enter the Webhook response URL. For this, let's proceed to create a Zap on Zapier. #### Creating Zaps for Automation **Step 2:** To create a Zap, log in or sign up on Zapier. Then, click on the 'Create a Zap' option. A similar page (Check the image below) will appear. **Step 3:** Here, you need to select the following option to get a response in the sheet: 1. Connect this app - Webhook by Zapier. 1. With this One! - Google Sheet 1. When this happens - Catch Hooks 1. then do this- Create a Spreadsheet Row. You can also select any action from the dropdown menu as needed. ![Image](#) **Step 4:** Click on the Try it button to create the Zap. **Step 5:** Once the Zap is created, a sidebar with '**App & Event**' will appear. Here, you need to select the '**Catch Hook**' option from the dropdown menu, and then click on the '**Continue**' button. ![Image](#) **Step 6**: Next, in the '**Test**' section, you'll find the **Webhook URL**. We'll need this URL in the upcoming steps to trigger the webhook, so make sure to **copy it**. **Step 7:** Now, click the '**Test trigger**' button to listen for a response at the webhook URL. ![Image](#) **Step 8**: Now, return to Formbold and paste the copied Zapier webhook URL in the Webhook pop-up we left in Step 1. Click on the '**Add Plugin**' button to proceed. ![Image](#) **Step 9:** Now, open the public URL of the form and submit a dummy response to trigger the webhook. Check Zapier to review the raw response data. Once we receive the trigger data, we are ready to proceed to the next part (action) of this integration process. ![Image](#) **Step 10:** Now, click on '**Create a Spreadsheet Row in Google Sheets**' in the main section to open up the 'Action & Event' of this action part. **Step 11**: In the 'App & Event' Google Sheets section, ensure that the '**Create Spreadsheet Row**' option is selected. ![Image](#) **Step 12:** Now, proceed to the Action section. Here, log in with your Google account. Also, create a new sheet to receive the responses with proper columns. We'll need to map it in the next step. ![Image](#) **Step 13**: Now, select the sheet where you want to store the responses. ![Image](#) **Step 14**: Next, map the Google Sheets columns with the Form response fields. Please use the refresh field button to ensure the updated columns from the Google Sheet are reflected. ![Image](#) **Step 15**: Click the 'Continue' button to complete this step. Congratulations! You have successfully completed the integration process. **Step 16: **Now, it's time to test. Submit a dummy response in the Feedback Submission Form and open the Google Sheet to check the response. ![Image](#) Voila! You have successfully integrated and tested the Webhook (Zapier) with Formbold, capturing the Webhook trigger in the Google Sheet. ## Conclusion **To wrap up**, we’ve explored how **Formbold’s drag-and-drop form builder** helps you create interactive, shareable forms in minutes—without any coding. Whether it’s for feedback collection, hiring workflows, or creative contests, Formbold makes form creation effortless and efficient. We also walked through how to **connect your forms with popular tools** like Email, Gmail, Sheets, Telegram, Slack, Notion, and Zapier using Webhooks. Each integration included step-by-step guidance to help you automate workflows and manage responses with ease. Now it’s your turn, **build smart forms, integrate them seamlessly, and turn submissions into insights** that drive better decisions. Your next powerful form is just a few clicks away. **[Try Now!](https://formbold.com/)** --- # Adding A Contact Form to Your React and NextJS Project: A Step-by-Step Guide Source: https://formbold.com/blog/add-contact-form-to-react-and-nextjs Published: 2026-04-02 Learn how simply you can create a contact form for your React.js and Next.js projects with Formbold. Follow our step-by-step guide! Creating a working contact form in a **Next.js or React.js project** and making it work can be difficult. But not anymore, with the help of Formbold Form, you can create forms and make them work without any kind of backend whatsoever. Today **we are going to show you how you can add a fully working form to your Next.js or React.js project.** The Form will work without any backend server all you have to do is attach a Formbold Form endpoint to the Form. So, let’s get started. ### Prerequisites To follow along we assume you have a fundamental knowledge of React or Next.js and how forms work in these libraries. And you have a Formbold account. If you don’t have one go ahead and create one. ## Creating a Formbold Form End-point In order to create a Form on our Next.js project first we will have to create a form in Formbold. And then we will get an endpoint that we can use in our project. Here are the steps you need to follow to create a form in Formbold. 1. Click the Create New button and follow the steps to create a form. ![Image](#) 2. After that go to Settings. ![Image](#) 3. Now click on Integration, you can copy the endpoint of the form we created earlier and use it in your Next.js form. ![Image](#) 4. Or you can scroll down and copy a starter code to test it out. This code snippet comes with a simple form integrated with the Formbold endpoint. We are going to use this code snippet for this article. ![Image](#) Go ahead and copy the code snippet, you’ll need it later. ## Connecting to Next.js Project We created a Formbold form, now we are going to add it to our Next.js project. To add the form to the Next.js project you have to create a Next.js project. You can create a simple Next project using this command: ```zh npx create-next-app@latest ``` After the setup is done run this command to install Axios. We will need it to submit the Form ```zh npm install axios --save-dev ``` When the installation completes open it up on your code editor and start the dev server. And then create a file for the Form. Create the files wherever you prefer, I created it on the root just to show you. ![Image](#) And now paste the code you copied earlier from Formbold. This code snippet has a simple form with all the event handlers and states it needs to work. ```javascript import axios from "axios"; import React, { useState } from "react"; export default function Forms() { // Input Change Handling const [inputs, setInputs] = useState({ email: "", subject: "", message: "", }); const handleOnChange = (event) => { event.persist(); setInputs((prev) => ({ ...prev, [event.target.id]: event.target.value, })); }; // Server State Handling const handleOnSubmit = (event) => { event.preventDefault(); axios({ method: "POST", url: "https://formbold.com/s/{form_id}", data: inputs, }) .then((r) => { console.log("hello"); }) .catch((r) => { console.log("error"); }); }; return (