The JavaScript-native Notification Framework for Developers
Fully extensible open source notifications infrastructure framework for Next.js and more that empowers developers to provide an easy-to-use notifications platform to product teams.
Used by innovative companies worldwide
Built by developers,
used by the rest of the team
Unapologetically built for development teams to provide notifications infrastructure to their product and business. Eliminate the expense and burden of building and maintaining home-grown notifications infrastructure, and still keep all of the flexibility you need and want.
1import { workflow, CronExpression } from '@novu/framework';
2import { z } from 'zod';
3import { render } from '@react-email/components';
4
5const weeklyComments = workflow(alias) workflow( id: string, execute: Execute<...>, options?: WorkflowOptions<...>,): Workflow<...>Define a notification workflow.('weekly-comments', async (event(parameter) event: { payload: { name: string; comment: string; }; step: Step; subscriber: { firstName: string; ... };}The event that triggered the workflow.) => {
6 const digest = await event.step.digest('digest-comments', (controls) => ({
7 cron: controls.schedule
8 }), { controlSchema: z.object({ schedule: z.nativeEnum(CronExpression) }) });
9
10 await event.step.email(method) email: ChannelStep<{ body: string }, { seen: boolean; ... }>Send an email.('digest-email', async (controls) => ({
11 subject: controls.subject,
12 body: render(<WeeklyDigestEmail {...controls(parameter) controls: { subject: string; openAiModel: "gpt-3.5-turbo" | "gpt-4o"; aiPrompt: string;}The controls for the workflow step.} events={digest.events} />)
13 }), {
14 skip(property) skip: (controls: Controls) => booleanSkip the step. If true is returned, the step will be skipped.: () => !digest.events.length,
15 controlSchema: z.object({
16 subject: z.string().default('Hi {{subscriber.firstName}} - Acme Comments'),
17 openAiModel: z.enum(['gpt-3.5-turbo', 'gpt-4o']).default('gpt-4o'),
18 aiPrompt: z.string().default('Produce a concise comment digest'),
19 })
20 });
21}, { payloadSchema: z.object({ name: z.string(), comment: z.string() }) });
22
23await weeklyComments.trigger(property) trigger: (event: { payload: { name: string; comment: string; }; to: Recipients; actor?: Actor | undefined; tenant?: Tenant | undefined;}) => Promise<...>Trigger a notification workflow.({
24 payload: { name: 'John', comment: 'Are you free to give me a call?' },
25 to: 'jane@acme.com'
26});
![](/static/64cad6be58bc3a0713c61bcb7e5e11b9/ef134/ai-digest.png)
Send your first notification in minutes
Integrates easily, delivers powerful notifications
Powerful workflows
Code-first workflows that can be run inside your own IT boundary.
Inbox
Easily integrate and deploy notifications right into your application via components.
End user preferences
Enable end users to set contact preferences like language, timezone, and channels.
No-code editor
Product teams can manage workflow configurations without the risk of breaking notification flows.
Multi-channel, multi-framework
Access any channel provider, and use any content framework, all with one API.
API-first, and open-source backed
Native developer experience that’s backed by a huge community.
Complete control and flexibility
Development teams have complete flexibility and control over notifications. Product teams maintain seamless input and control over content, messaging, and brand so they can iterate quickly—all without developer input, and by using an intuitive and capable UI.
Read docsFully featured Notification Inbox in minutes
Include a real-time Notification Center using our embeddable components or connect your custom UI with our notification feed API.
Read DocsConfidently reach end users through notifications
Developers build capable, functional workflows using the frameworks and content components they love. Product and non-technical teams easily update content and messaging, and will never break prod.
As flexible as in-house built
All of the power of your custom-built solution, none of the hassle.
Type-Safe
Bring your own JSON schemas for full end-to-end validation across all your team members.
Observable and Scalable
Novu handles any volume, any channel, and any team for mission-critical notifications.
Consistent
Notification infrastructure belongs in your CI/CD release cycle.
Loved by developers and product teams
Explore tweets from developers and non-technical users and see why they're fans of our open-source notifications framework.
New @middayai engineering blog post just dropped. Learn how we are using @novuhq as our notification infrastructure. Link in thread 🧵⬇️
Pontus Abrahamsson@pontusabNovu is so dope!
Lev Lazinskiy@levlazHaha yeah I’m so happy my notification logic isn’t inside the database anymore. Love Novu!🚀
Fabian B.@madebyfabianTodos for today: #ship a @GleapSDK update that utilizes @novuhq for amazing notifications 🎉
Lukas Boehler@lukasboehlerNovu make notification management much easier. They're doing a great job with the service they offer.
Nikki Siapno@NikkiSiapnoThe best solution for notifications.
Csaba Kissi@csaba_kissiThat's awesome! Real-time notifications can really boost user engagement. Love that @novuhq supports multiple frameworks & customization options. Definitely giving the repo a star to show support! 🌟 #OpenSource #SoftwareDevelopment
Abhiuday@aeswibonThanks to a great tool called @novuhq, we can easily implement notifications into our upcoming v0.5.0 release.
Doinfine@doinfinehqSo excited about the rise of the notifications infrastructure space (+ open source 🔥)
Guillermo Rauch@rauchg
Get started now
Create and send your first code-based notification in minutes before your coffee gets cold.