FormThunder isn't open yet. This site describes the service as it will run at launch. Find out more

FormThunder
Menu

Get a contact form API built for AI to configure

FormThunder is a form backend: point a form at it, and submissions reach your inbox, webhook or Slack. Tell Claude Code or Cursor what you want, and it creates the form, adds it to your site, matches the emails to your brand and sends a real test.

Free access keys open at launch. Until then, you can read how it works in the docs.

You, to your AIExample session

Add a contact form to this site that emails hello@example.com, and make the emails match our branding.

  1. list_linked_emailshello@example.com is verified
  2. create_form name: "Contact form", recipients: ["hello@example.com"]form created, key returned
  3. get_snippet framework: "nextjs"code written to app/contact/form.tsx
  4. extract_brand_from_website url: "https://example.com"logo, primary #0f766e, Inter, 8px radius
  5. set_brand corrected against tailwind.configbrand kit saved
  6. update_form theme: "card"emails now use your brand
  7. test_formemail delivered

Or skip the AI. This HTML works too:

contact.html
<form action="https://formthunder.com/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
  <input name="name" required>
  <input name="email" type="email" required>
  <textarea name="message" required></textarea>
  <button type="submit">Send</button>
</form>

Your AI does the whole setup, and it can check its own work

Most form services assume a person is clicking through a dashboard. FormThunder has an MCP server and a CLI on every plan, with 48 tools covering everything the dashboard does.

  1. 1

    It creates the form

    The agent checks your verified addresses, reuses a form if one fits, and creates one if not. The access key comes back in the same call.

  2. 2

    It wires it into your site

    get_snippet returns working code for html, react, nextjs, vue, svelte or astro. The agent puts it in your project and keeps your own styling and field names.

  3. 3

    It matches your brand

    It reads your live site for the logo, colours and fonts, checks them against your code, and saves a brand kit that every email theme uses.

  4. 4

    It proves it works

    test_form sends a real submission and reports each delivery. check_form_on_site fetches your deployed page and returns a fix for anything that's wrong.

Add it to Claude Code
claude mcp add formthunder -- npx -y formthunder mcp

See every tool, the CLI and sample prompts.

When something goes wrong, the error tells your AI what to do

Every API error carries a hint with the next step, and many tool results carry a next_step field. An agent can usually fix the problem or tell you exactly what it needs from you. It won't guess or go in circles.

API error
{
  "error": {
    "code": "feature_requires_pro",
    "message": "Webhooks need the Pro plan.",
    "hint": "Upgrade at https://formthunder.com/app/billing or run `formthunder billing upgrade`.",
    "docs": "https://formthunder.com/docs/webhooks"
  }
}

Emails that look like they came from your site

Your AI reads your website and saves a brand kit: logo, colours, fonts, corner radius and footer. Three built-in email themes pick it up on the free plan. On Pro, the agent can write a custom HTML template, preview it, fix the warnings and send a test to your inbox.

Brand kit, on every plan

extract_brand_from_website reads the served page, and the agent checks it against your CSS or Tailwind config.

Five themes

Clean, Card and Letter are on every plan. Bold and Compact come with Pro. All of them use your brand kit.

Custom HTML, on Pro

Mustache templates with every field, your brand values and a preview step that returns warnings.

Read about email templates and the brand kit.

Your leads are saved first, then delivered

A form that sends email during the request can lose a lead when a provider has a bad minute. FormThunder writes first and delivers from an outbox, so a failed send becomes a retry that you can see.

Saved before we say success

A submission is written to Postgres before we return success. Its delivery jobs go in the same transaction, so a crash can't lose one.

Retries for up to 24 hours

Email, webhook and chat deliveries retry with exponential backoff, up to 10 attempts. Email fails over from Amazon SES to Resend.

You can see every attempt

Each delivery shows its status, attempts and last error. You can resend a failed one, or ask your AI to.

Over your limit, still kept

Over-quota submissions are stored and held, then released when the account upgrades. Leads aren't dropped.

Two availability zones on AWS

At least two app containers sit behind a load balancer, with Multi-AZ Postgres and automated backups.

See how it's built. We don't publish an uptime number yet, because we've only just started and wouldn't have an honest one.

Already on Web3Forms? Change two lines

FormThunder takes the same HTML. Field names like subject, from_name, replyto, redirect and botcheck work as they are.

contact.html
- <form action="https://api.web3forms.com/submit" method="POST">
-   <input type="hidden" name="access_key" value="YOUR_WEB3FORMS_KEY">
+ <form action="https://formthunder.com/submit" method="POST">
+   <input type="hidden" name="access_key" value="YOUR_FORMTHUNDER_KEY">

Run forms for your clients, and bill them through your own Stripe

The Agency plan gives you unlimited free client accounts under one login. Upgrade any client to Pro for $5 a month on your bill, and charge them whatever you like through your own Stripe account. Your AI can work inside any client's account.

Start free, and pay when your forms get busy

Free

$0

250 submissions a month

Everything your AI needs to set up a form, with built-in email themes.

Pro

$12/mo

10,000 submissions a month

Custom email templates, attachments, webhooks and chat delivery.

Agency

$39/mo

20,000 submissions a month on your own forms

Unlimited free client accounts, $5/mo client upgrades and client billing through your own Stripe.

Compare the plans

Questions

What is a contact form API?

It's a service that receives form posts over HTTP, stores them and delivers them to you, so your site doesn't need a server or mail setup. FormThunder accepts a plain HTML form post or JSON at one URL, and sends each submission to your email, webhook or chat.

Which AI tools can configure FormThunder?

Anything that speaks MCP, such as Claude Code and Cursor, or anything that can run a command line, using npx formthunder. MCP and the CLI are included on the free plan.

Do I need to use AI?

No. A plain HTML form works by itself, and you can manage everything in the dashboard. The AI tools are there if you want them to do the setup.

Is it safe to put the access key in my HTML?

Yes. The access key is public by design and can only send to addresses you've verified. API keys, which start with ft_live_, are the secret ones, and they stay on your machine or server.

Can I switch from Web3Forms?

Yes. FormThunder accepts the same field names, so you change the form's action URL and the access key. The fields stay as they are.

What happens when I go over 250 submissions on the free plan?

New submissions are stored and held. Upgrade and they're delivered. You get an email at 80% of the limit and when you reach it.

How long has FormThunder been running?

It's new, and we don't have customers to show you yet. So we don't quote uptime numbers or testimonials. The reliability page describes what the system does, and you can start on the free plan to judge it yourself.

Get a key and send your first test in a few minutes

The free plan covers 250 submissions a month, with MCP, the CLI and the brand kit included.