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
<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>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 theunfiltered_htmlcapability. 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.
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.