Get an endpoint Sign in

Form to email

Send an HTML form to your email.

Copy this form, change you@example.com to your address, and put it on any page. Every submission is emailed to you, with spam filtered out. No server, no PHP, no JavaScript and no account.

contact.html
<form action="https://sendm8.com/f/you@example.com" method="POST">
  <label>Your name <input name="name" required></label>
  <label>Your email <input name="email" type="email" required></label>
  <label>Message <textarea name="message" required></textarea></label>
  <input type="text" name="_gotcha" style="display:none" tabindex="-1" autocomplete="off">
  <button>Send</button>
</form>

How it works

  1. The form posts to sendm8. A browser can’t send email on its own, so the form sends its fields to your endpoint instead, as a normal form post.
  2. You confirm your address once. The first submission is stored, and we send one confirmation link to the address in the URL. Click it and that message, plus anything that arrived meanwhile, is delivered. We never send more than one confirmation every 24 hours, so nobody can use sendm8 to flood someone else’s inbox.
  3. Every submission after that is emailed to you. It comes from notify@sendm8.com, with each field listed under the name you gave it, and the visitor’s address as Reply-To.
  4. The visitor sees a thank-you page, or your own one (below).

Every field with a name is included, so add phone numbers, dropdowns and checkboxes as you like. A submission can have up to 100fields. Keep your own HTML and CSS: sendm8 doesn’t add anything to your page.

Spam protection

A contact form on a public page gets found by bots. Every submission goes through several checks before it reaches you:

  • The hidden _gotcha honeypot in the form above, which people never see and bots fill in.
  • Rate limits: 10 submissions a minute per visitor.
  • Checks for link-stuffing, known spam phrases, throwaway email domains and keyboard-mash gibberish.
  • A small AI model that scores the message itself.
  • Optionally, a Cloudflare Turnstile challenge for borderline submissions, turned on in the dashboard.

Anything flagged goes to a spam folder instead of your inbox, and it’s deleted after 30 days. Nothing disappears silently: you get at most one email a week if something was caught.

Redirect after submit

To send visitors to your own thank-you page, add a hidden _next field with its full address. A page on the same site works straight away; for a different domain, sign in and add it to the form’s allowed domains, so nobody can use your form as an open redirect.

contact.html
<input type="hidden" name="_next" value="https://yoursite.com/thanks.html">
<input type="hidden" name="_subject" value="New enquiry from yoursite.com">

_subject sets the subject line of the email you receive. Want to stay on the page instead? Add the helper script and adata-sendm8 attribute, and the form sends in the background and shows your message:

contact.html
<script src="https://sendm8.com/s/v1.js" defer></script>
<form action="https://sendm8.com/f/you@example.com" method="POST"
      data-sendm8 data-sendm8-success="Thanks! I’ll reply soon.">
  …
</form>

File uploads

Add enctype="multipart/form-data" and use normal file inputs. Each file can be up to 5 MB, with 10 MB and 5 files per submission. Files are kept with the submission and your email links to them, rather than attaching them.

apply.html
<form action="https://sendm8.com/f/you@example.com" method="POST" enctype="multipart/form-data">
  <input name="email" type="email" required>
  <input name="cv" type="file" accept=".pdf,.doc,.docx">
  <button>Apply</button>
</form>

On your platform

The form above works anywhere HTML does. For the details of a particular site builder, see the guides forGitHub Pages, Astro,Hugo, Jekyll,Eleventy and Next.js static export. Moving from another service? Compare sendm8 with Formspree, Web3Forms,FormSubmit, Getform and Basin.

Questions

How do I make an HTML form send an email?
Set the form’s action to a form backend URL that includes your email address, such as https://sendm8.com/f/you@example.com, and its method to POST. The backend receives each submission and emails it to you. No server code is needed.
Is it really free?
Yes. There’s no paid plan. A form made with your email in the URL keeps up to 100 submissions a month; sign in and each form keeps 1,000 a month, on up to 100 forms. sendm8 is open source, so you can also run your own copy.
Do I need to sign up?
No. Put your address in the URL and confirm it once by clicking the link in the first email. Sign in later only if you want the dashboard, Discord, Slack, Telegram or webhooks.
Why not use a mailto: link as the action?
A mailto: action opens the visitor’s own email app rather than sending anything, so it fails for anyone without one set up and gives you no spam filtering. A form backend works in every browser.
Will my email address be visible in the page source?
Yes, with the email-in-the-URL endpoint. If you’d rather keep it private, sign in, create a form in the dashboard and use its id in the URL instead.
Can people reply to the visitor directly?
Yes. If the form has an email or _replyto field, it becomes the Reply-To of the notification, so hitting reply answers the person who wrote in.