GUIDE
Add a contact form to your website
A contact form is two parts: the HTML people fill in, and the backend that catches what they send. The markup takes five minutes; the backend is where most projects stall, because a raw form has nowhere to POST. This guide walks through the fields that matter, then points the form at Formstork so submissions reach your inbox and a dashboard without you running a server.
What a contact form is actually made of
Every contact form has two halves. The front is an HTML form with named inputs (name, email, message) and a submit button, which the browser can render on its own. The back is an endpoint that receives the POST, validates it, stores it, and notifies you. Skip the backend and the form does nothing when someone clicks Send.
Your three options for handling submissions
You can write your own backend (a route or serverless function that parses the request, sends email, and stores rows), fall back to a mailto: link that dumps people into their own email client and loses everything else, or use a hosted form backend that gives you an endpoint to POST to. The first is real work to build and keep running; the second barely counts as a form. A hosted backend is the shortcut for a site that is otherwise static.
Write the HTML that actually works
Give every input a name attribute, because that is the key each value arrives under. Use type="email" so browsers validate the address, mark required fields with the required attribute, and wrap each control in a label so the form is accessible and usable on mobile. Keep it to the fields you will actually read; a shorter form gets filled out more often.
Point the form at Formstork
Set the form's action to https://api.formstork.com/submit and add one hidden field, access_key, with the key from your dashboard (the short /f/YOUR_ACCESS_KEY URL works too). That is the whole backend. Each submission emails you with the visitor's address as the reply-to, so you hit reply and it reaches them, and every message is stored in a searchable, taggable dashboard you can export to CSV or JSON. The free plan covers 250 submissions a month with no credit card.
Keep spam out and route the good ones
A public form attracts bots, so Formstork adds a hidden honeypot field and a server-side content filter by default, with optional Turnstile, hCaptcha, or reCAPTCHA when you want a visible check. Clean submissions can fan out to where you already work: Slack, Discord, Telegram, Notion, Airtable, Google Sheets, Mailchimp, or a signed (HMAC) webhook. You wire none of that into the page; it is all configured on the form itself.
<form action="https://api.formstork.com/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
<label>
Name
<input type="text" name="name" required />
</label>
<label>
Email
<input type="email" name="email" required />
</label>
<label>
Message
<textarea name="message" required></textarea>
</label>
<button type="submit">Send</button>
</form>Frequently asked questions
Do I need a backend to add a contact form to my website?
No. The HTML runs in the browser, and a hosted form backend handles the rest. Point the form's action at Formstork and add your access_key, and it receives the POST, emails you, and stores the submission. There is no server or serverless function to build.
How do I get contact form submissions by email?
Every Formstork submission emails you automatically, with the visitor's address set as the reply-to, so replying from your inbox reaches the person who wrote in. The same message is also saved in your dashboard, so nothing is lost if you miss the email.
Can I add a contact form without writing any code?
Yes. Formstork has a hosted no-code form builder and hosted form pages you can link to or embed, plus a popup feedback widget. If you would rather keep control of the markup, you can also hand-write the HTML and just set the action and access_key.
Try Formstork free
250 submissions a month with a full dashboard. No credit card required.
Get your access keyRead the docs