Getting started
mailcontact gives every project one inbox, fed by two sources: an HTML form endpoint and a real email address. Here's the whole setup (create an inbox, wire a source, get your first message) in about a minute.
1. Create an inbox
One inbox per project: a portfolio, a client site and a side project each get their own, instead of everything piling into your personal email. Creating one takes a name and nothing else. The beta is currently invite-only, so join the waitlist to get access. The free plan covers up to 2 projects.
2. Grab your two sources
Creating a project gives you two ways in, and both work immediately:
- A form endpoint: a URL any HTML form or
fetchcall can POST to. Full reference in Form endpoint. - A project email address:
yourproject@mailcontact.app, a real inbound address with no DNS records or mail server to set up. Details in Project email address.
Messages from either source land in the same inbox, tagged so you can tell a form submission from an email at a glance. The simplest form looks like this:
<form action="https://mailcontact.app/api/forms/your-form-id" method="POST">
<input type="text" name="name" placeholder="Your name" />
<input type="email" name="email" placeholder="you@email.com" required />
<textarea name="message" placeholder="Your message" required></textarea>
<button type="submit">Send</button>
</form>Prefer a ready-made snippet for your stack? There's a contact form generator and framework guides for Next.js, Astro, Hugo, Webflow and more.
3. Add a notification channel
Connect a channel so a new message pings you instead of waiting in a tab: Discord and email on the free plan, Slack and webhooks on Pro. See Notifications for setup and Webhooks for the JSON payload you can point at your own endpoint.
4. Send yourself a test message
The quickest test is a curl against your form endpoint:
curl -X POST https://mailcontact.app/api/forms/your-form-id \
-d "email=you@example.com" \
-d "message=Testing my new inbox"The endpoint answers {"ok": true}, the message appears in your inbox, and your notification channel pings. You can also test the other source: email your @mailcontact.app address from your normal account and watch it land in the same inbox.
Where to go next
- Form endpoint: fields, FormData and JSON, CORS, responses and error codes.
- Project email address: how the address works and where inbound mail lands.
- Notifications: Discord, Slack, email and webhook channels.
- Webhooks: receive every message as a JSON POST.
- Spam protection: honeypot fields and sender rules.
mailcontact is in beta and launching soon. The waitlist is on the homepage. Plans and limits are on the pricing page.