Novu

Create powerful notification workflows and content using code

Create complex workflows, access local data, and reuse existing content templates with Novu Echo.

npx novu@latest dev
Read docs

Code-based notification infrastructure for modern teams

  • Bring your own code

    Define workflows as code, re-use components, and deploy confidently while developing in your IDE of choice.

  • Type Safe

    Bring your own JSON schemas for full end‑to‑end validation across all your team members.

  • Powerful debugging

    Rapidly identify and solve previously complicated content hydrating and notification routing issues.

  • GitOps Notifications

    Experience seamless GitOps Notifications revolutionizing workflow management.

The last platform you will ever need for your notification needs.

  • Runs in your IT boundary

    Runs in your IT boundary

    Deploy within your organization`s VPC, Kubernetes, serverless setups, or locally for secure data access.

  • Limitless integrations

    Limitless integrations

    Use ReactEmail, MJML, LaunchDarkly (and more!), and fetch content and values from anywhere.

  • Easy migration

    Easy migration

    Seamlessly integrate with existing services and legacy systems to facilitate adoption.

  • No-code editor

    No-code editor

    Product teams can manage workflow configurations without the risk of breaking notification flows.

  • Powerful debugging

    Powerful debugging

    Rapidly identify and solve previously complicated content hydrating and notification routing issues.

  • Speaks your language

    Speaks your language

    Native developer experience and autocomplete in your code and IDE of choice.

Developer-first with product in mind

1import { Echo } from '@novu/echo';
2
3const echo = new Echo();
4
5const commentWorkflow = echo.workflow('comment-on-post', async (event) => {
6  const inAppResponse = await event.step.inApp('notify-user', async () => ({
7    body: renderReactComponent(event.payload.postId)
8  }));
9
10  const { events } = await event.step.digest('1 week');
11
12  await event.step.email('weekly-comments', async (inputs) => {
13    return {
14      subject: `Weekly post comments (${events.length + 1})`,
15      body: renderReactEmail(inputs, events)
16    };
17  }, { skip: () => inAppResponse.seen });
18}, { payloadSchema: z.object({ postId: z.string() }) }
19);
20
21// Use the same familiar syntax to send a notification
22commentWorkflow.trigger({
23  to: { subscriberId: 'joe@acme.com' },
24  payload: { postId: '12345' }
25});

Integrates with anything

Built from scratch to integrate your existing tooling and content with the Novu Platform.

  • MJML
  • NestJS
  • Remix
  • Astro
  • Hono
  • Twilio Segment
  • React Email
  • LaunchDarkly
  • Express
  • Koa

and literally anything else...

Complete control and flexibility

Redesigned local experience to author configurable workflows tailored to optimize Developer Experience, with a matching interface for Non-Technical users.

Read docs

The cost and time of having to build our own prefercing, integrations, and channels, delayed notifications, there's a bunch of features. We've got a lot of other problems that are unqiue to our particular environment and that's where I need to focus our engineering effort, not dealing with notifications infrastructure.

Financial Services Company

Get started now

Create and send your first code-based notification in less than five minutes.

npx novu@latest dev
Book a demo