Skip to main content
Migrate from Knock to Novu by mapping Knock workflows and users to Novu workflows and subscribers, reconnecting your delivery providers, and replacing the Knock in-app feed with the Novu Inbox component.

Why migrate to Novu?

  • Open source: Self-host Novu or use Novu Cloud with full transparency
  • Unified workflows: Content, routing, delays, and digests in one workflow
  • Inbox component: Drop-in React Inbox with headless hooks for custom UI
  • Code-first option: Define workflows in TypeScript with the Novu Framework
Compare platforms in detail on Novu vs Knock.

How do Knock concepts map to Novu?

Knock ConceptNovu EquivalentNotes
WorkflowsWorkflowsNovu workflows combine content and delivery logic in one definition
UsersSubscribersIdentified by subscriberId; pass data inline when triggering
Objects / TenantsContextsScope notifications to tenants with contexts
ChannelsIntegrationsConnect SendGrid, Twilio, FCM, Slack, and 60+ providers
In-app feedInboxReplace Knock feed components with <Inbox />
PreferencesPreferencesGlobal and per-workflow preferences built into Novu

What are the migration steps?

1

Phase 1: Set up Novu and connect providers

  1. Create a Novu Cloud account.
  2. Connect your email, SMS, push, and chat providers in the Integrations store.
  3. Copy API keys for Development and Production environments.
2

Phase 2: Recreate workflows

Rebuild each Knock workflow in the Novu Dashboard or with the Novu Framework. Map Knock steps to Novu channel and action steps (delay, digest, throttle).
3

Phase 3: Migrate subscribers

Use a lazy migration: pass subscriber details inline when triggering workflows. Novu creates or updates subscribers automatically. For bulk sync, use Bulk create subscribers.
4

Phase 4: Replace the in-app feed

Replace Knock feed components with the Novu Inbox. Follow the Next.js quickstart or React quickstart.
5

Phase 5: Switch triggers and validate

Update your backend to call Novu’s Trigger event API instead of Knock. Run both systems in parallel during a transition window, then disable Knock triggers.