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

FormThunder
Menu

Add a WordPress contact form without a plugin or SMTP setup

You can add a WordPress contact form without a plugin or SMTP setup by pasting HTML into a Custom HTML block. The form posts to FormThunder, which sends the email itself, so it doesn't depend on wp_mail or your host's mail server. If you'd rather not paste HTML on every page, a small shortcode in your theme does the same job.

Updated

The WordPress code

Custom HTML block
<form action="https://formthunder.com/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
  <input type="hidden" name="subject" value="New message from the website">
  <input type="hidden" name="redirect" value="https://yoursite.com/thank-you/">
  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off">

  <label for="name">Name</label>
  <input id="name" name="name" required>

  <label for="email">Email</label>
  <input id="email" name="email" type="email" required>

  <label for="message">Message</label>
  <textarea id="message" name="message" rows="5" required></textarea>

  <button type="submit">Send</button>
</form>
functions.php of a child theme
add_shortcode('formthunder_contact', function () {
    ob_start(); ?>
    <form action="https://formthunder.com/submit" method="POST">
      <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
      <input type="hidden" name="redirect" value="<?php echo esc_url(home_url('/thank-you/')); ?>">
      <input type="checkbox" name="botcheck" style="display:none" tabindex="-1">
      <p><label>Name <input name="name" required></label></p>
      <p><label>Email <input name="email" type="email" required></label></p>
      <p><label>Message <textarea name="message" required></textarea></label></p>
      <p><button type="submit">Send</button></p>
    </form>
    <?php return ob_get_clean();
});

Replace YOUR_ACCESS_KEY with your free key. It's public by design, so it's safe in client code.

Notes for WordPress

  • WordPress strips <form> and <input> tags from posts by users without the unfiltered_html capability. Admins and editors have it on a single site. On multisite, only super admins do. If your form disappears on save, that's the reason. Use the shortcode.
  • Page caching plugins are safe here, because the form posts away from your site. There's no WordPress nonce to go stale.
  • Security plugins with a Content Security Policy may need your FormThunder host in form-action.
  • Use [formthunder_contact] in any block or classic editor page, and in widget areas through a Shortcode block.

Or have your AI add it

Connect the MCP server, then ask. The agent creates the form and writes the code for you, and it can send a real test when it's done.

You, to your AI
Add a FormThunder contact form to this WordPress site that emails hello@example.com. Send a test when you're done.

Questions

Why not use Contact Form 7 or WPForms?

They're fine, and they send through wp_mail, so delivery depends on your host's mail setup. This route keeps one more plugin off your site and logs each delivery. Use whichever fits your site.

Does this work on WordPress.com?

Custom HTML blocks work, but WordPress.com may remove some tags depending on your plan. Check the block after saving.

Get your WordPress form sending

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