2026-08-21 12:01:39 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-21 12:01:39 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-21 12:01:39 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30
2026-08-19 12:04:44 +05:30

notifkit

Self-hosted notification infrastructure. One call delivers to email, SMS, push, and webhook — routed by preference, quiet hours, and consent.

Documentation · Quickstart · Examples · notifkit.dev


Install

npm install notifkit

Node 22+, PostgreSQL, and Redis. Migrations ship in the package — point drizzle-kit at node_modules/notifkit/drizzle — and in development notifkit starts throwaway Postgres and Redis containers for you, so Docker is the only prerequisite to try it.

What it does

Shipping one notification is easy. Shipping a notification system is not: you end up with queues, retry logic, a preference store, quiet-hours maths, provider adapters, and a dead-letter queue nobody wants to own.

notifkit is that machinery, running on your servers. You describe who needs to know what; it works out how — the right channel, at a decent hour, only to people who said yes.

await notifkit.notify({
  user: "usr_123",
  template: "order-shipped",
  channels: ["push", "email"],
  fallback: true, // push first; email only if push fails
});

That call returns immediately. Behind it: preference and consent filtering, timezone-aware quiet hours, per-user throttling, template rendering, provider dispatch with retries and circuit breakers, and a durable log of what happened.

Channels email, sms, push, webhook
Targeting A user, a list of users, a segment, or a topic
Priorities low, normal, high, critical — separate stream lanes
Scheduling Future sends with sendAt, quiet-hours deferral, cancel before dispatch
Preferences Per-user channel and topic opt-outs, quiet hours, contact-level overrides
Workflows Multi-step sequences with wait, waitForEvent, and notify steps
Reliability Redis Streams, 24h idempotency, backoff retries, DLQ, provider circuit breakers
Templates {{var}} interpolation with escaping decided by the destination field
AI Optional LLM augmentation before render, via the Vercel AI SDK
Multi-tenancy Projects with isolated keys, data, and rate limits
Consent RFC 8058 one-click unsubscribe; complaints and hard bounces suppress automatically
Reporting Tag a send with a campaign label, then read delivery and engagement totals back
Agents An MCP server (@notifkit/mcp) driving all of it from a terminal
Observability Prometheus /metrics, /health, /live, /ready, and a queryable delivery log

Bring your own provider accounts — first-party packages ship for Resend and Firebase Cloud Messaging, and anything else is one Transport class with a send() method. Your keys, your billing, your deliverability.

Requirements: Node 22+, PostgreSQL, Redis. In development notifkit starts throwaway Postgres and Redis containers for you, so the only prerequisite to try it is Docker.

What it is not: a marketing automation suite. It is infrastructure for product notifications.

Documentation

Everything lives at notifkit.dev/docs.

Quickstart Install to first delivered notification, about ten minutes
How it works The five nouns and the pipeline they move through
Channels & fallback Multicast, ordered fallback, writing a transport
Preferences & quiet hours The four gates every notification passes
Templates & AI Interpolation, escaping, per-channel content
Segments & scheduling Fan-out, priority lanes, sendAt, idempotency
Workflows Multi-step sequences, recurring sends, digests
Examples The five runnable projects in examples/
Architecture Streams, delivery guarantees, topologies, data model
Deployment Dockerfile, Compose, splitting API from workers
Operations Health, metrics, the DLQ, key rotation, shutdown
Reference Every endpoint, payload shape, and SDK method
MCP server Send and report on campaigns from a terminal agent

Star the repo

If notifkit saves you a month or two you were about to spend building this yourself, give it a star — it is the cheapest way to help other people find it.

Contributing

Issues and pull requests are welcome. npm install && npm run build, then npm test — the suite starts its own Postgres and Redis containers, so Docker is the only thing you need running.

License

MIT. Do what you like with it, including commercially. See LICENSE.

Languages
TypeScript 98.6%
JavaScript 0.9%
Shell 0.2%
CSS 0.2%