Overview & Architecture
Learn how EntryWise ingests form submissions in under 20ms and routes payloads to SQLite, CRMs, spreadsheets, webhooks, and email providers without vendor lock-in.
What is EntryWise?#
EntryWise is an open-source, developer-first headless form backend engineered for speed, privacy, and zero platform lock-in. Point any HTML <form>, React component, or JSON fetch() call to your EntryWise endpoint (/f/:formKey) and get instant persistence, spam defense, CRM routing, and transactional emails.
Unlike heavyweight form builders that force proprietary iframes or bloated client bundles onto your site, EntryWise lets you keep 100% control over your markup and styling while handling everything that happens after a user clicks Submit.
- —Sub-20ms HTTP ingestion response time — heavy connector & email fanout runs asynchronously.
- —Dual-runtime architecture: deploy globally on Cloudflare Workers + D1 or self-host anywhere via a single Docker container using Bun + native SQLite.
- —Zero-OAuth connectors for Salesforce Web-to-Lead, Airtable, Notion, Google Sheets, Slack, and Discord.
- —Built-in Visual Email Studio with customizable confirmation & notification templates and multi-provider failover.
This documentation hub is powered by EmDash CMS (emdash/astro). Site administrators can edit articles, add guides, or update landing copy live at /_emdash/admin.
How the Parallel Ingestion Pipeline Works#
Every submission to POST /f/:formKey passes through a deterministic 4-stage pipeline designed so slow third-party APIs never block your end user:
- —Stage 1 — Edge Gatekeeper (<2ms): Validates CORS origins, checks rate limits, evaluates honeypot fields (_gotcha), blocks disposable email domains, filters spam keywords, and verifies optional Cloudflare Turnstile tokens.
- —Stage 2 — Schema & Persistence (<5ms): Auto-discovers new field types on the fly, validates required/typed rules, masks IP addresses if GDPR Zero-IP mode is enabled, and commits the submission to SQLite / D1.
- —Stage 3 — Instant HTTP Response (<15ms total): Returns a clean 200 JSON response (or 302 redirect if _redirect is specified) back to the browser.
- —Stage 4 — Async Queue Fanout: Dispatches background jobs to your configured Queue Driver (Cloudflare Queues, In-Memory Queue, or external HTTP Worker) for Google Sheets auto-column expansion, Notion/Airtable/Salesforce sync, HMAC-SHA256 webhooks, and email notifications.
Cloudflare Edge vs. Docker Self-Hosting#
EntryWise uses a clean runtime adapter layer (src/runtime/*) so the exact same TypeScript codebase runs natively on Cloudflare Workers or inside any standard Docker container:
| Subsystem | Cloudflare Edge Mode | Docker / Bun Self-Hosted | Env Toggle |
|---|---|---|---|
| Database | Cloudflare D1 | bun:sqlite (WAL mode) | Auto-applies all SQL migrations on container boot (DATABASE_PATH). |
| Async Queue | Cloudflare Queues | In-Memory or HTTP Webhook | Controlled via QUEUE_DRIVER=memory | http | cloudflare. |
| Email Engine | Workspace BYOK / Resend | Resend / SMTP2GO / Webhook / Console | Controlled via DEFAULT_EMAIL_PROVIDER with per-workspace overrides. |
| Rate Limit & KV | Cloudflare KV | In-Memory TTL Store | Zero external Redis dependency required for single-container setups. |
