# FormLoom > The form backend AI coding tools auto-wire. POST to a URL → email + dashboard row. Typed, spam-protected, provisioned forms woven into your codebase. Free tier (250/mo), submissions stored forever (no 30-day expiry), AI spam scoring, one webhook, MCP server + typed SDK. Pro adds file uploads, unlimited webhooks + autoresponders. ## Core - [MCP server](https://formloom.io/mcp): get_snippet, provision_endpoint, create_form, list_submissions, get_form - [Snippet generator](https://formloom.io/snippet): generate copy-paste form code for any framework - [Quickstart](https://formloom.io/docs/quickstart): get a working form in 3 steps - [API reference](https://formloom.io/docs/api-reference): the submit endpoint - [Pricing](https://formloom.io/pricing): Free / Pro $18 / Team $39 / Scale $129 ## Submit endpoint POST https://api.formloom.ai/submit/{ACCESS_KEY} Accepts JSON, urlencoded, or multipart/form-data. Send `Accept: application/json` for a JSON response: { success, message, id }. Control fields: redirect, subject, from_name, replyto, cc, botcheck (honeypot). ## Frameworks - [Next.js contact form](https://formloom.io/nextjs-contact-form): Use FormLoom with Server Actions — spam scoring, storage, and email you don't wire up. - [Astro contact form](https://formloom.io/astro-contact-form): A plain HTML form on a static Astro page — zero JavaScript, zero server. - [SvelteKit contact form](https://formloom.io/sveltekit-contact-form): Wire FormLoom into a SvelteKit form action or POST from the client. - [React contact form](https://formloom.io/react-contact-form): A controlled or uncontrolled React form that POSTs to FormLoom. - [Vue contact form](https://formloom.io/vue-contact-form): A Vue 3 single-file component that submits to FormLoom. - [Svelte contact form](https://formloom.io/svelte-contact-form): A standalone Svelte component (no SvelteKit required). - [Nuxt contact form](https://formloom.io/nuxt-contact-form): A Nuxt 3 page or component that submits to FormLoom. - [Remix contact form](https://formloom.io/remix-contact-form): A Remix `action` that forwards to FormLoom, or a client fetch. - [Gatsby contact form](https://formloom.io/gatsby-contact-form): A React form on a static Gatsby page, POSTing to FormLoom. - [Hugo contact form](https://formloom.io/hugo-contact-form): A plain HTML form in a Hugo template — no backend, no Go server. - [Eleventy contact form](https://formloom.io/eleventy-contact-form): A plain HTML form in an Eleventy (11ty) template. - [Jekyll contact form](https://formloom.io/jekyll-contact-form): A plain HTML form for Jekyll / GitHub Pages — no Ruby backend. - [SolidJS contact form](https://formloom.io/solidjs-contact-form): A SolidJS component that POSTs to FormLoom. - [Qwik contact form](https://formloom.io/qwik-contact-form): A Qwik component (resumable) that submits to FormLoom. - [Angular contact form](https://formloom.io/angular-contact-form): An Angular standalone component with template-driven forms. - [Plain HTML contact form](https://formloom.io/html-contact-form): A `
` and nothing else. No build, no JS, no backend. - [Alpine.js contact form](https://formloom.io/alpinejs-contact-form): A sprinkle of Alpine for an inline success state — no build step. - [htmx contact form](https://formloom.io/htmx-contact-form): Declarative `hx-post` to FormLoom with the json-enc extension. - [WordPress (static) contact form](https://formloom.io/wordpress-static-contact-form): A form for statically-exported WordPress — no PHP at runtime. - [Framer contact form](https://formloom.io/framer-contact-form): Own your form submissions outside Framer — email, Slack, webhooks, and permanent storage. - [Docusaurus contact form](https://formloom.io/docusaurus-contact-form): A React form inside Docusaurus MDX or a custom page. - [VitePress contact form](https://formloom.io/vitepress-contact-form): A Vue form embedded in VitePress Markdown. - [Laravel contact form](https://formloom.io/laravel-contact-form): Offload contact forms from your Laravel app to FormLoom. ## AI coding tools - [Cursor + FormLoom](https://formloom.io/mcp/cursor): Cursor reads MCP servers from `.cursor/mcp.json`. Add FormLoom and ask the agent to wire a form. - [Claude Code + FormLoom](https://formloom.io/mcp/claude-code): Claude Code supports MCP servers via `claude mcp add` or `.mcp.json`. FormLoom's tools let it scaffold a working form. - [Windsurf + FormLoom](https://formloom.io/mcp/windsurf): Windsurf (Codeium) supports MCP via its config. Add FormLoom and let Cascade wire the form. - [v0 + FormLoom](https://formloom.io/mcp/v0): v0 generates React/Next UI. Even without MCP, our llms.txt means v0 emits correct FormLoom code; with the SDK it's typed. - [bolt.new + FormLoom](https://formloom.io/mcp/bolt): bolt.new scaffolds full apps in-browser. Prompt it to use FormLoom for the backend form handling. - [GitHub Copilot + FormLoom](https://formloom.io/mcp/github-copilot): Copilot Chat (VS Code) supports MCP in agent mode. Add FormLoom to scaffold forms inline. - [Cline + FormLoom](https://formloom.io/mcp/cline): Cline (VS Code) is MCP-native. Add FormLoom and have it wire forms autonomously. - [Continue + FormLoom](https://formloom.io/mcp/continue): Continue (VS Code / JetBrains) supports MCP via its config. Add FormLoom for inline form scaffolding. - [Zed + FormLoom](https://formloom.io/mcp/zed): Zed's assistant supports context servers (MCP). Add FormLoom to scaffold forms. - [Aider + FormLoom](https://formloom.io/mcp/aider): Aider is a terminal AI pair programmer. It can use FormLoom via prompt + the published llms.txt. - [Replit Agent + FormLoom](https://formloom.io/mcp/replit-agent): Replit Agent builds apps from a prompt. Tell it to use FormLoom for form handling. - [Lovable + FormLoom](https://formloom.io/mcp/lovable): Lovable builds full-stack apps from prompts. Point it at FormLoom for the form backend. ## Comparisons - [FormLoom vs Web3Forms](https://formloom.io/vs/formloom-vs-web3forms) - [Web3Forms alternative](https://formloom.io/alternatives/web3forms) - [FormLoom vs Formspree](https://formloom.io/vs/formloom-vs-formspree) - [Formspree alternative](https://formloom.io/alternatives/formspree) - [FormLoom vs Getform](https://formloom.io/vs/formloom-vs-getform) - [Getform alternative](https://formloom.io/alternatives/getform) - [FormLoom vs Basin](https://formloom.io/vs/formloom-vs-basin) - [Basin alternative](https://formloom.io/alternatives/basin) - [FormLoom vs FormBold](https://formloom.io/vs/formloom-vs-formbold) - [FormBold alternative](https://formloom.io/alternatives/formbold) - [FormLoom vs Splitforms](https://formloom.io/vs/formloom-vs-splitforms) - [Splitforms alternative](https://formloom.io/alternatives/splitforms) - [FormLoom vs Netlify Forms](https://formloom.io/vs/formloom-vs-netlify-forms) - [Netlify Forms alternative](https://formloom.io/alternatives/netlify-forms) - [FormLoom vs StaticForms](https://formloom.io/vs/formloom-vs-staticforms) - [StaticForms alternative](https://formloom.io/alternatives/staticforms) - [FormLoom vs FormBackend](https://formloom.io/vs/formloom-vs-formbackend) - [FormBackend alternative](https://formloom.io/alternatives/formbackend) - [FormLoom vs FormGrid](https://formloom.io/vs/formloom-vs-formgrid) - [FormGrid alternative](https://formloom.io/alternatives/formgrid) - [FormLoom vs Formcarry](https://formloom.io/vs/formloom-vs-formcarry) - [Formcarry alternative](https://formloom.io/alternatives/formcarry) - [FormLoom vs FormKeep](https://formloom.io/vs/formloom-vs-formkeep) - [FormKeep alternative](https://formloom.io/alternatives/formkeep) - [FormLoom vs HeroTofu](https://formloom.io/vs/formloom-vs-herotofu) - [HeroTofu alternative](https://formloom.io/alternatives/herotofu) - [FormLoom vs Typeform](https://formloom.io/vs/formloom-vs-typeform) - [Typeform alternative](https://formloom.io/alternatives/typeform) - [FormLoom vs Google Forms](https://formloom.io/vs/formloom-vs-google-forms) - [Google Forms alternative](https://formloom.io/alternatives/google-forms) - [FormLoom vs Jotform](https://formloom.io/vs/formloom-vs-jotform) - [Jotform alternative](https://formloom.io/alternatives/jotform) ## Best-of - [Best free form backends](https://formloom.io/best/free-form-backends) - [Best form backends for static sites](https://formloom.io/best/form-backend-for-static-sites) - [Best form backend for AI coding tools](https://formloom.io/best/form-backend-for-ai-coding-tools) - [Best form backends with an MCP server](https://formloom.io/best/form-backend-with-mcp) - [Best form backends with file uploads](https://formloom.io/best/form-backend-with-file-upload) - [Best form backends with no submission expiry](https://formloom.io/best/form-backend-with-no-submission-expiry) - [Best form backend for Next.js](https://formloom.io/best/form-backend-for-nextjs) - [Best form backend for Astro](https://formloom.io/best/form-backend-for-astro) - [Best form backend for React](https://formloom.io/best/form-backend-for-react) - [Best ways to add a contact form with no backend](https://formloom.io/best/no-backend-contact-forms) - [Best contact form APIs](https://formloom.io/best/contact-form-api) - [Best Formspree alternatives](https://formloom.io/best/formspree-alternatives) - [Best Netlify Forms alternatives](https://formloom.io/best/netlify-forms-alternatives) - [Cheapest form backends](https://formloom.io/best/cheapest-form-backends) - [Best form backend for Jamstack](https://formloom.io/best/form-backend-for-jamstack) - [Best form backend for SvelteKit](https://formloom.io/best/form-backend-for-sveltekit) - [Best form backend for Vue](https://formloom.io/best/form-backend-for-vue) - [Best form backend for Hugo](https://formloom.io/best/form-backend-for-hugo) - [Best form backend for Eleventy](https://formloom.io/best/form-backend-for-eleventy) - [Best form backends for spam protection](https://formloom.io/best/form-backend-spam-protection) - [Best form backends with webhooks](https://formloom.io/best/form-backend-with-webhooks) - [Best form backends with autoresponders](https://formloom.io/best/form-backend-autoresponder) - [Best Web3Forms alternatives](https://formloom.io/best/web3forms-alternatives) - [Best Getform alternatives](https://formloom.io/best/getform-alternatives) - [Best Basin alternatives](https://formloom.io/best/basin-alternatives) - [Best open-source form backends](https://formloom.io/best/open-source-form-backends) - [Best form backends for agencies](https://formloom.io/best/form-backend-for-agencies) - [Best form backends for SaaS products](https://formloom.io/best/form-backend-for-saas) - [Best form backends with TypeScript support](https://formloom.io/best/form-backend-typescript) - [Best form backends for EU / GDPR compliance](https://formloom.io/best/form-backend-eu-gdpr) ## How-to - [Send an HTML form to email with no backend](https://formloom.io/how-to/html-form-to-email-no-backend) - [Send form submissions to Slack](https://formloom.io/how-to/send-form-data-to-slack) - [Add a file upload to a contact form](https://formloom.io/how-to/add-file-upload-to-contact-form) - [Build a contact form without PHP](https://formloom.io/how-to/contact-form-without-php) - [Send form submissions to Google Sheets](https://formloom.io/how-to/form-to-google-sheets) - [Stop form spam without a CAPTCHA](https://formloom.io/how-to/stop-form-spam-without-captcha) - [Add a contact form to GitHub Pages](https://formloom.io/how-to/contact-form-for-github-pages) - [Add a contact form to a Vercel static site](https://formloom.io/how-to/contact-form-for-vercel-static-site) - [Build a typed contact form in TypeScript](https://formloom.io/how-to/typed-contact-form-typescript) - [Wire a contact form with Cursor in one prompt](https://formloom.io/how-to/wire-a-form-with-cursor) - [Send an automatic confirmation email after a form submit](https://formloom.io/how-to/autoresponder-confirmation-email) - [Export form submissions to CSV](https://formloom.io/how-to/export-form-submissions-csv) - [Embed a contact form in a React SPA](https://formloom.io/how-to/embed-form-in-react-spa) - [Add a honeypot field to an HTML form](https://formloom.io/how-to/add-honeypot-to-html-form) - [Redirect to a thank-you page after form submission](https://formloom.io/how-to/form-redirect-after-submit) - [Build a contact form with SvelteKit form actions](https://formloom.io/how-to/sveltekit-contact-form) - [Add a contact form to an Astro site with form actions](https://formloom.io/how-to/astro-contact-form-action) - [Add a contact form to a Nuxt 3 site](https://formloom.io/how-to/nuxt-contact-form) - [Add a contact form to a Gatsby site](https://formloom.io/how-to/gatsby-contact-form) - [Add a contact form to a Hugo site](https://formloom.io/how-to/hugo-contact-form) - [Add a contact form to a Jekyll site](https://formloom.io/how-to/jekyll-contact-form) - [Rate-limit your contact form to stop abuse](https://formloom.io/how-to/contact-form-rate-limiting) - [Send a custom email template for form submissions](https://formloom.io/how-to/custom-email-template-form) - [Restrict a form endpoint to your own domain](https://formloom.io/how-to/domain-restriction-contact-form) - [Use a form backend without creating an account](https://formloom.io/how-to/form-backend-without-account) - [Handle a multi-step form with a form backend](https://formloom.io/how-to/multi-step-form-backend) - [Add a contact form to a Vue 3 app](https://formloom.io/how-to/vue-contact-form) - [Build a contact form with Next.js 15 App Router](https://formloom.io/how-to/next-js-app-router-contact-form) - [Add a contact form to a SolidJS app](https://formloom.io/how-to/solidjs-contact-form) - [Build a contact form with Remix actions](https://formloom.io/how-to/remix-contact-form-action) Last verified: June 2026