Skip to main content

Best In-App Notification APIs 2026

·APIScout Team
notificationsin-app notificationspush notificationsnovuonesignalknockcouriernotification infrastructure

Notifications Are a Product Feature, Not an Afterthought

Users expect real-time updates. A delivery arrives? Notify them. A payment fails? Notify them immediately. Someone comments on their post? Notify them before they close the app. A background job completes? Show them in the app.

In 2026, notification infrastructure has matured from "roll your own with Firebase" to purpose-built platforms that handle multi-channel orchestration, user preferences, delivery status, and in-app notification centers. The question is no longer whether to use a notification platform — it's which one fits your stack.

Four platforms lead the developer-facing notification market: OneSignal (the push notification giant, 12B+ messages/day), Novu (open-source MIT-licensed notification infrastructure), Knock (workflow-first notification platform with in-app UI components), and Courier (multi-channel notification orchestration).

TL;DR

OneSignal is the default for push notifications — unlimited free mobile push, the best mobile SDK, and 10M+ apps using it. Novu is the right choice for teams that want open-source notification infrastructure they can self-host and control completely. Knock is purpose-built for product teams that need in-app notification feeds, digest batching, and notification preferences built in. Courier is the choice for teams with complex multi-channel workflows and advanced template management.

Key Takeaways

  • OneSignal delivers 12B+ messages daily with a permanent free tier including unlimited push notifications and 10,000 emails/month.
  • Novu is MIT-licensed and self-hostable for free — run your own notification infrastructure on Docker with no licensing fees.
  • Knock's in-app notification feed is production-ready — pre-built React/Vue components for notification inbox, saving weeks of custom development.
  • Notification infrastructure is distinct from delivery — platforms like Knock and Novu orchestrate the when and who, while providers like Firebase, Sendgrid handle the actual delivery.
  • User preference management matters at scale — all four platforms provide mechanisms for users to opt in/out of notification types across channels.
  • Digest/batching reduces notification fatigue — grouping "5 new comments" instead of 5 separate pings is a feature, not a nice-to-have.
  • OneSignal's in-app messaging requires building your own notification center — it doesn't provide pre-built inbox UI components.

Pricing Comparison

PlatformFree TierPaid StartingModel
OneSignalUnlimited push + 10K emails/month$19/monthPer-channel volume
NovuSelf-hosted free, cloud $30/month$30/month cloudEvents/month
Knock10K notifications/month$100/monthNotifications
CourierLimited~$100+/monthNotifications

OneSignal

Best for: Mobile apps, web push, teams that need the broadest reach and simplest push setup

OneSignal is the most widely deployed push notification platform in the world — 10M+ apps use it. The platform handles web push, mobile push (iOS, Android), in-app messages, email, and SMS under one API. The free tier is genuinely useful: unlimited mobile push and web push, 10K emails/month.

Pricing

FeatureFreeGrowth ($19/month)Professional (custom)
Mobile pushUnlimitedUnlimitedUnlimited
Web pushUnlimitedUnlimitedUnlimited
Email10K/month20K + $1.50/1KCustom
In-app messagesLimitedFullFull
SMSAdd-onAdd-on
A/B testingLimitedYesYes
AnalyticsBasicAdvancedFull

Growth plan adds cost based on monthly active users for push, and volume for email/SMS — costs can scale unexpectedly for large apps.

API Integration

// OneSignal Node.js SDK
const OneSignal = require("onesignal-node");

const client = new OneSignal.Client(
  process.env.ONESIGNAL_APP_ID,
  process.env.ONESIGNAL_API_KEY
);

// Send push to specific users
const notification = {
  contents: { en: "Your order has shipped! Track it here." },
  headings: { en: "Order Shipped" },
  include_external_user_ids: ["user_123", "user_456"],
  url: "https://app.example.com/orders/12345",
  data: { orderId: "12345", type: "order_shipped" },
  // Deep link for mobile
  app_url: "myapp://orders/12345",
};

const response = await client.createNotification(notification);
console.log(`Notification ID: ${response.body.id}`);

Web Push Setup

// Browser-side OneSignal initialization
OneSignal.init({
  appId: "your-app-id",
  allowLocalhostAsSecureOrigin: true,
  notifyButton: { enable: true },
  promptOptions: {
    slidedown: {
      prompts: [{
        type: "push",
        autoPrompt: true,
        text: {
          actionMessage: "Get real-time updates on your orders",
          acceptButton: "Allow",
          cancelButton: "No thanks",
        },
      }],
    },
  },
});

// Identify logged-in user
OneSignal.login("user_123");
OneSignal.User.addTag("plan", "pro");

Strengths

  • The largest push notification network — most battle-tested SDKs
  • Unlimited free push notifications (mobile and web)
  • Real-time delivery analytics
  • A/B testing on notification content
  • Segment targeting by user attributes, behavior, location

When to Choose OneSignal

Mobile-first applications, e-commerce apps sending shipping notifications, content apps sending new article alerts, any team where push notification volume matters most and cost efficiency is key, or teams that want the simplest push setup with the most comprehensive SDK support.

Novu

Best for: Teams wanting open-source infrastructure, multi-channel orchestration, self-hosted control

Novu is the open-source notification infrastructure layer. It sits between your application code and your delivery providers (SendGrid for email, Firebase for push, Twilio for SMS) — providing a unified API, notification templates, user preferences, and delivery routing. The MIT license means you can self-host at zero cost beyond infrastructure.

Pricing

PlanCostNotificationsFeatures
Self-hosted$0 (infra only)UnlimitedFull feature set
Cloud Free$030K/monthCore features
Cloud Pro$30/month250K/monthAdvanced features
EnterpriseCustomCustomCustom

Self-hosting Novu: Docker Compose, Kubernetes, or any container platform. The self-hosted version is fully featured — no features locked to the cloud.

Multi-Channel Workflow

import { Novu } from "@novu/node";

const novu = new Novu(process.env.NOVU_API_KEY);

// Trigger a multi-step notification workflow
await novu.trigger("order-shipped", {
  to: {
    subscriberId: "user_123",
    email: "user@example.com",
    phone: "+1234567890",
  },
  payload: {
    orderId: "ORD-12345",
    trackingNumber: "1Z999AA10123456784",
    estimatedDelivery: "March 10, 2026",
  },
});

In the Novu dashboard, you configure the "order-shipped" workflow:

  1. Send email (via SendGrid/Resend/Mailgun) with order details
  2. Wait 1 hour
  3. If email not opened: send push notification
  4. If order not viewed: send SMS reminder next day

This multi-channel fallback logic — without code — is Novu's core value proposition.

Self-Hosted Docker Setup

# docker-compose.yml (simplified)
version: "3.8"
services:
  novu-api:
    image: ghcr.io/novuhq/novu/api:latest
    environment:
      MONGO_URL: mongodb://mongo:27017/novu
      REDIS_HOST: redis
      JWT_SECRET: your-jwt-secret
    ports:
      - "3000:3000"

  novu-worker:
    image: ghcr.io/novuhq/novu/worker:latest
    environment:
      MONGO_URL: mongodb://mongo:27017/novu
      REDIS_HOST: redis

  novu-web:
    image: ghcr.io/novuhq/novu/web:latest
    ports:
      - "4200:4200"

  mongo:
    image: mongo:6
  redis:
    image: redis:7

When to Choose Novu

Teams that need open-source notification infrastructure, organizations with data sovereignty requirements (self-host everything), projects that already have email/push/SMS delivery providers and need an orchestration layer on top, or teams that want the ability to extend and customize the notification system itself.

Knock

Best for: Product teams that need notification center UI, digest batching, preference management

Knock is workflow-first notification infrastructure with one important differentiator: pre-built in-app notification feed components. Instead of building a notification bell, feed, and preference center from scratch (typically 2-4 weeks of engineering work), Knock provides React/Vue/vanilla JS components that connect directly to the Knock API.

Pricing

PlanCostNotifications
Builder$010K/month
Scale$100/month100K/month
EnterpriseCustomCustom

In-App Notification Feed

// React notification bell — pre-built component
import { KnockProvider, KnockFeedProvider, NotificationIconButton, NotificationFeedPopover } from "@knocklabs/react";
import "@knocklabs/react/dist/index.css";

function NotificationBell({ userId, userToken }) {
  const [isVisible, setIsVisible] = useState(false);
  const notifButtonRef = useRef(null);

  return (
    <KnockProvider apiKey={process.env.KNOCK_PUBLIC_API_KEY} userId={userId} userToken={userToken}>
      <KnockFeedProvider feedId={process.env.KNOCK_FEED_ID}>
        <NotificationIconButton ref={notifButtonRef} onClick={() => setIsVisible(!isVisible)} />
        <NotificationFeedPopover
          buttonRef={notifButtonRef}
          isVisible={isVisible}
          onClose={() => setIsVisible(false)}
        />
      </KnockFeedProvider>
    </KnockProvider>
  );
}

This renders a notification bell with badge count, a dropdown feed showing recent notifications with read/unread state, and real-time updates via WebSocket — without building any of it yourself.

Digest/Batching

import Knock from "@knocklabs/node";

const knock = new Knock(process.env.KNOCK_API_KEY);

// Trigger notification — Knock handles batching
await knock.workflows.trigger("new-comment", {
  actor: { id: "user_commenter", name: "Alice" },
  recipients: ["user_post_author"],
  data: { postTitle: "My Blog Post", comment: "Great article!" },
});

// In Knock's workflow builder, configure:
// Batch for 5 minutes, then send "Alice and 3 others commented on your post"
// Instead of 4 separate notifications

When to Choose Knock

Product teams that need an in-app notification center without building it from scratch, applications with complex notification logic (batching, preferences, workflows), SaaS products where notification infrastructure is a core feature, or teams that want notification preference management built in.

Courier

Best for: Complex multi-channel routing, advanced template design, enterprise notification workflows

Courier is the most opinionated multi-channel notification platform — it focuses on routing logic, template management, and ensuring the right notification reaches the right person through the right channel at the right time. Its template editor is the most visual of the four platforms.

Key Features

  • Routing engine: Define rules for when to use email vs push vs SMS based on user preferences and context
  • Template editor: Visual drag-and-drop email template builder with dynamic personalization
  • Notification log: Full history of every notification sent, with delivery status per channel
  • Brands: Whitelabel notification templates for multi-tenant applications

API Integration

import { CourierClient } from "@trycourier/courier";

const courier = CourierClient({ authorizationToken: process.env.COURIER_API_KEY });

// Send multi-channel notification
const { requestId } = await courier.send({
  message: {
    to: {
      user_id: "user_123",
      email: "user@example.com",
      data: { name: "John" },
    },
    template: "order-shipped",
    data: {
      orderId: "ORD-12345",
      trackingUrl: "https://tracking.example.com/12345",
    },
    routing: {
      method: "all",  // Send on all channels
      channels: ["email", "push"],
    },
  },
});

When to Choose Courier

Teams with advanced notification routing logic, organizations that need visual template management for non-technical stakeholders, or applications where multi-channel notification design matters as much as delivery.

Head-to-Head Comparison

FeatureOneSignalNovuKnockCourier
Push notificationsBest-in-classVia providersVia providersVia providers
EmailYesVia providersVia providersVia providers
In-app feed/inboxNo (build your own)LimitedPre-built UILimited
Open sourceNoYes (MIT)NoNo
Self-hostableNoYesNoNo
Digest/batchingLimitedYesYesYes
User preferencesYesYesYesYes
Free tierUnlimited push30K/month cloud10K/monthLimited
Best forPushFull-stack OSSIn-app UIMulti-channel

Decision Framework

ScenarioRecommended
Mobile push notificationsOneSignal
Web push notificationsOneSignal
Open-source, self-hostedNovu
Pre-built notification inbox/bellKnock
Complex multi-channel routingCourier or Novu
Data residency requiredNovu (self-hosted)
In-app notification center in ReactKnock
Digest/batching for social appsKnock or Novu

Verdict

OneSignal remains the default for push notification-heavy applications. The unlimited free push tier, mobile SDK quality, and scale make it the obvious starting point for any app that needs mobile or web push.

Novu is the right choice when you need full-stack notification infrastructure under your control. The open-source MIT license, self-hosting support, and multi-channel orchestration make it uniquely suited for teams that want to own their notification stack.

Knock wins when you need a complete in-app notification experience — feed, preferences, real-time updates — without building the UI components yourself. The pre-built React/Vue components save weeks of engineering time.

Courier is the choice for teams with complex multi-channel routing and advanced template management needs where visual design tools matter.


Compare in-app notification API pricing, features, and integration documentation at APIScout — find the right notification platform for your application.

Comments