← back
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 notification engine you run inside your PostgreSQL + Redis infrastructure with zero usage fees, zero vendor lock-in, and full operational transparency.

The short version

Knock provides a polished developer-facing SaaS experience and hosted in-app notification components. However, as your application grows, Knock’s monthly subscription tiers and per-notification overage charges accumulate quickly, while your customer data and notification payloads reside on their servers.

NotifKit is designed for teams who want the power of a modern notification engine—cross-channel routing, per-user preferences, quiet hours, retries, and 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 offers a free Developer tier (up to 10k messages/mo), and a Starter tier at $250/month (including 50,000 messages/mo). Additional volume is billed at $0.0050 per message overage. In addition, Knock users still pay direct provider delivery bills to Twilio, Resend, AWS SES, and APNs/FCM.

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 – $80/mo (PostgreSQL + Redis VPS)
Direct provider deliverability Direct to Twilio, Resend, AWS SES, FCM Direct to Twilio, Resend, AWS SES, FCM (0% markup)

Monthly TCO by notification volume

The table below models total monthly TCO across notification scales, including standard multi-channel deliverability (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,380 / mo ($80 infra + $4.3k prov) $107,040 / yr (67% saved)

Key differences deep-dive

1. Predictable economics without a notification tax

As modern products grow, notification volume scales exponentially: transactional receipts, authentication codes, comment mentions, digests, failed-payment recovery, and security alerts. With Knock, every notification adds to your monthly SaaS bill.

NotifKit removes the middleman toll. Because it runs on lightweight Redis Streams and PostgreSQL, delivering 100,000 notifications costs the exact same in software licenses as delivering 10,000,000: $0. You only pay direct provider rates (e.g. $0 via FCM push or direct Twilio carrier fees).

2. Durable workflows that survive deploys

Both Knock and NotifKit support multi-step sequences with delays, batching, and conditional branching. However, NotifKit executes workflows directly inside your infrastructure using 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 your workers restart during a deploy or a node crashes midway through a 48-hour wait, NotifKit's consumer groups and scheduled timers resume execution without dropping state or sending duplicate alerts.

3. Full data sovereignty & local observability

With Knock, querying past delivery logs or inspecting payload contents requires calling cloud APIs or browsing their web console.

With NotifKit, all delivery events, contact statuses, and dead letters live in your PostgreSQL database and Prometheus metrics stream. You can inspect dead letters via the local dashboard or resolve silent failures directly through SQL or the /v1/dlq endpoint.

When to choose what

Choose Knock if
  • You want a fully managed SaaS API and prefer not to run any backend workers.
  • You want pre-built hosted in-app notification feed UI components.
  • Your budget comfortably accommodates usage-based SaaS scaling.
Choose NotifKit if
  • You want total infrastructure ownership with zero 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.