← All guides

HTML guide

HTML form powered by Formserve

Point a normal HTML form at Formserve and receive submissions instantly.

No backend API route Honeypot spam trap Works with any host

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

1

Create a Formserve endpoint

Use a name that matches the form purpose, such as Contact, Waitlist, or Quote request.

2

Update the form tag

Paste the endpoint URL into the action attribute and keep method set to POST.

3

Add field names and honeypot

Make sure visible fields use useful names like email, name, company, and message.

4

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.