# FormThunder > The contact form API and form backend built for AI to configure. A customer's AI (Claude Code, Cursor, anything that speaks MCP or can run a CLI) creates the form, wires it into their site, reads their website's branding and sets the email templates to match. It's drop-in compatible with Web3Forms HTML. ## Key facts - Submit endpoint: POST https://formthunder.com/submit. JSON, URL-encoded and multipart. CORS open. The access key is public by design. - MCP: `npx formthunder mcp`, or the hosted endpoint at https://formthunder.com/api/mcp. 48 tools on every plan. - REST API: https://formthunder.com/api/v1. OpenAPI at https://formthunder.com/openapi.json. Full docs as Markdown at https://formthunder.com/llms-full.txt. - Plans: Free, 250 submissions a month. Pro, $12/mo, 10,000. Agency, $39/mo, 20,000 plus unlimited free client accounts. - Reliability: submissions are written to Postgres before success is returned. Deliveries retry for up to 24 hours (10 attempts). FormThunder is new and publishes no uptime figures or customer counts. ## Product - [FormThunder](https://formthunder.com/): Contact form API and form backend built for AI to configure. - [MCP server and CLI](https://formthunder.com/ai): Connect Claude Code, Cursor or any MCP client: install commands, tools and sample prompts. - [Reliability](https://formthunder.com/reliability): How submissions are stored and delivered: Postgres first, retries for up to 24 hours, two AWS availability zones. - [Agency accounts](https://formthunder.com/agencies): Unlimited free client accounts, $5/mo client upgrades and client billing through your own Stripe. - [Pricing](https://formthunder.com/pricing): Free for 250 submissions a month, Pro at $12/mo, Agency at $39/mo. - [Features](https://formthunder.com/features): Form to email, AI setup, brand-matched templates, spam protection, uploads, webhooks and integrations. ## Compare - [Migrate from Web3Forms](https://formthunder.com/migrate/web3forms): Change the form action URL and the key. The field names stay the same. - [Alternatives](https://formthunder.com/alternatives): FormThunder compared with other form backends, using numbers from their own pages. - [Web3Forms alternative](https://formthunder.com/alternatives/web3forms-alternative): Compare FormThunder and Web3Forms on price, limits, MCP and agency features. Same field names, so switching means changing the URL and the key. - [Formspree alternative](https://formthunder.com/alternatives/formspree-alternative): Compare FormThunder and Formspree on submission limits, prices, CLI, MCP and client accounts, using numbers from Formspree's plans page. - [Getform (now Forminit) alternative](https://formthunder.com/alternatives/getform-alternative): Getform is now Forminit. Compare it with FormThunder on free submissions, paid tiers, MCP and agency features, using Forminit's own pricing page. - [FormKeep alternative](https://formthunder.com/alternatives/formkeep-alternative): Compare FormThunder and FormKeep on free submissions, paid tiers, how limits are counted, and MCP, using FormKeep's own pricing page. - [Basin alternative](https://formthunder.com/alternatives/basin-alternative): Compare FormThunder and Basin on free limits, prices, MCP access and agency features, using numbers from Basin's pricing page. - [KwesForms alternative](https://formthunder.com/alternatives/kwesforms-alternative): Compare FormThunder and KwesForms on free limits, monthly prices, MCP, CLI and client accounts, using numbers from KwesForms' pricing page. - [Netlify Forms alternative](https://formthunder.com/alternatives/netlifyforms-alternative): Netlify Forms works on Netlify deploys. FormThunder works on any host. Compare setup, file limits and delivery, using Netlify's own docs. ## Integrations - [Integrations](https://formthunder.com/integrations): Slack, Discord, Telegram, Google Sheets, webhooks, Zapier, Make and n8n. - [Slack](https://formthunder.com/integrations/slack): Post contact form submissions to a Slack channel with an incoming webhook. Failed posts retry for up to 24 hours. Needs the Pro plan. - [Discord](https://formthunder.com/integrations/discord): Post form submissions to a Discord channel with a channel webhook. Each delivery shows its status and retries for up to 24 hours. Pro plan. - [Telegram](https://formthunder.com/integrations/telegram): Get form submissions as Telegram messages in a chat, group or channel. Set the chat ID on the form. Included with the Pro plan. - [Google Sheets](https://formthunder.com/integrations/google-sheets): Add each form submission as a row in Google Sheets with a short Apps Script webhook. Copy the script, deploy it and paste the URL. Pro plan. - [Webhooks](https://formthunder.com/integrations/webhooks): Send each form submission to your server as signed JSON. HMAC-SHA256 signature, retries for up to 24 hours and visible delivery status. Pro plan. - [Zapier](https://formthunder.com/integrations/zapier): Send form submissions into a Zap with Webhooks by Zapier and a Catch Hook trigger. Works with the FormThunder webhook on the Pro plan. - [Make](https://formthunder.com/integrations/make): Trigger a Make scenario from each form submission using a Custom webhook module. Works with the FormThunder webhook on the Pro plan. - [n8n](https://formthunder.com/integrations/n8n): Start an n8n workflow from each form submission with the Webhook node, on n8n cloud or self-hosted. Pro plan on FormThunder. ## Templates - [Form templates](https://formthunder.com/templates): Free HTML form templates in Tailwind that send as soon as you add your key. - [Contact form](https://formthunder.com/templates/contact-form): Copy a free HTML contact form template in Tailwind that really sends email. Name, email and message fields, a honeypot, and no server needed. - [File upload form](https://formthunder.com/templates/file-upload-form): Copy an HTML form template with a file upload that emails you the attachment. Direct uploads up to 5 MB, or 25 MB per file with the uploader. Pro plan. - [Multi-column form](https://formthunder.com/templates/multi-column-form): Copy a two-column HTML form in Tailwind that stacks into one column on phones. Short fields side by side, and each submission emailed to you. - [Dark mode form](https://formthunder.com/templates/dark-mode-form): Copy a dark mode contact form in Tailwind with readable contrast, visible focus states and native dark inputs. Each submission is emailed to you. - [Newsletter signup form](https://formthunder.com/templates/newsletter-signup-form): Copy a one-field newsletter signup form in HTML and Tailwind. Get each signup by email, or pass it to your mailing tool with a webhook. - [Feedback form](https://formthunder.com/templates/feedback-form): Copy a website feedback form with a rating scale and a comment box. Radio buttons, accessible fieldset and no server. Results are emailed to you. - [Job application form](https://formthunder.com/templates/job-application-form): Copy a job application form with a CV upload, role selector and cover note. Each application is emailed with its CV attached. Pro plan for attachments. - [Quote request form](https://formthunder.com/templates/quote-request-form): Copy a quote request form with service, budget and timeline fields. Each request is emailed to you, with a subject line you can filter on. - [Event RSVP form](https://formthunder.com/templates/event-rsvp-form): Copy an event RSVP form with attendance, guest count and dietary fields. Replies go to your inbox and export to CSV for your guest list. ## Platforms - [Platforms](https://formthunder.com/platforms): Contact form guides for every framework, static site generator, site builder and host. - [HTML contact form](https://formthunder.com/platforms/html-contact-form): Copy an HTML contact form that emails you with no server or JavaScript. Set the action URL and access key, and submissions reach your inbox. - [JavaScript contact form](https://formthunder.com/platforms/javascript-contact-form): Send a contact form with plain JavaScript and fetch, show the result on the same page, and fall back to a normal post when JavaScript fails. - [React contact form](https://formthunder.com/platforms/react-contact-form): A working React contact form component with loading, success and error states. Posts to FormThunder and emails you, with no server of your own. - [Next.js contact form](https://formthunder.com/platforms/nextjs-contact-form): A Next.js App Router contact form: a client component that posts to FormThunder, the env var to use, and when a server action is the wrong tool. - [Vue contact form](https://formthunder.com/platforms/vue-contact-form): A Vue 3 contact form with script setup, reactive status and no backend of your own. Posts to FormThunder and emails you each submission. - [Vite contact form](https://formthunder.com/platforms/vite-contact-form): Add a contact form to a Vite project in TypeScript. Keep the key in a VITE_ variable and post to FormThunder with no backend or dev proxy. - [Svelte contact form](https://formthunder.com/platforms/svelte-contact-form): A Svelte 5 contact form using runes, and how to keep it working without JavaScript in SvelteKit. Emails you through FormThunder with no form action. - [Angular contact form](https://formthunder.com/platforms/angular-contact-form): A standalone Angular contact form with Reactive Forms, HttpClient and signals. Posts to FormThunder, which emails each submission to you. - [Alpine.js contact form](https://formthunder.com/platforms/alpine-contact-form): An Alpine.js contact form with loading and success states written inline in your HTML, with no build step. Emails you through FormThunder. - [Astro contact form](https://formthunder.com/platforms/astro-contact-form): An Astro contact form that ships almost no JavaScript and needs no adapter or SSR. Posts to FormThunder and emails you each submission. - [Nuxt contact form](https://formthunder.com/platforms/nuxt-contact-form): A Nuxt 3 and 4 contact form using $fetch and public runtime config. Works with nuxt generate and needs no server route. Emails you via FormThunder. - [Tailwind CSS contact form](https://formthunder.com/platforms/tailwindcss-contact-form): A Tailwind CSS contact form that actually sends: accessible labels, focus rings, validation styles and a form backend. Copy the HTML and set your key. - [Hugo contact form](https://formthunder.com/platforms/hugo-contact-form): Add a contact form to a Hugo site with a partial, a shortcode and site params. Hugo stays static and FormThunder handles the email. - [Jekyll contact form](https://formthunder.com/platforms/jekyll-contact-form): A Jekyll contact form using an include and _config.yml. Works on GitHub Pages with no plugin, and emails you through FormThunder. - [Gatsby contact form](https://formthunder.com/platforms/gatsby-contact-form): A Gatsby contact form as a React component, with the right env prefix and no serverless function. Emails each submission through FormThunder. - [Gridsome contact form](https://formthunder.com/platforms/gridsome-contact-form): A Gridsome contact form in Vue 2 with the Options API and GRIDSOME_ env vars. No serverless function, and each submission is emailed through FormThunder. - [Eleventy contact form](https://formthunder.com/platforms/eleventy-contact-form): Add a contact form to an Eleventy site with global data and a Nunjucks include. No JavaScript or serverless function needed. Email via FormThunder. - [Webflow contact form](https://formthunder.com/platforms/webflow-contact-form): Keep your Webflow form design and send submissions to FormThunder. Set the action URL, add a hidden key and get email, webhooks and a delivery log. - [Framer contact form](https://formthunder.com/platforms/framer-contact-form): Add a contact form to a Framer site using the Embed component and your own HTML. Submissions are stored and emailed through FormThunder. - [Carrd contact form](https://formthunder.com/platforms/carrd-contact-form): Add a working contact form to a Carrd one-page site with an Embed element. Compact HTML you can paste, with email delivery through FormThunder. - [Squarespace contact form](https://formthunder.com/platforms/squarespace-contact-form): Add a custom Squarespace contact form with a Code Block when the built-in Form Block isn't enough. Webhooks, delivery logs and brand-matched email. - [Wix contact form](https://formthunder.com/platforms/wix-contact-form): Add a custom contact form to Wix with the Embed HTML element. Includes the target fix for Wix's iframe, so thank-you redirects leave the frame. - [Dorik contact form](https://formthunder.com/platforms/dorik-contact-form): Add a contact form to a Dorik site with a custom code element and hidden fields. Each submission is stored and emailed through FormThunder. - [WordPress contact form](https://formthunder.com/platforms/wordpress-contact-form): Add a WordPress contact form without a plugin or SMTP setup, using a Custom HTML block or a small shortcode. Email goes out through FormThunder. - [Elementor contact form](https://formthunder.com/platforms/elementor-contact-form): Add a contact form to Elementor with the free HTML widget, no Elementor Pro needed. Includes CSS you can paste and email delivery through FormThunder. - [Oxygen contact form](https://formthunder.com/platforms/oxygen-contact-form): Add a contact form to Oxygen Builder with a Code Block. Oxygen skips your theme, so this includes the CSS. Email is handled through FormThunder. - [Vercel contact form](https://formthunder.com/platforms/vercel-contact-form): Run a contact form on a Vercel site with no serverless function. How to set the env var, handle preview URLs and when a Vercel Function makes sense. - [Netlify contact form](https://formthunder.com/platforms/netlify-contact-form): Run a contact form on a Netlify site with a backend of your choice. Leave out data-netlify, set deploy-context keys and keep your forms portable. - [Cloudflare Pages contact form](https://formthunder.com/platforms/cloudflare-contact-form): Run a contact form on Cloudflare Pages with Turnstile spam protection, and no Workers code. Secret kept with FormThunder, email handled for you. - [GitHub Pages contact form](https://formthunder.com/platforms/github-pages-contact-form): Add a contact form to a GitHub Pages site, which can't process POSTs. FormThunder receives them, emails you, and your key stays safe in a public repo. - [AWS contact form](https://formthunder.com/platforms/aws-contact-form): Add a contact form to a site on S3 and CloudFront or Amplify, without building API Gateway, Lambda and SES. Deploy commands and CloudFront notes included. - [DigitalOcean contact form](https://formthunder.com/platforms/digitalocean-contact-form): Add a contact form to a DigitalOcean App Platform site or Droplet. Skip blocked SMTP ports, because the email goes out through FormThunder over HTTPS. ## Blog - [Blog](https://formthunder.com/blog): Practical posts on forms, AI setup and delivery. - [How to let Claude Code set up a contact form with MCP](https://formthunder.com/blog/claude-code-contact-form-mcp): Connect FormThunder to Claude Code over MCP and have it create a form, write the code, match your branding and send a real test. Commands and prompts included. - [Why form submissions get lost, and how outbox delivery prevents it](https://formthunder.com/blog/why-form-submissions-get-lost): A form that sends email inline can lose a lead without anyone noticing. Here's where leads go missing, and how the transactional outbox pattern fixes it. - [How agencies can resell form hosting](https://formthunder.com/blog/how-agencies-resell-form-hosting): A practical guide for web agencies on charging for form hosting: what clients are paying for, how to package it into a care plan and how the numbers work. ## Docs - [Documentation](https://formthunder.com/docs): Everything from the quickstart to the REST API. - [Quickstart](https://formthunder.com/docs/quickstart): Get an access key, add a form to your page and send your first test submission, with or without an AI agent. - [Submit API and fields](https://formthunder.com/docs/submit-api): How POST /submit works: content types, every reserved field, the JSON response and each status code. - [Customise a form](https://formthunder.com/docs/customisation): Set the email subject, from name, reply-to, CC and redirect, and choose where visitors land after sending. - [Spam protection](https://formthunder.com/docs/spam): Stop form spam with hCaptcha, Turnstile, reCAPTCHA v3, a honeypot, the content filter, domain restriction and report spam. - [Attachments and uploader](https://formthunder.com/docs/attachments): Accept files in a form: direct multipart uploads up to 5 MB, and the advanced uploader up to 25 MB per file. - [Email templates and brand kit](https://formthunder.com/docs/email-templates): Match notification emails to your site with the brand kit, built-in themes or custom HTML templates. - [Template variables](https://formthunder.com/docs/variables): Every mustache variable you can use in an email template and subject line, with an example. - [Autoresponder](https://formthunder.com/docs/autoresponder): Send an automatic reply to the person who submitted a form, with the rules that keep it from being misused. - [Webhooks](https://formthunder.com/docs/webhooks): Receive signed JSON for each submission: the payload, signature verification code, retries and replays. - [Integrations](https://formthunder.com/docs/integrations): Send submissions to Slack, Discord, Telegram and Google Sheets, or to Zapier, Make and n8n through webhooks. - [MCP server](https://formthunder.com/docs/mcp): Connect Claude Code, Cursor or any MCP client to FormThunder: install commands, the hosted endpoint, tools and prompts. - [CLI](https://formthunder.com/docs/cli): Install and use the formthunder CLI: login, forms, brand kit, templates, tests and clients, all with --json output. - [REST API reference](https://formthunder.com/docs/api): The FormThunder REST API v1: authentication, error format and every endpoint for forms, submissions, templates and clients. - [Agency accounts](https://formthunder.com/docs/agencies): Create client accounts, act on a client with an agency key, upgrade clients and bill them through your own Stripe. - [FAQ](https://formthunder.com/docs/faq): Short answers on access keys, limits, held submissions, data retention and how FormThunder relates to Web3Forms. - [Troubleshooting](https://formthunder.com/docs/troubleshooting): Fix the common form problems: no email, 400 and 403 errors, spam false positives, failed webhooks and held submissions. ## Company - [Contact](https://formthunder.com/contact): How to reach us. - [Status](https://formthunder.com/status): The live health check. - [Terms of service](https://formthunder.com/terms): The terms for using FormThunder. - [Privacy policy](https://formthunder.com/privacy): What personal data we handle and why. - [Acceptable use policy](https://formthunder.com/acceptable-use): What you can't do with FormThunder. - [Data processing addendum](https://formthunder.com/dpa): How we process data on your behalf. - [Report abuse](https://formthunder.com/abuse): How to report misuse of FormThunder.