Home / Contact form for a website

Contact forms, no backend

Add a contact form to your website that emails you

You want visitors to be able to message you, and you want those messages in your inbox - without building a backend, wiring up an email API, or standing up a server. Here's how to add a contact form to any website, static or not, in about five minutes.

Why contact forms are usually harder than they should be

A contact form is just an HTML form - but the moment someone hits submit, that data has to go somewhere. Traditionally that means a backend: a server or serverless function that receives the POST, validates it, and sends you an email. On a static site (GitHub Pages, Vercel, Netlify, a plain HTML page) you don't have one, so people reach for a form service.

Mektup does the receiving-and-emailing part for you, and because it's built on a real email platform, the submission doesn't just get logged somewhere - it becomes an actual email in a mailbox you own.

How it works

You create a form in Mektup and pick which mailbox it should deliver to. Mektup gives you a public access key. You put a normal HTML form on your site, point it at Mektup's submit endpoint, and include that key as a hidden field. That's it - no backend, no API key in your code, no server to keep online.

The form

<form action="https://api.usemektup.com/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">

  <input type="text"  name="name"    placeholder="Your name"  required>
  <input type="email" name="email"   placeholder="Your email" required>
  <textarea name="message" placeholder="Your message" required></textarea>

  <!-- Honeypot: hidden from people, catches bots. Leave it empty. -->
  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off">

  <button type="submit">Send</button>
</form>

Submit that, and the message lands in your inbox. The form's HTML and styling are entirely yours - Mektup only provides the endpoint and the key, and never injects any markup or scripts into your page.

Where the messages go

Each submission arrives as a real email in the mailbox you chose, with Reply-To set to the person who filled in the form - so you just hit Reply and your response goes straight to them. Read and reply in Mektup's webmail, or in Outlook, Apple Mail, or your phone over IMAP. Because it's ordinary email, you can search it, file it, and forward it like anything else in your inbox.

It's a real API endpoint - use it from any language, not just HTML

https://api.usemektup.com/submit is a plain HTTP endpoint. An HTML form is the simplest way to call it, but it's just as much a contact form backend/API for anything else that can send a POST request - a Python script, a serverless function, a mobile app, a CLI tool. Send form fields as JSON instead of a form body and it works the same way.

# Python - requests
import requests

requests.post("https://api.usemektup.com/submit", data={
    "access_key": "YOUR_ACCESS_KEY",
    "name": "Jane Doe",
    "email": "jane@example.com",
    "message": "Hello from a Python backend",
})

Same endpoint, same access key, whether the request comes from a browser form, a Python backend, a Node.js server, or curl. There's nothing framework- or language-specific about it - it's one URL that accepts form fields and turns them into email.

Spam protection built in

The example above includes a honeypot field named botcheck: a real person never sees or fills it, but bots do, and Mektup silently drops any submission where it's filled. Submissions are also rate-limited, so a script can't hammer your form. No CAPTCHA to bolt on for basic protection.

A simpler Web3Forms alternative

If you've used Web3Forms, Formspree, or similar, the shape here is familiar: a public access key in a plain HTML form. The difference is where it lands. Those services relay your submission to an email address. Mektup delivers it into a real mailbox on your own domain - the same inbox you already read - so leads live alongside your other mail instead of in a separate dashboard. And the same account gives you email for the domain, not just the form.

What it costs

Forms are included with every Mektup account, starting on the free plan (1 domain, 3,000 emails a month, no daily cap). Since form submissions are delivered as email, they simply use your normal sending allowance. See the full pricing.

Create your first form

FAQ

Common questions

How do I add a contact form to a static website?

Point a normal HTML form at Mektup's submit endpoint and include your form's access key as a hidden field. No server or backend is needed, so it works on static hosts like GitHub Pages, Vercel, or Netlify.

Where do contact form submissions go?

Into a real mailbox you own. Each submission arrives as an email in your Mektup inbox with Reply-To set to the person who filled the form, so you can reply straight to them.

Is the access key a secret?

No. The access key is a public token, safe to ship in your site's HTML, exactly like Web3Forms. It only allows submitting to that one form. If a form gets abused, you rotate the key.

Is this a contact form backend or API I can call from Python or another language?

Yes. The submit endpoint is a plain HTTP POST target, not something tied to HTML forms specifically - a Python script, a Node.js server, a mobile app, or curl can all POST the same fields and get the same result: a real email in your inbox. It works as a general-purpose contact form backend/API, not just a static-site form handler.

Is a contact form the same as an email form or form-to-email service?

Yes - contact form, email form, and form-to-email all describe the same thing: a form whose submissions arrive as email instead of being stored somewhere you have to log into separately. Mektup's forms deliver into a real mailbox on your own domain, so submissions sit alongside your other email.

Ready when you are

A contact form that lands in your inbox

Create a form free