HTML guide
HTML form powered by Formserve
Point a normal HTML form at Formserve and receive submissions instantly.
Overview
What you are building
A plain HTML form is the fastest way to use Formserve. You keep the markup in your site, set the form action to your endpoint URL, and Formserve handles the backend work: storage, spam checks, email notifications, exports, and integrations.
Requirements
Before you start
Endpoint URL
Create a Formserve endpoint and copy the public form URL.
POST method
Set the form method to POST so browser submissions are sent correctly.
Named fields
Every input, select, and textarea must have a name attribute.
Honeypot field
Add a hidden _honeypot input to catch basic bots without CAPTCHA.
Setup steps
Connect the form
Create a Formserve endpoint
Use a name that matches the form purpose, such as Contact, Waitlist, or Quote request.
Update the form tag
Paste the endpoint URL into the action attribute and keep method set to POST.
Add field names and honeypot
Make sure visible fields use useful names like email, name, company, and message.
Test from the real page
Submit once locally, then again from the deployed domain after allowed domains are configured.
Code
Minimal HTML contract
Every framework eventually sends these same fields. If your tool generates a component, ask it to preserve styling and only adjust the submission behavior.
<form action="https://formserve.io/f/YOUR_ENDPOINT_KEY" method="POST">
<input type="text" name="_honeypot" tabindex="-1" autocomplete="off" style="position:absolute;left:-9999px" />
<label>Email <input type="email" name="email" required></label>
<label>Message <textarea name="message" required></textarea></label>
<button type="submit">Send</button>
</form>
Testing checklist
- ✓ Submit with a valid email address.
- ✓ Confirm the entry appears in the inbox.
- ✓ Add your production domain to allowed domains.
- ✓ Enable email or Slack notifications if needed.
Common mistakes
- ! Using GET instead of POST.
- ! Forgetting name attributes.
- ! Putting the endpoint URL in JavaScript only when plain HTML would work.
- ! Testing only from localhost and not from production.