Skip to content
FFormhook
All guides

Guide

HTML contact form (no backend needed)

All you need for a working contact form on a plain HTML page is the right form action attribute. Paste this into any .html file, swap in your Formhook API key, and you have a working endpoint with spam protection, a dashboard, and push notifications on every submission.

The snippet

contact.HTML
<form action="https://formhook.app/f/YOUR_API_KEY" method="POST">
  <label>
    Email
    <input type="email" name="email" required />
  </label>

  <label>
    Message
    <textarea name="message" required></textarea>
  </label>

  <!-- honeypot: bots fill this; humans don't see it -->
  <input type="text" name="_gotcha" tabindex="-1" autocomplete="off" hidden />

  <!-- optional: send users to a thank-you page after a native POST -->
  <input type="hidden" name="_redirect" value="https://example.com/thanks" />

  <button type="submit">Send</button>
</form>

How it works

The action attribute is the endpoint that receives the submission. Formhook gives you one URL per form — copy it from your dashboard after creating an account. The _gotcha field is a honeypot: bots tend to fill every input, but real users don't see it, so anything submitted with content in that field is silently dropped (without consuming your quota). The _redirect field is optional — if present, Formhook sends a 302 to that URL after a successful native form POST. The URL must be on your form's allowed-origins list, so there are no open-redirect surprises.

What happens next

  • The submission shows up in your Formhook dashboard within a second.
  • Your phone, laptop, and desktop ping with a push notification (if you've enabled it).
  • You can reply to the sender — on Pro and above — straight from the submission detail panel.

Ship your HTML contact form today.

Sign up free, create a form, paste the API key. Five minutes.

Start free

Free tier: 5 forms · 250 submissions/month · No credit card.

HTML contact form — FAQ

How does Formhook stop spam without reCAPTCHA?
Two layers. The hidden _gotcha honeypot drops the lazy bots silently — they fill every input, real users don't see the field. For the rest, flip on Cloudflare Turnstile in your form's settings; it's a per-form toggle. There's also a sliding-window rate limit on every form.
Can I have multiple contact forms on the same site?
Yes. One Formhook form, one API key, one endpoint. The Free tier covers five forms — paid tiers go higher. Each form gets its own dashboard, allowed-origins list, and push toggle.
How do I redirect users to a thank-you page after submitting?
Include <input type="hidden" name="_redirect" value="https://example.com/thanks" /> in the form. The URL must be on your form's allowed-origins list — Formhook validates strictly, so there are no open-redirect holes.

Guides for other frameworks