Docs · Getting started

Quick start

Point a form at holdmyform and receive your first submission. You need a form on a website and an address that should get the enquiries.

1Create a form

In the dashboard, choose New form, name it, and add the address that should receive enquiries. Each form gets its own endpoint:

https://holdmyform.com/f/6fa78bc

2Point your form at it

Set the endpoint as the form's action. Every field with a name is stored and sent on.

HTML
<form action="https://holdmyform.com/f/6fa78bc" method="POST">
<input type="text" name="name" required>
<input type="email" name="email" required>
<textarea name="message"></textarea>
<input type="text" name="_gotcha" hidden>
<button type="submit">Send</button>
</form>

3Or send JSON

From JavaScript, post JSON and ask for JSON back. A stored submission answers with "ok": true.

JavaScript
await fetch("https://holdmyform.com/f/6fa78bc", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Accept": "application/json"
},
body: JSON.stringify({ email, message })
});

Special fields

Four field names change what happens to a submission. All are optional.

Field nameWhat it does
email or _replytoThe sender's address. Replies to the notification go there.
_subjectThe subject line of the notification email.
_nextThe address of your thank-you page, shown after sending.
_gotchaA hidden trap for spam robots. Keep it empty and hidden.

Protect your form

A form address is public: anyone who views your page can read it. Five things stop others from misusing it. The first three are always on.

ProtectionWhat it does
Fixed recipientsThe receiving address is set in the dashboard, never in the form. Nobody can use your form to send email to someone else.
Rate limitOne sender can submit a form 5 times in 10 minutes. After that we answer "try again later".
Spam trapA submission that fills the hidden _gotcha field is stored as spam and not emailed.
Allowed sitesList the sites that may post to the form, such as https://example.fi. Submissions from any other site are refused.
Human checkTurn on Cloudflare Turnstile for a form that attracts robots. It runs without puzzles for most visitors.

What "Allowed sites" does not do. It stops another website from using your form. A program can still fake the site name, so the rate limit and the human check are there for robots.

Moving from another form service? In most cases you change one line and keep your fields. See Migrating.

Next: Special fields