Star
Compare · NotifKit vs Knock

NotifKit vs Knock

Knock is a cloud-hosted developer notification API billed on message volume and active users. NotifKit is a self-hosted engine on your own PostgreSQL + Redis, with no usage fees, no vendor lock-in and full operational transparency.

The short version

Knock offers a polished developer SaaS and hosted in-app notification components. As you grow, its subscription tiers and per-notification overage add up quickly, and your customer data and payloads live on their servers.

NotifKit gives teams a modern notification engine (cross-channel routing, per-user preferences, quiet hours, retries, durable multi-day workflows) without the SaaS price tag or cloud dependency.

Feature comparison

Capability Knock NotifKit
Hosting & Data Residency Closed-source multi-tenant cloud API. Customer emails, phone numbers, recipient profiles, and message payloads are stored in Knock's cloud database. 100% self-hosted on your own PostgreSQL 14+ and Redis 7+ instances. Zero external data egress; private VPC data sovereignty.
Workflow Engine & Primitives Visual workflow builder + declarative JSON steps (channel, batch digest windows, delay, branch conditions, throttle). Code-first TypeScript DSL (workflow()) with step.notify(), durable step.wait(), step.waitForEvent(), and memoised step.run() side effects.
Workflow State Durability Orchestrated in Knock cloud engine; execution tree and run logs retained for 30 days on Starter plan. PostgreSQL durable step outcome tables + Redis Streams consumer groups; completed steps are committed before subsequent steps run and survive worker redeploys without state loss.
In-App Notification Feed Component Pre-built drop-in UI: Full-featured @knocklabs/react, React Native, Swift, Kotlin, and Flutter feed & guide components with real-time WebSockets. Backend delivery only: Dispatches to webhook or writes to PostgreSQL; no pre-built frontend UI feed components.
Environment Sync & CI/CD Knock CLI (@knocklabs/cli) to push/pull workflow JSON definitions and sync template directories across cloud environments. Standard Git version control. Workflows and templates live in your code repository and deploy alongside application releases.
Multi-Channel Routing & Fallback Branching conditions configured in visual workflow builder or channel step definitions. Deterministic channel arrays in code: channels: ["push", "sms", "email"] with fallback: true for sequential failover or false for parallel multicast.
User Preferences & Quiet Hours Hierarchical PreferenceSets (category, workflow, and channel levels) with hosted preference center components. PostgreSQL user JSON with IANA timezone quiet hours (quietHours: [{ start: "22:00", end: "08:00" }] with midnight wrap support), channel opt-outs, and address suppression lists.
Template System & Personalization Visual template editor in web dashboard supporting Markdown, HTML, and Liquid syntax. Handlebars templates versioned in Git, validated with JSON Schema, with optional LLM aiPrompts for dynamic copy generation.
Dead-Letter Queue & Incident Replay Cloud workflow run debugger with manual retry buttons. Dedicated /v1/dlq API with single-request replay (POST /v1/dlq/{id}/replay), Prometheus /metrics, and local dashboard.
Local Development & CI Testing Requires cloud connectivity, Knock test environment, and outbound API calls. Runs 100% offline via Docker Compose or in-memory provider-console transport for instant unit testing.
AI / IDE Coding Assistant Tooling Hosted Model Context Protocol (MCP) server, Knock CLI for AI coding agents, in-workflow agent function, and Claude/Cursor Skills. Built-in Model Context Protocol (MCP) server for Claude, Cursor, and Antigravity IDEs to inspect queues, preview templates, and triage DLQ without leaving your editor.
Pricing Model & Platform Markup Starter tier: $250/mo base (50k sends) + $0.0050/send overage ($5,000/mo at 1M sends) on top of your underlying Twilio/SES bills. $0 platform fee, $0 per-message toll, unlimited users/sends; runs on your own ~$15–$35/mo PostgreSQL + Redis infra.

Pricing & total cost of ownership (TCO)

Knock has a free Developer tier (up to 10k messages/mo) and a Starter tier at $250/month (50,000 messages/mo included), with overage at $0.0050 per message. Provider bills (Twilio, Resend, AWS SES, APNs/FCM) come on top.

Cost dimension Knock (Cloud SaaS) NotifKit (Self-hosted)
Base platform fee $250 / month (Starter plan, includes 50k msgs) $0 (Open source)
Volume overages $0.0050 / send above 50k allowance $0.00 (0% markup)
Team member seats Included (Unlimited members on Starter) Unlimited seats ($0)
Self-hosted infrastructure Managed by Knock cloud $10 – $20/mo (PostgreSQL + Redis VPS)
Direct provider deliverability Direct to Twilio, Resend, AWS SES, FCM Direct to Twilio, Resend, AWS SES, FCM (0% markup)
Interactive Pricing & Volume Calculator
NotifKit
$170/mo
~$15/mo infra + ~$155/mo prov
vs
Knock
$1,405/mo
$1,250/mo SaaS + ~$155/mo prov
250,000 / mo
10k 50k 250k 1M 3M 5M
Delivery provider
Includes ~$155/mo provider transport (Email + FCM Push · $0) + ~$15/mo self-hosted infra

Monthly TCO by notification volume

Monthly TCO by volume, with a standard channel mix (10% Twilio SMS @ $0.0079, 70% Resend/SES Email @ $0.0001–$0.0008, 20% FCM Push @ $0):

Monthly volume Direct provider cost Knock total monthly TCO NotifKit total monthly TCO Annual savings with NotifKit
50,000 sends ~$43 / mo $293 / mo ($250 base + $43 prov) $53 / mo ($10 infra + $43 prov) $2,880 / yr (82% saved)
250,000 sends ~$218 / mo $1,468 / mo ($1,250 SaaS + $218 prov) $233 / mo ($15 infra + $218 prov) $14,820 / yr (84% saved)
1,000,000 sends ~$860 / mo $5,860 / mo ($5,000 SaaS + $860 prov) $895 / mo ($35 infra + $860 prov) $59,580 / yr (85% saved)
5,000,000 sends ~$4,300 / mo $13,300 / mo (~$9.0k SaaS + $4.3k prov) $4,320 / mo ($20 infra + $4.3k prov) $107,760 / yr (68% saved)

Key differences deep-dive

1. Predictable economics without a notification tax

As products grow, notification volume climbs fast: receipts, authentication codes, mentions, digests, failed-payment recovery, security alerts. With Knock, every one adds to your monthly bill.

NotifKit removes the middleman. On Redis Streams and PostgreSQL, 100,000 notifications cost the same in software licences as 10,000,000: $0. You pay only provider rates (e.g. $0 via FCM push, or Twilio carrier fees).

2. Durable workflows that survive deploys

Both support multi-step sequences with delays, batching and conditional branching. NotifKit runs them inside your infrastructure on Redis Streams and PostgreSQL locks:

import { workflow } from "notifkit";

workflow("payment-recovery", async ({ step, event }) => {
  const { invoiceId, amount } = event;

  // Day 0: Immediate email notification
  await step.notify({
    template: "invoice-failed",
    channels: ["email"],
    data: { invoiceId, amount },
  });

  // Wait 48 hours for retry or customer update
  await step.wait("48h");

  const paid = await step.waitForEvent("invoice.paid", {
    timeout: "24h",
    match: { invoiceId },
  });

  if (!paid) {
    // Escalate to urgent SMS with fallback to push
    await step.notify({
      template: "urgent-payment-action",
      channels: ["sms", "push"],
      fallback: true,
      priority: "high",
      data: { invoiceId, amount },
    });
  }
});

If workers restart during a deploy, or a node crashes mid-way through a 48-hour wait, consumer groups and scheduled timers resume without losing state or sending duplicates.

3. Full data sovereignty & local observability

With Knock, past delivery logs and payloads are only reachable through cloud APIs or their web console.

With NotifKit, delivery events, contact statuses and dead letters live in your PostgreSQL database and Prometheus metrics. Inspect dead letters in the local dashboard, or chase silent failures with SQL or the /v1/dlq endpoint.

When to choose what

Choose Knock if
  • You want a fully managed SaaS API and no backend workers to run.
  • You want pre-built hosted in-app notification feed UI components.
  • Your budget comfortably covers usage-based SaaS pricing.
Choose NotifKit if
  • You want to own the infrastructure, with no per-message costs.
  • User data, push tokens, and phone numbers must remain inside your VPC.
  • You want full transparency into Redis Streams, worker scaling, and dead letters.
  • You use AI coding agents and want native MCP tool integration.