Website profiles · Technology insights · Alternatives

novu.co

Novu is the open-source notification and agent communication infrastructure. Connect AI agents and products to customers across in-app, email, SMS, push, WhatsApp, Slack, Microsoft Teams, and Telegram with one API. Start with npx novu connect.

Paid content
Visit website
Profile views 9 Outbound visits 1 Normal
Novu Full homepage screenshot

At a glance

Category
Artificial Intelligence
Language
English
Paid-content signal
Paid contentObserved
Registered
2019
Hosting
VercelInferred
HTTPS certificate trusted
PassedObserved
Last updated

Website review

This review may include AI-generated content and is not individually verified. Domain, certificate and other facts come from the observed data on this page.

What is Novu?

Novu is open-source infrastructure for sending notifications and for two-way communication between a product (or an AI agent) and its users. Its pitch is one API that reaches many channels—in-app inbox, email, SMS, push, WhatsApp, Slack, Microsoft Teams, Telegram and others—so you don't wire up each provider separately.

The page splits the product into two jobs:

  • Novu Notify — one-way notifications. It emphasizes a prebuilt, embeddable in-app inbox with real-time updates, unread counts, notification preferences, tabs and filters, plus styling and localization. A React snippet shows an <Inbox /> component dropped into an existing app.
  • Novu Connect — two-way conversation across channels such as WhatsApp and Slack, positioned for AI agents that need to talk with users, not just broadcast to them.

The page's own example runs the two together: a flight-delay event triggers a notification, the user opens it, and the agent resolves the issue in a chat channel.

Who it's for: product and platform teams that would otherwise maintain separate integrations for email, push, SMS and chat apps, and teams building agents that must reach users where they already are. If you only ever send one type of message through one provider, a dedicated service may be simpler than adopting a platform.

Next step: check whether the channels you actually need are covered, then try the quickstart in a scratch project. The site points to npx novu connect as the starting command and hosts docs and a pricing page at Novu.

How does Novu help developers send notifications across multiple channels with one API?

Novu gives developers a single notification layer that fans out to many delivery channels, so you write the message logic once and let the platform handle routing to in-app, email, SMS, push, WhatsApp, Slack, Microsoft Teams, Telegram and other destinations. The page frames this as one platform with two modes: Novu Notify for one-way notifications and Novu Connect for two-way agent conversations.

One API, many channels

The core idea is that a single send call targets a subscriber and a workflow, not a specific provider. Novu then resolves which channels are active for that user and delivers accordingly. The page lists Inbox, Slack, Microsoft Teams, WhatsApp Business, Telegram, Email, iMessage, Push, Chat, SMS, Discord, Linear, Zoom and Google Chat among supported destinations.

Two communication patterns

Pattern What it does Typical use
Novu Notify One-way notifications to in-app, email, push and more Alerts, status changes, critical updates
Novu Connect Two-way AI communication across WhatsApp, Slack and similar Letting users reply and agents resolve issues

The page illustrates this as a flow: an event happens (for example, a flight delay), Notify alerts the user, the user opens the notification and starts a conversation, and Connect lets the agent resolve it in the user's preferred channel.

The in-app Inbox

For product teams, Novu ships prebuilt and composable Inbox components for React, Next.js and Remix. The page shows a minimal example:

import React from 'react';
import { Inbox } from '@novu/react';

export function NotificationInbox() {
  return <Inbox />;
}

The listed Inbox capabilities include real-time notifications and unread counts, built-in notification preferences, tabs and filters, flexible layouts, custom styling, localization and snoozing.

Who this suits

It fits teams that already send notifications through several providers and want to avoid maintaining separate integrations, retry logic and preference handling per channel. It is less compelling if you only ever need one channel and have no plans to add others, since the abstraction adds a layer you may not need.

A practical next step: list the channels your users actually rely on, then check whether your top two or three appear in the supported set. If they do, start with a single workflow and one channel, confirm delivery and preference behavior, then expand.

What are the main differences between Novu Notify and Novu Connect?

Novu splits its communication stack into two products that share the same infrastructure but solve different problems.

Novu Notify is outbound notification delivery. Your application fires an event (a flight is delayed, an account needs verification, someone requested access to a report), and Novu routes it to users through email, push, SMS, chat, or an in-app inbox. The inbox is the centerpiece: prebuilt React components for Next.js, Remix, and plain React, with real-time updates, unread counts, notification preferences, tabs, filters, archiving, localization, and custom styling so it matches your existing UI rather than looking bolted on.

Novu Connect is two-way conversation. Instead of pushing a message and stopping, it lets an AI agent talk with a user on a channel they already use — WhatsApp, Slack, SMS, and others — and carry the exchange through to resolution.

The clearest way to see the split is the flow Novu itself describes: an event triggers a notification (Notify), the user opens it and replies (Connect), and the agent resolves the issue through back-and-forth conversation (Connect). Notify gets attention; Connect handles what happens after the user responds.

Novu Notify Novu Connect
Direction One-way, app to user Two-way, agent and user
Typical channels In-app inbox, email, push, SMS WhatsApp, Slack, SMS, Telegram, Teams
Core job Deliver an update, drive the user into the product Hold a conversation and resolve the issue
Main build artifact <Inbox /> component embedded in your app Agent connected to messaging channels
Best when The outcome is "user knows and acts in-app" The outcome depends on dialogue

A practical way to choose: if your users will finish the task inside your own interface, Notify alone is enough. If they would rather reply "reschedule me" in WhatsApp than open your app, Connect is the piece that keeps them out of a support queue.

Concrete scenario: a travel app detects a delayed flight. Notify sends the push and inbox item with the new time. If the passenger replies asking to move to an earlier connection, Connect carries that exchange on WhatsApp or Slack and the agent rebooks. Without Connect, that reply lands in a human inbox.

A few decision criteria worth weighing:

  • Channel reality. Notify assumes the user returns to your product. Connect assumes they won't, and meets them where they already message.
  • Support load. Connect shifts routine back-and-forth off human agents, but only for issues an agent can actually resolve end to end.
  • Complexity. Notify is closer to a drop-in component; Connect adds conversational state, channel-specific behavior, and agent logic you'll need to design and test.
  • They compose. The two aren't mutually exclusive — the event-notify-engage-resolve loop is the intended pattern, and you can start with Notify and add Connect later.

Next step: read the two product pages side by side at Novu and map one real user journey in your product against the four stages above. Whichever stage has no owner is the product you're missing.

Can I use Novu with my existing tech stack like React or Next.js?

Yes. Novu is designed to fit into an existing JavaScript/TypeScript front end rather than replace it. Its in-app Inbox ships as a React component (@novu/react), and the page explicitly shows Next.js, Remix and React as supported environments. A typical integration looks like rendering <Inbox /> inside your own layout, so the notification center inherits your existing UX instead of appearing as a separate bolt-on.

What that means in practice

  • If you already run React or Next.js, you can add the Inbox component to a page, header or sidebar and keep your current routing, styling and auth.
  • The Inbox covers real-time notifications, unread counts, notification preferences, tabs, filters, custom styling, localization and snoozing — so you are not building that UI from scratch.
  • The messaging side is broader than the front end: Novu's one API targets channels such as in-app, email, SMS, push, WhatsApp, Slack, Microsoft Teams and Telegram. Your React/Next.js app is the place users see and manage notifications; the delivery logic sits behind the API.

Trade-offs to weigh

Situation Good fit? Why
React/Next.js app needing an in-app notification center Strong Prebuilt React Inbox component, minimal wiring
Multi-channel notifications (email, SMS, push, chat) from one backend Strong One API across many channels
Non-JavaScript front end (e.g. server-rendered templates in another language) Mixed The Inbox component is React-oriented; you would lean on the API and build your own UI
Need full control over every pixel and interaction Depends The Inbox is composable and styleable, but you are adopting its component model

Next step

If you are on Next.js or React, start by adding the Inbox component to one screen — say, a header bell icon — and point it at your Novu environment. That gives you a working notification center quickly, and you can expand to email, SMS or chat channels afterwards. If your front end is not React-based, evaluate the API-first path instead and plan to build the UI yourself.

How does Novu handle two-way communication with AI agents on channels like WhatsApp and Slack?

Novu splits the job between two products. Novu Notify pushes one-way notifications into an in-app inbox, email, SMS, or push. Novu Connect handles the two-way part: a user replies on a channel they already use — WhatsApp, Slack, Microsoft Teams, Telegram, and similar — and the AI agent answers in the same thread. The page frames this as "one platform, two ways to communicate," with the agent's intelligence left to you and the messaging layer handled by Novu.

The flow Novu describes

The page walks through an event lifecycle:

  1. Event — something happens in your application that needs attention (their example is a delayed flight).
  2. Notify — Novu Notify sends the user a notification through push, email, or the in-app inbox.
  3. Engage — the user opens it and starts a conversation with the agent on their preferred channel.
  4. Resolve — the agent finishes the exchange over a two-way conversation on WhatsApp, Slack, SMS, and others.

So the notification is the entry point, and the conversation is where the resolution happens.

What that means in practice

For a support or operations team, the appeal is that the agent doesn't need a custom chat UI per channel. You define the conversation logic once; Novu carries it across the channels users already have open. A concrete case: an on-call engineer gets a Slack alert, replies "ack," and the agent posts status updates back into that same Slack thread rather than forcing them into a separate dashboard.

The trade-off is that channel behavior differs. WhatsApp Business, Slack, and Telegram each have their own formatting, rate limits, and reply windows, so a conversation that feels natural in Slack may need trimming elsewhere. Novu's claim is that one API absorbs that difference — worth verifying against your own highest-priority channel before committing.

How to decide

  • If you mainly need users to receive updates, Novu Notify (in-app inbox, email, push) is the relevant half.
  • If users must reply and get an agent response in a messaging app, that's Novu Connect.
  • If your agent's reasoning lives in your own stack and you only want delivery plus reply routing, this layered model fits — the page explicitly says it is "opinionated about communication, unopinionated about intelligence."

A useful next step is to pick one channel you already use internally and trace a single event end to end — from trigger to a user reply to a resolved thread — to see whether the two-product split matches how your team actually works.

What are the pricing options for Novu?

Novu's page links to a pricing page, but the supplied information does not list actual plan names, prices, or usage limits. What the page does show is how the product is structured, which is the more useful way to think about cost: Novu splits into two communication paths, and what you pay for likely depends on which you use and at what volume.

  • Novu Notify — one-way notifications to users through in-app Inbox, email, push, SMS, and chat channels. This is the classic notification-infrastructure use case.
  • Novu Connect — two-way conversations between AI agents and customers on channels like WhatsApp, Slack, and Telegram.
  • The page also cites 1.5 billion messages sent in the last month and offers an npx novu connect starting command, suggesting usage volume and self-hosting are central to how pricing works.

Because Novu is open-source, the practical decision is usually not "which tier" but "self-host or pay a vendor." Self-hosting avoids per-message fees but puts delivery, channel integrations, and reliability on your team. A managed plan trades that operational work for a recurring bill that typically scales with message volume and channel mix.

For a concrete case: a small SaaS team sending a few thousand in-app and email notifications a month can often self-host comfortably. A team running two-way WhatsApp agent conversations at high volume should expect channel costs (WhatsApp Business messaging is billed by Meta separately) plus whatever Novu charges for orchestration — so model those two layers independently.

Next step: open Novu's pricing page and check three things against your own numbers — whether self-hosting is supported on the tier you'd choose, how messages are counted (per notification or per channel delivery), and whether Connect channel usage is billed differently from Notify. If those answers aren't clear on the page, the open-source repository and docs are the fastest way to confirm what you'd be running yourself.

Related questions

More questions →
What Is the Difference Between Novu Notify and Novu Connect?

Novu Notify and Novu Connect are the two communication modes of the same platform. Novu Notify sends one-way notifications to users or agents through in-app, email, and push channels when something in your application needs attention. Novu Connect handles two-way, conversational communication with AI agents across channels like WhatsApp, Slack, SMS, and more. Use Notify when you need to alert someone; use Connect when the recipient needs to reply and resolve something through a conversation.

The core distinction: one-way alert vs. two-way conversation

The Novu homepage frames this as "One platform. Two ways to communicate." Both modes sit on the same open-source notification and agent communication infrastructure, but they solve different problems.

Dimension Novu Notify Novu Connect
Direction One-way (outbound) Two-way (conversational)
Primary purpose Alert users or agents that something happened Let agents talk with users and resolve issues
Typical channels In-app Inbox, email, push WhatsApp, Slack, SMS, and more
Trigger An event in your application A user opening a notification and starting a conversation
Outcome The user sees and manages the update The agent resolves the issue through dialogue

How Novu Notify works

Novu Notify is the notification side. According to the site, it sends "in-app, email, and push notifications for critical updates." The flow described on the homepage is:

  1. Event — Something happens in your application that requires user attention.
  2. Notify — The app notifies users or agents through push, email, or in-app notifications.
  3. Engage — The user opens the notification and starts a conversation with the agent in their preferred channel.
  4. Resolve — The agent resolves the issue through a two-way conversation.

Steps 1–2 are Notify. Steps 3–4 are Connect. That sequence is the clearest way to see how the two modes relate: Notify gets attention, Connect handles what happens next.

The Inbox component

The in-app side of Notify is the Inbox, which the site describes as giving users "one place inside your product to see and manage the updates that matter to them." Documented features include:

  • Prebuilt and composable Inbox components
  • Real-time notifications and unread counts
  • Built-in notification preferences
  • Tabs, filters, and flexible layouts
  • Custom styling, localization, and snoozing

The homepage shows a React integration using the @novu/react package, with a component that renders an <Inbox />. It also lists Next.js and Remix as supported frameworks. The stated goal is that the Inbox "completely mirrors your existing UX, not an afterthought or a bolt-on."

How Novu Connect works

Novu Connect is the conversational side: "two-way AI communication across WhatsApp, Slack, and more." It is described as agent communication infrastructure — the platform is "opinionated about communication" but "unopinionated about intelligence," meaning it handles the channel and conversation layer while leaving the AI logic to you.

Connect is what you reach for when a notification alone is not enough. If a user needs to ask a follow-up question, confirm a detail, or work through a problem with an agent, that interaction belongs in Connect rather than in a one-way notification.

Which one should you use?

The choice follows from what you need the recipient to do:

  • Use Novu Notify when you need to inform. Examples: a flight delay alert, an account verification reminder, a request for report access. The user reads it and acts in your product.
  • Use Novu Connect when you need to converse. Examples: a user replies to a delay alert to rebook, or asks an agent a question over WhatsApp or Slack and expects an answer.
  • Use both when a notification should lead into a conversation. This is the Event → Notify → Engage → Resolve flow the homepage illustrates: Notify delivers the alert, Connect carries the back-and-forth that resolves it.

Getting started

The site's stated entry point is npx novu connect, and it points to a docs section for deeper setup. The homepage claims "1.5b messages just sent out in the last month" and positions the platform as open-source infrastructure. For current plan details, see the pricing page at novu.co/pricing — the available material does not specify which features are free or gated, so check there before committing to an integration.

What Are Open-Source UI Element Libraries and How Do They Differ From UI Frameworks?

An open-source UI element library is a collection of individual, ready-made interface pieces—buttons, cards, inputs, toggles, loaders—that you copy into your own project and adapt. A UI framework, by contrast, is a structured system of components, conventions, and often a theming layer that governs how your whole interface is built. The practical difference: an element library gives you a snippet; a framework gives you a way of working. If you need a polished button in ten minutes, reach for the element library. If you're building a 40-screen product with a team, you probably want the framework.

What "open-source UI element library" actually means

The term gets used loosely, so it helps to separate the parts:

  • Open-source: the code is publicly available, and the license tells you what you may do with it—copy, modify, redistribute, or use commercially.
  • UI element: a single, self-contained piece of interface, usually small enough to read in one sitting. A button with hover states, a pricing card, a search field.
  • Library: a browsable, searchable collection of those elements, typically contributed by many different people.

On a site like Uiverse, elements are shared by a community and written in plain CSS or Tailwind. You find one you like, copy the markup and styles, paste them into your project, and adjust colors, spacing, and text to fit. There's no package to install and no build step required—which is exactly the appeal, and also the source of most of the confusion.

Element library vs. UI framework: the core differences

Dimension Open-source UI element library UI framework / design system
Unit of reuse A single snippet you copy A component you import or call
Installation None; paste into your code Package install, config, sometimes a provider
Consistency Depends on you; each element may look different Enforced by shared tokens and APIs
Theming Manual edits per element Central theme/config file
Updates You own the copy; no upstream updates Version bumps bring fixes and changes
Accessibility Varies per contributor; must be checked Usually tested and documented
Best for Prototypes, landing pages, small sites, one-off needs Multi-page apps, teams, long-lived products
Learning curve Low—read the CSS Higher—learn the API and conventions

The table isn't a verdict. It's a map of trade-offs. Element libraries win on speed and freedom; frameworks win on consistency and maintenance.

Licensing and attribution: what to check before you paste

This is where people get into trouble, and it's worth slowing down for.

  1. Find the license. Every element or collection should state one. Common open-source licenses include MIT, Apache-2.0, and BSD. Some projects use copyleft licenses like GPL, which can impose obligations if you redistribute your code.
  2. Understand what the license permits. MIT and Apache-2.0 are permissive: you can typically use the code in commercial and closed-source projects. Copyleft licenses may require you to release derivative source under the same terms.
  3. Check attribution requirements. Permissive licenses usually require you to keep the copyright notice and license text somewhere in your project. That's a real obligation, not a formality.
  4. Look for per-element terms. On community sites, the site's overall terms and the individual contributor's stated wishes may differ. If a contributor asks for credit, honor it.
  5. When in doubt, ask or avoid. If a snippet has no license at all, you don't have clear permission to reuse it. Treat "no license" as "not open source," even if the code is publicly visible.

This article is general information, not legal advice. For commercial products with real exposure, have someone qualified review the licenses you're relying on.

How to use a community element in your project: a practical workflow

Here's a repeatable process that avoids most of the usual mess.

1. Start from a real need, not a browsing session

Decide what you need first—"a compact primary button with a loading state"—then search. Browsing aimlessly produces a pile of pretty snippets that don't fit together.

2. Copy the smallest version that works

Take the markup and the styles. Strip anything you don't need: demo wrappers, extra animations, decorative layers. Less code means fewer surprises.

3. Convert it to your conventions

If your project uses design tokens or CSS variables, replace hard-coded values:

/* Before: hard-coded */
.button { background: #4f46e5; border-radius: 8px; }

/* After: token-based */
.button { background: var(--color-primary); border-radius: var(--radius-md); }

This one step is what keeps a copied element from looking like a foreign object in your UI.

4. Check accessibility before you ship

Community elements vary widely here. Verify at minimum:

  • Keyboard focus is visible and the element is reachable by Tab.
  • Color contrast meets WCAG AA (4.5:1 for normal text).
  • Interactive elements use semantic HTML (<button>, not a clickable <div>).
  • Form inputs have associated labels.
  • Motion respects prefers-reduced-motion.

5. Test in context

Paste it into a real page with real content. Long labels, small screens, and dark mode break more copied elements than anything else.

6. Note where it came from

Keep a short comment or an internal credits file: source, license, date. Future you—and your legal reviewer—will be grateful.

Where element libraries genuinely shine

  • Prototypes and demos: you need something clickable today, not a design system.
  • Landing pages and marketing sites: a handful of distinctive elements, each custom.
  • Filling gaps: your framework lacks one specific component, and you don't want to build it from scratch.
  • Learning: reading well-made CSS is one of the fastest ways to improve.
  • Small projects: a personal site doesn't need a theming architecture.

Where they fall short

  • Consistency at scale: ten elements from ten contributors rarely look like one product.
  • Maintenance: you own every copy. When your design changes, you edit each one.
  • Accessibility debt: you inherit whatever the contributor did or didn't do.
  • No upstream fixes: a bug fixed in the original won't reach your copy.
  • Integration friction: different naming conventions, different units, different assumptions about resets.

When to choose which

Choose an element library when the scope is small, the timeline is short, or you need a few distinctive pieces rather than a whole system.

Choose a framework or design system when multiple people build multiple screens over months, when consistency is a product requirement, or when accessibility and theming need to be guaranteed rather than checked.

A hybrid works well for many teams: adopt a framework for the structural components—forms, navigation, layout—and borrow individual elements for the places where you want personality. Just route every borrowed element through the same token and accessibility checks, so it lands as part of your system rather than beside it.

The short version: open-source UI element libraries are a fast, flexible way to get good-looking interface pieces into a project. They are not a substitute for a design system, and the license and accessibility details are the part worth reading carefully.

What Is OpenAPI-Generated API Documentation and How Does It Work?

OpenAPI-generated API documentation is reference documentation that is produced automatically from an OpenAPI description file rather than written by hand. You write (or generate) a machine-readable specification of your API — endpoints, parameters, request bodies, responses, schemas, and auth — and a documentation tool reads that file and renders a browsable, often interactive reference site. The spec becomes the single source of truth; the docs become a build artifact.

This differs from manually written docs in one fundamental way: with hand-written docs, the prose is the source of truth and the API is described separately. With spec-driven docs, the API description is the source, and every page, table, and code sample is derived from it.

How the workflow actually runs

A typical spec-driven documentation pipeline has five stages:

  1. Author or generate the spec. You either write an OpenAPI document by hand (YAML or JSON), or generate it from code annotations, framework metadata, or a design-first editor. Design-first means the spec is written before implementation; code-first means it is extracted from existing code.
  2. Validate and lint. The spec is checked against the OpenAPI schema and against style rules — consistent naming, required descriptions, no undocumented 4xx responses, no orphaned schemas.
  3. Bundle and transform. Multi-file specs are combined, $ref pointers are resolved, and the document is optionally split into per-tag or per-version outputs.
  4. Render. A documentation tool converts the spec into HTML: an endpoint list, a sidebar of operations, parameter tables, response schemas, and a "try it" console.
  5. Publish and version. The rendered site is deployed, and each API version gets its own snapshot so consumers can read docs matching the version they call.

Steps 2 through 5 are usually automated in CI. If the spec fails validation, the docs build fails — which is the point.

Spec-driven vs. hand-written documentation

Dimension OpenAPI-generated Hand-written
Source of truth The spec file The prose
Consistency with the API High, if the spec is accurate Drifts as the API changes
Effort per endpoint Low after setup Repeated for every endpoint
Narrative and tutorials Weak; needs separate pages Strong
Code samples Generated per language from schemas Written and maintained manually
Customization Bounded by the tool's templates Unlimited
Failure mode Accurate spec, poor docs, or stale spec Beautiful docs that describe an API that no longer exists

The practical conclusion most teams reach: generate the reference, write the guides. Reference material is repetitive and mechanical, which is exactly what generation is good at. Conceptual explanations, migration notes, and tutorials carry judgment that a spec cannot express.

What you get out of the box

Generated reference pages commonly include:

  • An operation list grouped by tag or path, with HTTP method and path.
  • Parameter tables showing name, location (path, query, header, cookie), type, required flag, and description.
  • Request and response schemas rendered as expandable trees, including nested objects and arrays.
  • Authentication details pulled from the securitySchemes section.
  • Interactive request consoles that let a reader send a real call from the browser.
  • Generated code samples in several languages, derived from the same schemas.
  • Multiple output formats, such as a static site, a single HTML file, or a mock server.

Because all of these come from one document, changing a field name in the spec updates the parameter table, the schema tree, and every code sample at once.

Where spec-driven documentation breaks down

Generation is not free. The trade-offs are real:

Spec quality becomes documentation quality. A field with no description produces a table row with an empty cell. A vague summary produces a vague heading. Tools can enforce presence of descriptions via linting, but they cannot enforce that the description is useful.

Customization has limits. If you need a page that does not map to an OpenAPI concept — a conceptual overview, a pricing explanation, a comparison of two endpoints — you write it outside the generator and link to it.

Not everything is expressible. Webhooks, streaming responses, long-polling behavior, and complex multi-step flows are awkward or impossible to describe fully in OpenAPI. Those need prose.

The spec can go stale. If the spec is maintained separately from the implementation, it drifts just like hand-written docs. The mitigation is to generate the spec from code, or to test the implementation against the spec in CI.

Interactive consoles need care. A "try it" button that hits a production API with real credentials is a security and rate-limit problem. Point it at a sandbox, or disable it.

Deciding whether to adopt it

Adopt spec-driven reference documentation if most of these are true:

  • Your API has more than a handful of endpoints, or changes frequently.
  • You ship client SDKs or code samples in more than one language.
  • Multiple teams consume the API and need a consistent, always-current reference.
  • You already have, or are willing to maintain, an OpenAPI description.

Stay with hand-written docs, or a hybrid, if:

  • Your API is small and stable, and the reference fits on one page.
  • Your documentation is mostly conceptual and contains little endpoint-level detail.
  • You cannot commit to keeping the spec in sync with the implementation.

A reasonable middle path: generate the reference from the spec, and hand-write the getting-started guide, authentication walkthrough, and error-handling page. Link the two directions so readers can move from concept to endpoint and back.

A minimal starting checklist

  1. Produce one valid OpenAPI document for a single API version.
  2. Add a linter with rules for descriptions, operation IDs, and error responses.
  3. Wire the docs build into CI so a failing spec fails the build.
  4. Render the reference and review it as a reader, not as the author.
  5. Write the two or three conceptual pages the generator cannot produce.
  6. Version the published docs alongside the API version.

The core idea is simple: describe the API once, in a format both machines and humans can read, and let the reference documentation fall out of that description. Everything else — tooling, hosting, interactivity — is a detail on top of that decision.

Is Novu Open-Source and What Are Its Pricing Options?

Novu is an open-source notification and agent communication infrastructure, and it publishes a pricing page at novu.co/pricing for its paid plans. That combination means you can evaluate the open-source project and a commercial offering side by side before adopting. The right choice depends on whether you need to self-manage the infrastructure or want a hosted service, and on which channels and features your product requires.

What Novu actually is

Novu describes itself as "the open-source notification and agent communication infrastructure." Its stated purpose is to connect AI agents and products to customers across many channels through one API. The site reports 1.5 billion messages sent in the last month, which is a scale signal rather than a guarantee for your workload.

The platform splits into two communication modes:

  • Novu Notify — one-way notifications to users through in-app, email, and push.
  • Novu Connect — two-way AI communication across WhatsApp, Slack, and other channels.

The channels named on the site include Inbox, Slack, Microsoft Teams, WhatsApp Business, Telegram, Email, iMessage, Push, Chat, SMS, Discord, Linear, Zoom, and Google Chat.

Open-source: what that means in practice

"Open-source" here refers to the notification and agent communication infrastructure itself. The practical implication is that you can inspect and run the project rather than being locked into a closed hosted product. The site's own framing — "Opinionated about communication. Unopinionated about intelligence" — signals that Novu handles the delivery and conversation layer while leaving your AI or logic choices to you.

What the available material does not specify: the exact license, which features are gated behind paid plans, and whether self-hosting is fully supported for every channel. Those are the details to confirm on the pricing page and in the docs before committing.

Pricing: what is confirmed and what is not

The site links to a pricing page, which confirms that paid plans exist. It does not publish prices, tiers, or a free-forever plan in the material available here. Do not assume the open-source project is free to operate at scale, and do not assume a free tier exists — check novu.co/pricing directly.

Question What the site confirms What to verify yourself
Is there a paid plan? Yes, a pricing page exists Actual price, tiers, and limits
Is it open-source? Yes, described as open-source infrastructure License terms and self-host scope
Is there a free tier? Not stated Check pricing page
Which channels cost extra? Not stated Check pricing page and docs

Getting started

The site gives a concrete entry point: npx novu connect. That command is the starting action for connecting your agents and products. From there, the documented flow is:

  1. Run the connect command to initialize.
  2. Add the Inbox component to your product — the site shows a React example using @novu/react with an <Inbox /> component, and names Next.js, Remix, and React as supported frameworks.
  3. Configure the channels you need (in-app, email, SMS, push, WhatsApp, Slack, Microsoft Teams, Telegram, and others).
  4. Send a notification and verify it arrives in the target channel.

The expected result after step 2 is a working in-app inbox with real-time notifications, unread counts, built-in preferences, tabs, filters, custom styling, localization, and snoozing — all features the site lists for the Inbox.

Choosing between open-source and paid

Use this as a decision frame rather than a recommendation:

  • Lean open-source if you want to control the infrastructure, have engineering capacity to run and maintain it, and your channel needs match what the project supports.
  • Lean paid if you want a hosted service, need channels or features that are gated, or want to avoid operating the delivery layer yourself.
  • Start with the connect command either way — it is the documented first step and lets you test the integration before deciding on a plan.

The site's own positioning — "Add an [inbox] to your product by end of day" — suggests the integration is meant to be fast, which makes a trial run low-risk regardless of which path you eventually pick.

Common sticking points

  • Assuming open-source means free at scale. The pricing page exists for a reason; confirm what triggers paid usage.
  • Skipping the channel audit. Novu lists many channels, but your product may only need two or three. Match channels to actual user behavior before configuring everything.
  • Treating Notify and Connect as the same thing. Notify is one-way; Connect is two-way. If you need agents to hold conversations, you need Connect.
  • Not checking framework support. The site names Next.js, Remix, and React for the Inbox component. Verify your stack before starting.

The fastest way to resolve the open-source-versus-paid question is to run npx novu connect, test the channels you care about, and then read novu.co/pricing with your actual usage in mind.

What Is Novu?

Novu is an open-source notification and agent communication infrastructure. It lets you send product notifications and hold two-way conversations with users through one API, across channels including in-app inbox, email, SMS, push, WhatsApp, Slack, Microsoft Teams, Telegram, iMessage, Discord, and others. It fits teams that want a single integration layer instead of wiring each channel separately, and it is available as open-source software you can start with via npx novu connect.

Two products under one platform

Novu splits its offering into two communication modes, which the site describes as "One platform. Two ways to communicate."

Novu Notify Novu Connect
Purpose Send notifications to users Two-way AI communication
Direction One-way (app → user) Two-way (user ↔ agent)
Typical channels In-app Inbox, email, push WhatsApp, Slack, SMS, and more
Use case Critical updates, alerts, status changes Resolving issues through conversation

The site's own example walks through both: an event fires (a flight delay), Novu Notify alerts the passenger, the user opens the notification and starts a conversation, and Novu Connect lets the agent resolve the issue in the user's preferred channel.

Novu Notify and the Inbox

Novu Notify is the notification side. Its centerpiece is an in-app Inbox that gives users one place inside your product to see and manage updates. According to the site, the Inbox includes:

  • Prebuilt and composable Inbox components
  • Real-time notifications and unread counts
  • Built-in notification preferences
  • Tabs, filters, and flexible layouts
  • Custom styling, localization, and snoozing

It is designed to mirror your existing UX rather than look like a bolt-on. The React integration is a single component:

import React from 'react';
import { Inbox } from '@novu/react';

export function NotificationInbox() {
  return <Inbox />;
}

The site lists Next.js, Remix, and React as supported frameworks for this component.

Novu Connect for agent conversations

Novu Connect handles two-way AI communication across channels like WhatsApp, Slack, and more. The distinction the site draws is that Novu is "opinionated about communication" but "unopinionated about intelligence" — meaning it manages the delivery and conversation layer while leaving the AI or logic behind the agent to you.

Who it is for

Novu makes sense if you are building a product or AI agent that needs to reach users on multiple channels and you would rather integrate once than maintain separate providers for email, SMS, push, and chat platforms. The open-source nature and the npx novu connect entry point lower the cost of trying it. If you only ever need a single channel, a dedicated provider may be simpler; Novu's value shows up when channel count and two-way conversation both matter.

For current plans and limits, see the pricing page at novu.co/pricing.

Website Overview

An established domain and managed infrastructure suggest continuity of operations and may support dependable delivery, although neither guarantees service quality.

Domain and Registration

Registered in 2019, this domain has about 7 years of history. That suggests continuity, although ownership and purpose may have changed. Transfer-protection status is present, helping reduce the risk of unauthorized domain transfers. The registrar is Cloudflare, Inc., a widely used domain service provider. The domain uses the common .co extension, which is not an independent safety signal.

DNS and Email

Nameservers are provided by Cloudflare, indicating managed DNS hosting. MX records point to the Google Workspace email service. CAA records restrict which certificate authorities are authorized to issue certificates. No CNAME was found; the observed records resolve directly to addresses. SPF and DMARC are configured. DKIM status is unknown.

TLS and Certificates

The public key uses EC with 256 bits. The server supplied a complete certificate chain. No organization name is present in the certificate; the available fields are consistent with domain validation. The certificate was issued within the Google Trust Services cloud or CDN ecosystem. The certificate's total validity is about 90 days, consistent with a short renewal cycle.

HTTP and Browser Security

The response lacks these common security headers: CSP. No X-Powered-By header was found, reducing one common source of backend fingerprinting information. The cf-ray response header indicates a CDN or caching proxy in the delivery path. No obvious internal addresses or debug information were found in the headers. The Server header identifies cloudflare without an exact version.

Technology Stack Analysis

The public page identifies Next.js, Google Tag Manager, Cloudflare, Vercel, Netlify without precise versions, leaving fewer clues for version-specific scanning.

Search and Social Sharing

The meta description has 243 characters and may be shortened in search results. Twitter Card metadata is configured. JSON-LD includes Organization data, helping describe the organization as an entity. The title has 55 characters, within a common display range. The observed directives allow indexing and link following.

Hosting and Email

DNSCloudflare
HostingVercel
EmailGoogle Workspace
Approximate IP geolocation (inferred; a CDN or proxy may differ from the origin server) Location unknown Inferred 172.66.40.115

Registration details

RDAP / WHOIS

RegistrarCloudflare, Inc.
Registered2019-04-26
Expires2031-04-26
Domain statusclientTransferProhibited https://icann.org/epp#clientTransferProhibited
Nameserversbailey.ns.cloudflare.com、decker.ns.cloudflare.com
DNSSECunsigned

DNS records

DNS

TypeNameValueTTLPriority
Anovu.co172.66.40.115300—
Anovu.co172.66.43.141300—
AAAAnovu.co2606:4700:3108::ac42:2873300—
AAAAnovu.co2606:4700:3108::ac42:2b8d300—
MXnovu.coaspmx.l.google.com3001
MXnovu.coalt1.aspmx.l.google.com3005
MXnovu.coalt2.aspmx.l.google.com3005
MXnovu.coalt3.aspmx.l.google.com30010
MXnovu.coalt4.aspmx.l.google.com30010
NSnovu.cobailey.ns.cloudflare.com86400—
NSnovu.codecker.ns.cloudflare.com86400—
TXTnovu.coMS=ms97918192300—
TXTnovu.cobadd3c8b266fce321828b6df020b0d47300—
TXTnovu.cofacebook-domain-verification=sirs7t23zvh2r0wm9qa3k5d7sk5w6t300—
TXTnovu.cogoogle-site-verification=5vMX4ECf8-c7Odz7qydNfXhrHL-zL2Wg6nLxUw5Wb6E300—
TXTnovu.cogoogle-site-verification=WAzQrGIRWE31VR5bZQlSVBxU11iW2_hjJ6D71mxgFyg300—
TXTnovu.cogoogle-site-verification=uds09d_XBzVkSdUCdbBDAih9Wa-2Pb26uPTsbw0PjSM300—
TXTnovu.colemlist-verif=-1e5c812f300—
TXTnovu.comixpanel-domain-verify=c5d5c087-5449-4093-84ec-dcfb0961bc58300—
TXTnovu.costripe-verification=70120d2f394dc99d733fe9f64752709f409a79d8779a1524b261599ffdcd3022300—
TXTnovu.cov=spf1 include:_spf.google.com include:44416662.spf05.hubspotemail.net ~all300—
CAAnovu.co0 issue "amazon.com"300—
CAAnovu.co0 issue "comodoca.com"300—
CAAnovu.co0 issue "digicert.com; cansignhttpexchanges=yes"300—
CAAnovu.co0 issue "letsencrypt.org"300—
CAAnovu.co0 issue "pki.goog; cansignhttpexchanges=yes"300—
CAAnovu.co0 issue "ssl.com"300—
CAAnovu.co0 issuewild "amazon.com"300—
CAAnovu.co0 issuewild "comodoca.com"300—
CAAnovu.co0 issuewild "digicert.com; cansignhttpexchanges=yes"300—
CAAnovu.co0 issuewild "letsencrypt.org"300—
CAAnovu.co0 issuewild "pki.goog; cansignhttpexchanges=yes"300—
CAAnovu.co0 issuewild "ssl.com"300—
DMARC_dmarc.novu.cov=DMARC1; p=quarantine; pct=100; rua=mailto:[email protected],mailto:[email protected]300—

TLS and certificates

TLS / SSL

AssessmentNormal configuration
Supported protocolsTLSv1.2、TLSv1.3
Negotiated protocolTLSv1.3
Certificate subjectnovu.co
IssuerGoogle Trust Services
Valid until2027-01-02T05:51 · Remaining when checked: 89 days
Verification detailsCertificate trust: Passed · Hostname match: Passed

HTTP response headers

HTTP

HeaderValue
content-typetext/html; charset=utf-8
cache-controlpublic,max-age=0,must-revalidate
servercloudflare
strict-transport-securitymax-age=63072000; includeSubDomains; preload
x-frame-optionsSAMEORIGIN
x-content-type-optionsnosniff
referrer-policystrict-origin-when-cross-origin
permissions-policycamera=(), microphone=(), geolocation=()

Identified technologies

Next.jsGoogle Tag ManagerCloudflareVercelNetlify

Pages, Search and Sharing

Meta descriptionNovu is the open-source notification and agent communication infrastructure. Connect AI agents and products to customers across in-app, email, SMS, push, WhatsApp, Slack, Microsoft Teams, and Telegram with one API. Start with npx novu connect.
Canonical URLhttps://novu.co/
LanguageEnglish (default)
Twitter Cardsummary_large_image
All bots 1 allowed · 0 disallowed
  • Allow/

User reviews (0)

  • No reviews yet.