-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Tiny, production-grade webhook receiver. POST anything, get an email. Optional Slack fan-out, HMAC verification, retries.
Built by Sarma Linux. MIT licence.
A 200-line Node.js service that turns webhook traffic into formatted emails and, optionally, Slack messages. Drop it next to any service that emits webhooks: Stripe, GitHub, Typeform, Calendly, Cal.com, Vercel, Linear, Sentry, Twilio, or internal cron jobs.
Point the webhook at this service, it verifies the signature (optional but recommended), formats a readable email, and sends it via Resend. Stateless, no database, logs to stdout.
- Developers who want a single notification destination for all their SaaS webhooks.
- Teams who need a webhook firehose they can route, audit, and replay from one place.
- Anyone forwarding Cal.com, Stripe, or GitHub events to their inbox.
-
HMAC-SHA256 verification — optional, supports multiple header formats (
X-Signature,X-Hub-Signature-256,X-Stripe-Signature). -
Per-source templates — drop a JS file in
src/templates/<source>.jsto format any payload. - Default formatter — no template? sends pretty-printed JSON. Zero config for new sources.
- Slack fan-out — one env var away.
- Single-attempt retry on 5xx from Resend.
-
Docker-ready —
docker runordocker-compose up -d.
~50MB RSS at idle. Handles ~1000 req/sec before Resend rate limits become the bottleneck.
Node.js 20+, Express 4, Resend email API, Docker (Alpine, ~80MB image).
- Architecture — fan-out diagram, request sequence, component table, design rationale
- Quick-Start — install, env vars, first webhook, Stripe and GitHub setup, Slack fan-out
- HMAC-Verification — signature formats, verification logic, per-source setup
- Per-Source-Templates — writing formatters, bundled examples
- Configuration — all env vars
- Deployment — Docker, docker-compose, Fly.io, Render, Railway
- Production-Checklist — TLS, rate limiting, domain verification, monitoring
- Roadmap — what is shipped and what is next