Skip to content

Send any website form to your email

Point an HTML form at https://api.usemektup.com/submit with your access key, and every submission arrives as an email in the mailbox you choose, with Reply-To set to the visitor. No backend, no plugin, your own design. Included in Mektup.

Updated

Plain HTML

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

  <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>

  <!-- honeypot: hidden from people, bots fill it in -->
  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off">

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

Every field you include appears in the email under its own name. Special fields: email (or replyto) sets Reply-To, subject overrides the subject, redirect sends the visitor to your thank-you page, and botcheck is the honeypot.

JavaScript, without leaving the page

const form = document.querySelector("#contact");

form.addEventListener("submit", async (event) => {
  event.preventDefault();
  const res = await fetch("https://api.usemektup.com/submit", {
    method: "POST",
    headers: { Accept: "application/json" },
    body: new FormData(form),
  });
  const { success, message } = await res.json();
  form.querySelector(".status").textContent = success ? "Thanks, we'll be in touch." : message;
});

With Accept: application/json the endpoint answers { "success": true, "message": "..." } instead of a page, so you can show your own message.

From server code

import requests

# e.g. from a Django or Flask view, a script or a webhook
requests.post(
    "https://api.usemektup.com/submit",
    json={
        "access_key": "YOUR_ACCESS_KEY",
        "name": "Ava Chen",
        "email": "ava@chenstudio.com",
        "subject": "Quote request",
        "message": "We need a new site by March.",
    },
    headers={"Accept": "application/json"},
    timeout=10,
)

Create the form

  1. Add your domain and the mailbox that should receive the submissions, for example contact@.
  2. Create a form in the dashboard under Forms, or with POST /v1/forms, and choose that mailbox.
  3. Copy the access key into your form's hidden field.

Because submissions land in a real mailbox, you can answer them in webmail or your mail app, hand them to an AI agent through the mailbox's webhook, or both.

Questions

How do I send a website form to my email without a backend?

Point the form's action at https://api.usemektup.com/submit and add a hidden access_key field. Mektup turns each submission into an email in the mailbox you chose. It works from static sites, site builders and single-page apps, with no server code.

Can I reply to the person who filled in the form?

Yes. The value of the email field becomes the message's Reply-To, so pressing Reply in webmail or your mail app answers the visitor directly.

How are spam bots stopped?

Add the hidden botcheck field: submissions that fill it in are dropped. Submissions are also limited to 30 a minute per IP, and the access key can be rotated if a form is abused.

Is the access key a secret?

No. It sits in your page's HTML and only allows submitting to that form. Your API key, which can do everything, is never needed in the browser.

What does it cost?

Forms are included in Mektup Starter ($20 a month). Each submission is delivered as one email and counts towards the sending limits: 50,000 a month and 2,000 a day.

Start today, or talk to us?

Starter is $20 a month. Agencies get a quote for every client domain on one account.