Novu is the open-source notification infrastructure that manages email, SMS, push, in-app, and chat notifications through a single API.
What Is Novu?
Novu gives you a unified API for all notification channels. Instead of integrating SendGrid for email, Twilio for SMS, and Firebase for push separately — Novu handles them all.
Quick Start
npm install @novu/node
import { Novu } from '@novu/node'
const novu = new Novu(process.env.NOVU_API_KEY!)
// Send notification
await novu.trigger('welcome-email', {
to: {
subscriberId: 'user-123',
email: 'user@example.com',
firstName: 'Alice',
},
payload: {
welcomeMessage: 'Thanks for signing up!',
ctaLink: 'https://app.example.com/onboarding',
},
})
REST API
export NOVU_KEY="your-api-key"
# Trigger notification
curl -s -X POST 'https://api.novu.co/v1/events/trigger' \
-H "Authorization: ApiKey $NOVU_KEY" \
-H 'Content-Type: application/json' \
-d '{
"name": "order-shipped",
"to": {"subscriberId": "user-123"},
"payload": {"trackingUrl": "https://tracking.example.com/abc"}
}'
# Create subscriber
curl -s -X POST 'https://api.novu.co/v1/subscribers' \
-H "Authorization: ApiKey $NOVU_KEY" \
-H 'Content-Type: application/json' \
-d '{"subscriberId": "user-456", "email": "bob@example.com", "firstName": "Bob"}'
# Get notifications feed
curl -s 'https://api.novu.co/v1/notifications?page=0&limit=10' \
-H "Authorization: ApiKey $NOVU_KEY" | jq '.data | length'
Multi-Channel Workflow
// Novu workflow (defined in dashboard or code):
// 1. Send email immediately
// 2. If not read in 1 hour -> send push notification
// 3. If not read in 24 hours -> send SMS
// All from ONE trigger call
await novu.trigger('payment-reminder', {
to: { subscriberId: 'user-789' },
payload: {
amount: '$49.99',
dueDate: '2026-04-15',
invoiceUrl: 'https://app.example.com/invoice/123'
}
})
In-App Notification Center
// React component
import { NovuProvider, PopoverNotificationCenter, NotificationBell } from '@novu/notification-center'
function App() {
return (
<NovuProvider subscriberId="user-123" applicationIdentifier="APP_ID">
<PopoverNotificationCenter>
{({ unseenCount }) => <NotificationBell unseenCount={unseenCount} />}
</PopoverNotificationCenter>
</NovuProvider>
)
}
Supported Channels
| Channel | Providers |
|---|---|
| SendGrid, Mailgun, SES, Postmark, Resend | |
| SMS | Twilio, Vonage, Plivo, SNS |
| Push | FCM, APNs, Expo |
| Chat | Slack, Discord, MS Teams |
| In-App | Novu Notification Center |
Free Tier
| Feature | Free | Business |
|---|---|---|
| Events | 30K/mo | 250K/mo |
| Channels | All | All |
| Team members | Unlimited | Unlimited |
| Self-hosted | Yes | Yes |
Need to notify users about scraped data changes? Scrapfly + Novu = automated data monitoring. Email spinov001@gmail.com for custom solutions.
Top comments (0)