Notifications
novu

Novu

TypeScriptOpen SourceFree tier

Open-source notification infrastructure for developers. Unify in-app, email, SMS, push, and Slack notifications with a single API, workflow engine, and self-hostable dashboard.

License

MIT

Language

TypeScript

79
Trust
Good

Why Novu?

Multi-channel notifications (email + in-app + push + SMS) from one API

You want user notification preferences and digests built-in

Self-hosting is a requirement — Novu is fully open-source

Signal Breakdown

What drives the Trust Score

Weekly npm downloads
280k/wk
GitHub commits (90d)
340
GitHub stars
36k
Stack Overflow questions
1.2k
Community health
Very Active
Weighted Trust Score79 / 100

Download Trend

Last 12 months

Tradeoffs & Caveats

Know before you commit

Email-only notifications — Resend is simpler and cheaper

Simple SMS — Twilio is more reliable

Enterprise scale — Novu's managed offering is still maturing

Pricing

Free tier & paid plans

Free tier

30k events/mo free

Paid

From $250/mo

Self-hostable for free

Alternative Tools

Other options worth considering

onesignal
OneSignal31Limited

All-in-one customer messaging platform for push notifications, in-app messages, email, and SMS. Industry-leading free web push tier makes it the go-to for early-stage products.

firebase-fcm
Firebase Cloud Messaging44Limited

Google's free cross-platform push notification service. Supports iOS, Android, and web push notifications. Completely free with no monthly limits — ideal when you need reliable push without third-party costs.

Often Used Together

Complementary tools that pair well with Novu

nextjs

Next.js

Frontend & UI

98Excellent
View
supabase

Supabase

Database & Cache

95Excellent
View
resend

Resend

Email & Comms

71Good
View
clerk

Clerk

Auth & Users

80Strong
View
firebase-fcm

Firebase Cloud Messaging

Notifications

44Limited
View

Learning Resources

Docs, videos, tutorials, and courses

Get Started

Repository and installation options

View on GitHub

github.com/novuhq/novu

npmnpm install @novu/node

Quick Start

Copy and adapt to get going fast

import { Novu } from '@novu/node';

const novu = new Novu(process.env.NOVU_API_KEY!);

// Identify subscriber
await novu.subscribers.identify('user-123', {
  email: 'alice@example.com',
  firstName: 'Alice',
  phone: '+15558675310',
});

// Trigger multi-channel notification
await novu.trigger('order-update', {
  to: { subscriberId: 'user-123' },
  payload: { orderId: 'ORD-456', status: 'shipped' },
});

Code Examples

Common usage patterns

In-app notification feed

Show real-time in-app notifications with Novu

// React component using @novu/notification-center
import { NovuProvider, NotificationBell, PopoverNotificationCenter } from '@novu/notification-center';

export function NotificationWidget({ userId }: { userId: string }) {
  return (
    <NovuProvider
      subscriberId={userId}
      applicationIdentifier={process.env.NEXT_PUBLIC_NOVU_APP_ID!}
    >
      <PopoverNotificationCenter>
        {({ unseenCount }) => <NotificationBell unseenCount={unseenCount} />}
      </PopoverNotificationCenter>
    </NovuProvider>
  );
}

Digest workflow

Batch notifications into a daily digest

// In Novu dashboard: create workflow with Digest step
// Digest accumulates events for 24 hours then sends one email

// Trigger individual events (they get batched):
await novu.trigger('comment-digest', {
  to: { subscriberId: req.user.id },
  payload: {
    commenter: 'Bob',
    postTitle: 'My Article',
    comment: 'Great post!',
  },
});
// User receives one email per day with all comments summarized

Community Notes

Real experiences from developers who've used this tool