The open-source notification infrastructure for developers
The ultimate service for managing multi-channel notifications with a single API.
Explore the docs »
Report Bug
·
Request Feature
·
Join Our Discord
·
Roadmap
·
X
·
Notifications Directory
## ⭐️ Why Novu?
Novu provides a unified API that makes it simple to send notifications through multiple channels, including In-App, Push, Email, SMS, and Chat.
With Novu, you can create custom workflows and define conditions for each channel, ensuring that your notifications are delivered in the most effective way possible.
## ✨ Features
- 🌈 Single API for all messaging providers (In-App, Email, SMS, Push, Chat)
- 💅 Fully managed GitOps Flow, deployed from your CI
- 🔥 Define workflow and step validations with Zod or JSON Schema
- 💌 React Email/Maizzle/MJML integrations
- 🚀 Equipped with a CMS for advanced layouts and design management
- 🛡 Debug and analyze multi-channel messages in a single dashboard
- 📦 Embeddable notification center with real-time updates
- 👨💻 Community-driven
## 🚀 Getting Started
To get started, type the following command in your Terminal.
```bash
npx novu-labs@latest echo
```
## 📚 Table Of Contents
- [Getting Started](https://github.com/novuhq/novu#-getting-started)
- [GitOps & React Email Integration](https://github.com/novuhq/novu#-gitops)
- [Embeddable notification center](https://github.com/novuhq/novu#embeddable-notification-center)
- [Providers](https://github.com/novuhq/novu#providers)
- [Email](https://github.com/novuhq/novu#-email)
- [SMS](https://github.com/novuhq/novu#-sms)
- [Push](https://github.com/novuhq/novu#-push)
- [Chat](https://github.com/novuhq/novu#-chat)
- [In-App](https://github.com/novuhq/novu#-in-app)
- [Others](https://github.com/novuhq/novu#other-coming-soon)
- [Need Help?](https://github.com/novuhq/novu#-need-help)
- [Links](https://github.com/novuhq/novu#-links)
- [License](https://github.com/novuhq/novu#%EF%B8%8F-license)
## Notification Workflows as Code
For API documentation and reference, please visit [Echo API Reference](https://docs.novu.co/echo/quickstart?utm_campaign=github-readme).
```ts
client.workflow('comment-on-post', async ({step, subscriber}) => {
const inAppResponse = await step.inApp('in-app-step', async (inputs) => {
return {
body: renderReactComponent(inputs)
};
}, {
inputSchema: {
// ...JSON Schema or ZOD/Ajv/Class Validators definition
}
});
// Novu Worker Engine will manage the state and durability of each step in isolation
const { events } = await step.digest('1 day');
await step.email('email-step', async () => {
return {
subject: 'E-mail Subject',
body: renderReactEmail();
}
}, {
// Step-level inputs defined in code and controlled in the novu Cloud UI by a Non-Technical Team member
inputSchema: {
// ...JSON Schema
},
providers: {
sendgrid: async (inputs) => {
// Echo runs as part of your application, so you have access to your database or resources
return {
to: email,
ipPoolName: 'custom-pool'
};
}
},
skip: () => {
// Write custom skip logic
return inAppResponse.seen || subscriber.isOnline;
}
});
// Define your workflow trigger payload using json schema and custom validation;
}, {
payloadSchema: {
// ...JSON Schema
}
});
```
## Embeddable Notification Center
Using the Novu API and admin panel, you can easily add a real-time notification center to your web app without building it yourself. You can use our [React](https://docs.novu.co/notification-center/client/react/get-started?utm_campaign=github-readme) / [Vue](https://docs.novu.co/notification-center/client/vue?utm_campaign=github-readme) / [Angular](https://docs.novu.co/notification-center/client/angular?utm_campaign=github-readme) components or an [iframe embed](https://docs.novu.co/notification-center/client/iframe?utm_campaign=github-readme), as well as a [Web component](https://docs.novu.co/notification-center/client/web-component?utm_campaign=github-readme).
## Providers
Novu provides a single API to manage providers across multiple channels with a simple-to-use interface.
#### 💌 Email
- [x] [Sendgrid](https://github.com/novuhq/novu/tree/main/providers/sendgrid)
- [x] [Netcore](https://github.com/novuhq/novu/tree/main/providers/netcore)
- [x] [Mailgun](https://github.com/novuhq/novu/tree/main/providers/mailgun)
- [x] [SES](https://github.com/novuhq/novu/tree/main/providers/ses)
- [x] [Postmark](https://github.com/novuhq/novu/tree/main/providers/postmark)
- [x] [Custom SMTP](https://github.com/novuhq/novu/tree/main/providers/nodemailer)
- [x] [Mailjet](https://github.com/novuhq/novu/tree/main/providers/mailjet)
- [x] [Mandrill](https://github.com/novuhq/novu/tree/main/providers/mandrill)
- [x] [SendinBlue](https://github.com/novuhq/novu/tree/main/providers/sendinblue)
- [x] [MailerSend](https://github.com/novuhq/novu/tree/main/providers/mailersend)
- [x] [Infobip](https://github.com/novuhq/novu/tree/main/providers/infobip)
- [x] [Resend](https://github.com/novuhq/novu/tree/main/providers/resend)
- [x] [SparkPost](https://github.com/novuhq/novu/tree/main/providers/sparkpost)
- [x] [Outlook 365](https://github.com/novuhq/novu/tree/main/providers/outlook365)
#### 📞 SMS
- [x] [Twilio](https://github.com/novuhq/novu/tree/main/providers/twilio)
- [x] [Plivo](https://github.com/novuhq/novu/tree/main/providers/plivo)
- [x] [SNS](https://github.com/novuhq/novu/tree/main/providers/sns)
- [x] [Nexmo - Vonage](https://github.com/novuhq/novu/tree/main/providers/nexmo)
- [x] [Sms77](https://github.com/novuhq/novu/tree/main/providers/sms77)
- [x] [Telnyx](https://github.com/novuhq/novu/tree/main/providers/telnyx)
- [x] [Termii](https://github.com/novuhq/novu/tree/main/providers/termii)
- [x] [Gupshup](https://github.com/novuhq/novu/tree/main/providers/gupshup)
- [x] [SMS Central](https://github.com/novuhq/novu/tree/main/providers/sms-central)
- [x] [Maqsam](https://github.com/novuhq/novu/tree/main/providers/maqsam)
- [x] [46elks](https://github.com/novuhq/novu/tree/main/providers/forty-six-elks)
- [x] [Clickatell](https://github.com/novuhq/novu/tree/main/providers/clickatell)
- [x] [Burst SMS](https://github.com/novuhq/novu/tree/main/providers/burst-sms)
- [x] [Firetext](https://github.com/novuhq/novu/tree/main/providers/firetext)
- [x] [Infobip](https://github.com/novuhq/novu/tree/main/providers/infobip)
- [ ] Bandwidth
- [ ] RingCentral
#### 📱 Push
- [x] [FCM](https://github.com/novuhq/novu/tree/main/providers/fcm)
- [x] [Expo](https://github.com/novuhq/novu/tree/main/providers/expo)
- [x] [APNS](https://github.com/novuhq/novu/tree/main/providers/apns)
- [x] [OneSignal](https://github.com/novuhq/novu/tree/main/providers/one-signal)
- [x] [Pushpad](https://github.com/novuhq/novu/tree/main/providers/pushpad)
- [ ] Pushwoosh
#### 👇 Chat
- [x] [Slack](https://github.com/novuhq/novu/tree/main/providers/slack)
- [x] [Discord](https://github.com/novuhq/novu/tree/main/providers/discord)
- [x] [MS Teams](https://github.com/novuhq/novu/tree/main/providers/ms-teams)
- [x] [Mattermost](https://github.com/novuhq/novu/tree/main/providers/mattermost)
#### 📱 In-App
- [x] [Novu](https://docs.novu.co/notification-center/getting-started?utm_campaign=github-readme)
#### Other (Coming Soon...)
- [ ] PagerDuty
## 📋 Read Our Code Of Conduct
Before you begin coding and collaborating, please read our [Code of Conduct](https://github.com/novuhq/novu/blob/main/CODE_OF_CONDUCT.md) thoroughly to understand the standards (that you are required to adhere to) for community engagement. As part of our open-source community, we hold ourselves and other contributors to a high standard of communication. As a participant and contributor to this project, you agree to abide by our [Code of Conduct](https://github.com/novuhq/novu/blob/main/CODE_OF_CONDUCT.md).
## 💻 Need Help?
We are more than happy to help you. If you are getting any errors or facing problems while working on this project, join our [Discord server](https://discord.novu.co) and ask for help. We are open to discussing anything related to the project.
## 🔗 Links
- [Home page](https://novu.co?utm_campaign=github-readme)
- [Contribution Guidelines](https://github.com/novuhq/novu/blob/main/CONTRIBUTING.md)
- [Run Novu Locally](https://docs.novu.co/community/run-in-local-machine?utm_campaign=github-readme)
## 🛡️ License
Novu is licensed under the MIT License - see the [LICENSE](https://github.com/novuhq/novu/blob/main/LICENSE) file for details.
## 💪 Thanks To All Contributors
Thanks a lot for spending your time helping Novu grow. Keep rocking 🥂