Bay 01Start here
#The basic form
Point any HTML form at your sendm8 endpoint with method="POST". Every field with a name is stored and delivered, using the names you chose. Keep your own markup, styling and validation: we don’t inject anything into your page.
There are two kinds of endpoint, and they work the same way:
/f/you@example.com: no account needed. Great for trying it out and for small sites. How it works./f/k3x9q2m7ab: a form you created in the dashboard. The id keeps your email address out of your page source, and unlocks channels, allowed domains and your own Resend key.
contact.html
<form action="https://sendm8.com/f/k3x9q2m7ab" method="POST">
<label>Email <input name="email" type="email" required></label>
<label>Message <textarea name="message"></textarea></label>
<button>Send</button>
</form>ContactForm.jsx
export function ContactForm() {
return (
<form action="https://sendm8.com/f/k3x9q2m7ab" method="POST">
<input name="email" type="email" required />
<textarea name="message" />
<button>Send</button>
</form>
);
}ContactForm.vue
<template>
<form action="https://sendm8.com/f/k3x9q2m7ab" method="POST">
<input name="email" type="email" required />
<textarea name="message" />
<button>Send</button>
</form>
</template>src/components/Contact.astro
---
const endpoint = "https://sendm8.com/f/k3x9q2m7ab";
---
<form action={endpoint} method="POST">
<input name="email" type="email" required />
<textarea name="message" />
<button>Send</button>
</form>app/contact/page.tsx
export default function Contact() {
// Plain HTML post: works with JavaScript off, no API route needed
return (
<form action="https://sendm8.com/f/k3x9q2m7ab" method="POST">
<input name="email" type="email" required />
<textarea name="message" />
<button>Send</button>
</form>
);
}We accept application/x-www-form-urlencoded (a normal form post), multipart/form-data (for files) and application/json. A submission can have up to 100 fields and 64 KB of text.