Product

Two ways to send mail. One mailbox.

A unified transactional API for your backend, plus drop-in form endpoints for static HTML sites built by AI. Both route through the mailbox you already use — inbox-native threading, your own domain reputation, zero lock-in.

Universal mailbox connector
Gmail, Microsoft 365, custom SMTP. OAuth or app password — same API on top.
Unified send API
One signature across providers. Idempotent, with automatic retries and exponential backoff.
Event webhooks
Delivered, failed, deferred. HMAC-signed payloads, replay-safe, retries 6× over 38h.
Form endpoints
One action URL drops into any static HTML site. Submissions arrive in your inbox — paste & go.
Workspace teams
Invite teammates, transfer ownership, per-mailbox roles. Multi-workspace switcher for agencies.
Tenant security
AES-256-GCM encrypted credentials, HMAC-signed webhooks, per-workspace IP allowlist, 2FA, per-tenant sending pause.
Form endpoints

One action="…" away from a working form.

Drop the URL into any HTML — your AI can keep its Tailwind, your designer can keep their CSS. Submissions land in your own mailbox so the visitor's reply threads into the original email.

contact.html paste & go
<form action="https://api.js2mail.dev/f/aB3xKp9R"
      method="POST" class="your-tailwind-classes">
  <input name="name" required>
  <input name="email" type="email" required>
  <textarea name="message"></textarea>
  <input name="_honey" style="display:none">
  <button>Send</button>
</form>
Sent from your own mailbox
Gmail, Microsoft 365, or any SMTP. Replies thread into your inbox like normal email.
Schemaless fields
Whatever name="X" you put on an input is available as {{X}} inside your Subject + Body templates.
Per-form CORS allowlist
Submissions from unauthorized origins are blocked at the edge before they hit the dispatch pipeline.
Test mode toggle
Skip the origin allowlist and tighten the rate limit while you build on localhost. Flip back to false before publishing.
Honeypot + per-IP rate limit
Bot submissions silently drop; visitors are capped at 5/minute per IP (2/min in test mode).
AI can provision the form itself.
Install @js2mail/mcp in Claude Desktop / Cursor / Continue. The agent calls createFormEndpoint and hands you back a working snippet — no sign-up dance.
See snippets AI prompts