Self-hosted form backend · you own the data

One form backend for all your websites.

Every submission from every site, in one dashboard — with no SMTP and no backend. Branded auto-replies and AI spam-blocking included.

No credit card · no SMTP config · integrate in 2 minutes

inlet — dashboard

Overview

Every site's leads, in one place

New form

Total leads

1,248

↑ all-time

Last 7 days

96

↑ 18% vs prior

Active forms

7

across 5 sites

Submission trend
Top forms
Portfolio82
Contact64
Pricing41
Lead database Search

Ada Lovelace

ada@example.com

2m ago

Grace Hopper

grace@example.com

14m ago

Alan Turing

alan@example.com

1h ago

Drops into any stack

AstroNext.jsNuxtVueSvelteSvelteKitRemixReactSolidQwikAngularPlain HTMLAstroNext.jsNuxtVueSvelteSvelteKitRemixReactSolidQwikAngularPlain HTML
The whole integration

Two values. Zero email plumbing.

Every other form tool makes you wire SMTP or an email SDK into each site. Here, your site holds nothing — just a FORM_API_URL and a FORM_ID. The service does delivery, spam filtering, and the branded auto-reply.

  • No SMTP credentials in your frontend
  • No email library to install
  • No backend for you to run
  • Copy-paste helper works everywhere
submit.js
// 1. Get a proof-of-work challenge, solve it, POST your fields.
const API_URL = process.env.FORM_API_URL;   // the service
const FORM_ID = process.env.FORM_ID;         // one form's UUID

async function submitForm(fields) {
  const c = await (await fetch(`${API_URL}/api/challenge`)).json();
  let nonce = 0;
  while (!(await sha256(`${c.challenge}:${nonce}`)).startsWith("0".repeat(c.difficulty))) nonce++;
  return fetch(`${API_URL}/api/submit/${FORM_ID}`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ ...fields, pow_challenge: c.challenge, pow_timestamp: c.timestamp, pow_nonce: String(nonce) }),
  });
}
// No SMTP. No email library. No backend to run. That's the whole integration.

Don't read about it. Use it.

This is the real pipeline — proof-of-work, spam scan, delivery, auto-reply — running in your browser. Type something and hit send. Then try to spam it.

Built to scale

Everything a lead needs to arrive — nothing you have to run.

One backend, many client sites — each branded, all protected, all centralized.

Centralized inbox

Every submission from every site lands in one dashboard with live status.

Ada Lovelace2m
Grace Hopper14m

AI + PoW anti-spam

Honeypot, proof-of-work, NLP filter, reverse-DNS VPN block.

White-label emails

Auto-reply emails adapt to each client's logo, colors and name.

Client analytics

Per-client dashboards so each site owner tracks their own leads and conversion in real time.

Client A82%
Client B58%
Client C34%

CSV export

One click flattens dynamic fields into clean columns.

SMTP fallback

Rotates across backup accounts so a lead is never lost.

Any framework

Astro, Next, Nuxt, Vue, Svelte, or plain HTML.

Fast path

Live in three steps

From zero to receiving branded lead emails — in minutes.

01

Create a form

Add a form in the dashboard, pick its brand, copy its unique ID.

02

Paste the snippet

Drop the two env values and the submit helper into any site.

03

Receive & manage

Owner gets a notification, submitter gets a branded auto-reply, you watch it live.

Why teams switch

Self-hosted, multi-tenant, and developer-first.

Swipe to compare →

CapabilityInletFormspree / BasinJotform
Self-hosted, own your data
No SMTP in your sites
Multi-tenant white-label emails
Proof-of-work + NLP anti-spam
Developer-first integration
One backend for many sites
Early users

Built with real developers, on real sites.

Inlet is new — this is honest feedback from the first people running it, including the team that built it.

Up and running in two minutes. No SMTP to wire, nothing to waste time on — it just worked.

Early user

Web developer

My clients check their own leads now. I stopped losing hours forwarding every message to them.

Early user

Freelance developer

I built it because I was wasting so much time on every site. Now I run all of mine on it.

Eddy

Creator of Inlet

Answers

Frequently asked

Do my websites need SMTP credentials or an email library?

No. SMTP is configured once inside the service. Your websites only POST their form fields to a form URL — they hold no email credentials and import no mailer. This is the core difference from wiring email into every site.

Can it send email without a verified domain?

Yes. With a single verified sender (for example via Brevo) you can send to anyone — no full domain setup required. A custom domain with DKIM/SPF improves deliverability at scale, but is optional to start.

Which frameworks and stacks does it support?

Any browser JavaScript environment: Astro, Next.js, Nuxt, Vue, Svelte, or plain static HTML. You copy one small submit helper (or a standard HTML form) and point it at your form URL.

How does it stop spam?

Four layers: a hidden honeypot field, a cryptographic proof-of-work challenge that costs bots CPU, an NLP keyword filter, and reverse-DNS blocking of VPN/cloud hosts. Blocked attempts are logged, never delivered.

How is this different from Formspree, Basin, or Jotform?

It is self-hosted on your own Supabase and Vercel, so you own the data. It is multi-tenant and white-label — one backend serves many client sites, each with its own branded emails. It is developer-first (code integration), not a drag-and-drop builder.

What happens to file uploads?

Base64 file payloads are intercepted, uploaded to storage, and replaced with clean download links inside the notification email — so attachments never trip spam filters or bloat inboxes.

Ship forms today. Own them forever.

One backend for every site you build — no SMTP, no lock-in, your data.