Integration guide · WordPress
A WordPress contact form that skips the plugin
Most WordPress contact forms mean installing a plugin, learning its shortcode syntax, and trusting its own spam filtering. A plain HTML form pointed at a PostTo endpoint skips all of that — it works in any theme, page template, or block editor HTML block, with no plugin dependency to keep updated.
PostTo receives the POST directly from the visitor's browser, filters spam, emails you the submission, and logs it to a searchable dashboard.
Free plan, no credit card required.
Three steps, a few minutes
Create an endpoint
Sign up free, create an endpoint in the dashboard, and set your destination email. You'll get an endpoint URL right away.
Add the form
Paste the HTML into a Custom HTML block, a page template, or your theme's contact-page.php — anywhere you can output raw markup.
Publish
No plugin install, no admin-post.php action, no nonce handling. Submissions land in your inbox and dashboard as soon as the page is live.
The code
Replace YOUR_TOKEN
with the endpoint URL from your dashboard.
<form action="https://postto.dev/api/v1/send/YOUR_TOKEN" method="POST">
<label for="name">Name</label>
<input type="text" id="name" name="name" required>
<label for="email">Email</label>
<input type="email" id="email" name="email" required>
<label for="message">Message</label>
<textarea id="message" name="message" required></textarea>
<!-- Honeypot: bots fill this in, humans never see it -->
<input type="text" name="_hp" tabindex="-1" autocomplete="off" style="display:none">
<!-- Where to send the visitor after a successful submission -->
<input type="hidden" name="_next" value="https://yoursite.com/thanks/">
<button type="submit">Send</button>
</form>
Good to know
No plugin, no maintenance
There's no plugin to update, no shortcode to remember, and no admin-post.php action or WordPress nonce to wire up. The form is plain HTML — WordPress just renders it like any other content.
Works with the block editor
Paste the markup into a Custom HTML block on any page or post. It also works dropped into a classic theme template with get_template_part, if you prefer editing PHP directly.
Spam protection is already wired in
The hidden _hp field is a honeypot — humans never see it, bots fill it in, and PostTo silently discards those submissions. Server-side baseline filtering (heuristics and optional AI classification) runs on every submission after that, so you don't need a CAPTCHA to start.
From the docs
Frequently asked questions
- Do I need to disable a plugin like Contact Form 7 first?
- You can run both side by side, but there's no need to — a plain HTML form pointed at a PostTo endpoint replaces the plugin entirely, with no shortcode or settings page to configure.
- Does this work with block themes and the Site Editor?
- Yes. Add a Custom HTML block wherever you'd place the form — it renders the same raw markup regardless of theme, and PostTo doesn't care how the HTML reached the browser.
- How do I stop spam without a CAPTCHA?
- Include the hidden _hp honeypot field shown above. PostTo also runs first-party heuristic filtering on every submission, and you can enable AI classification per endpoint. Cloudflare Turnstile is supported if you want a visible challenge.
- What does it cost?
- The free plan includes 50 submissions per month with the full dashboard — no credit card required. Paid plans start at $9/month.
Add a form to your WordPress site today
Create an endpoint, paste the snippet, and see your first submission in the dashboard — all on the free plan.
Try PostTo free