Let's chat

The definitive notification stack altitude map

Firebase, OneSignal, Knock, and Braze all “send notifications.” But comparing them in the same table is like comparing a CDN to a web framework. This guide maps the five altitudes of the notification stack — so you stop comparing tools that aren’t solving the same problem.

The bottom line

Pick your altitude before you pick your tool. Most startups need Altitude 3 — a multi-channel notification router like Knock or Novu — not a full engagement platform. Over-buying locks you into pricing that scales with your user count, not your actual usage.

Why this exists

Search “best push notification service” and you’ll find listicles ranking FirebaseFirebase alongside BzBraze. OSOneSignal next to CCustomer.io. ExpoExpo Push in the same table as IntercomIntercom.

These articles aren’t wrong about the individual tools. They’re wrong about the category. They compare tools that solve fundamentally different problems at fundamentally different layers of the stack.

The result: founders pick a marketing automation platform when they need a delivery pipe. CTOs evaluate notification infrastructure when they actually need a campaign tool. Teams build custom orchestration logic on top of tools that already include it — or worse, try to use a push delivery service as a preference management system.

I ran into this myself while building Tortie — a couple expense tracker in React Native. When I searched for “the right push notification service,” every comparison article mixed altitude levels. FirebaseFirebase (a delivery protocol) was ranked against OSOneSignal (a campaign platform) was ranked against KKnock (notification infrastructure). The comparison was useless because the tools aren’t solving the same problem.

So I mapped the stack. Five altitudes, from raw cloud infrastructure at the bottom to full customer engagement platforms at the top. Each altitude has different tools, different buyers, different cost structures, and different engineering requirements.

This is that map.

The five altitudes

Every push notification you’ve ever received — regardless of which service sent it — flows through the same two pipes at the bottom: Apple’s APNs and Google’s FCM. Everything above those pipes is a question of how much you want to build yourself versus how much you want to buy.

The five altitudes, from bottom to top:

Where does Tortie fit?

A couple expense tracker doesn’t need marketing automation (altitude 5) or notification infrastructure (altitude 4) — at least not yet. Tortie likely sits at altitude 2–3: Expo Push for the MVP, with a clear migration path to OneSignal’s free tier when analytics and segmentation become real needs. But the honest tension is this: if in-app notifications become a product feature (showing expense history, budget alerts in a persistent feed), that’s altitude 4 territory. The decision is intentionally open — because the answer depends on product direction, not technology.

Altitude 1 — Raw infrastructure

SNSAmazon SNS, Google Pub/SubGoogle Pub/Sub

Operating at altitude 1 means your engineering team takes full ownership of everything above the cloud messaging bus: routing logic, user preference management, template rendering, analytics, retry logic, token lifecycle management, segmentation, rate limiting, and A/B testing.

Estimated engineering investment before the first user-facing notification: 6–18 months.

Who operates here Sony PlayStation Network (123 million MAUs, using SNS+SQS for hundreds of thousands of requests per second), Netflix, Meta. Teams with dedicated notification infrastructure engineers. Teams where third-party platforms become cost-prohibitive or architecturally limiting at their scale.

For the vast majority of products — including most venture-backed startups — altitude 1 is overkill. You’d be building a notification platform from scratch instead of building your product.

Under the hood: raw infrastructure deep-dive

Amazon SNS specifics

  • Pub/sub fan-out: publishers send to topics, SNS fans to all registered subscribers. No polling — push-based.
  • Two topic types: Standard (best-effort ordering, massive throughput — 30,000 msg/sec in us-east-1) and FIFO (strict ordering, exactly-once, lower throughput).
  • Pricing: first 1M API requests/month free (permanent free tier), then $0.50/million. Mobile push delivery: $0.50/million after 1M free/month.
  • Supports direct mobile push (wraps FCM, APNs, ADM, Baidu, WNS), plus HTTP/S, email, SQS, Lambda, SMS.
  • Real-world: Sony PSN uses SNS+SQS to process several hundred thousand RPS daily across 123M MAUs.

Google Cloud Pub/Sub

  • General-purpose message bus, NOT specifically designed for end-user notifications. Data volume pricing: $40/TiB after 10 GiB free.
  • No native mobile push delivery — needs a Cloud Function subscribing to a topic that then calls FCM’s HTTP v1 API.
  • Use case: only when already fully on Google Cloud AND notification is triggered by a streaming data pipeline already flowing through Pub/Sub.

What you have to build yourself on top of altitude 1

  • Credential management (rotating FCM service account keys, APNs .p8 keys)
  • Token lifecycle (tracking valid tokens, handling DeviceNotRegistered errors)
  • Delivery retry logic (exponential backoff, dead-letter queues)
  • Template rendering
  • Analytics (delivery success, open rates, conversion tracking)
  • User preference management
  • Segmentation engine
  • Rate limiting

Altitude 2 — Push delivery

FCFCM, APAPNs, ExpoExpo Push

These are the two literal pipes through which every push notification flows — regardless of what platform, SDK, or service you use above them. OSOneSignal uses FCM and APNs. BzBraze uses FCM and APNs. SNSAmazon SNS uses FCM and APNs. They’re the foundation.

Key insight — neither FCM nor APNs has any concept of users, preferences, campaigns, or analytics. They only know device tokens and JSON payloads.

For React Native / Expo teams, Expo Push is the path of least resistance. Zero config (EAS handles credentials), free, handles both platforms through a unified API. You send a single HTTPS POST to Expo’s endpoint, and Expo routes to the appropriate platform.

FCFCMAPAPNsExpoExpo Push
CostFreeFree ($99/yr Apple Dev Program)Free
Rate limit600K msg/min/projectNot published600/sec/project
PlatformAndroid native, iOS via APNs proxyiOS/macOS/watchOS onlyBoth (abstraction over FCM + APNs)
Message size4,096 bytes4,096 bytes (standard)4,096 bytes
Delivery confirmationYes (delivery receipts)No (best-effort, no receipts)Partial (receipt = handed to FCM/APNs, not device)
BroadcastingYes (FCM Topics — one API call)N/ANo (must enumerate every token)
Cost
FCMFree
APNsFree ($99/yr Apple Dev Program)
Expo PushFree
Rate limit
FCM600K msg/min/project
APNsNot published
Expo Push600/sec/project
Platform
FCMAndroid native, iOS via APNs proxy
APNsiOS/macOS/watchOS only
Expo PushBoth (abstraction over FCM + APNs)
Message size
FCM4,096 bytes
APNs4,096 bytes (standard)
Expo Push4,096 bytes
Delivery confirmation
FCMYes (delivery receipts)
APNsNo (best-effort, no receipts)
Expo PushPartial (receipt = handed to FCM/APNs, not device)
Broadcasting
FCMYes (FCM Topics — one API call)
APNsN/A
Expo PushNo (must enumerate every token)
Tortie at altitude 2

Expo Push is where Tortie starts. Zero config via EAS Build — it handles FCM V1 credentials and APNs push key configuration automatically. The 600/sec rate limit is irrelevant for a couple expense tracker (two users per household). Transaction alerts (“Your partner logged an expense: €45 at Restaurant X”), budget warnings, monthly summaries — all handled with a single POST to Expo’s endpoint. No SDK to install beyond expo-notifications (already in the Expo SDK).

The question isn’t whether Expo Push works. It’s when Tortie outgrows it.

Under the hood: FCM, APNs, and Expo Push internals

FCM critical facts

  • The legacy FCM API was fully shut down July 22, 2024. All senders must use HTTP v1 API (short-lived OAuth 2.0 tokens, ~1 hour expiry).
  • Per-device limits: 240 messages/minute, 5,000/hour to a single device.
  • May 2024: FCM began purging Android push tokens inactive >270 days.
  • April 2025 Cloud Next: no FCM changes announced — focus was on AI/Genkit and Data Connect.

APNs

  • Best-effort delivery only. Stores at most one notification per bundle ID per device while offline, for up to 30 days.
  • No delivery receipts (FCM provides them; APNs does not).
  • Token-based auth (.p8 key, never expires) recommended over certificate-based (.p12, expires annually).
  • Critical: .p8 keys cannot be re-downloaded after initial generation — store securely.
  • January–February 2025: APNs CA certificate change. Teams using direct APNs needed Trust Store update. Third-party providers (FCM, SNS, OneSignal) handled it automatically.

Expo Push

  • SDK 53 breaking change: push no longer works in Expo Go — requires development build.
  • Cannot send to FCM Topics. To broadcast to 1M users, you must send 1M individual API calls (in batches of 100). FCM Topics handle this in one call.
  • Two-step delivery confirmation: Step 1 (Push Tickets) — Expo accepted the message. Step 2 (Push Receipts, check 15+ min later) — handed off to FCM/APNs.
  • Error code DeviceNotRegistered = user uninstalled or revoked permissions. Stop sending to that token.

Altitude 3 — Push platforms

OSOneSignal, PwPushwoosh

This is where most teams land first. Self-service access. Developers can be sending push notifications within minutes, often free. Segmentation, scheduling, A/B testing, analytics — without building the infrastructure.

OSOneSignal is the de facto default: 1 in 5 mobile apps released in 2023 had the OneSignal SDK installed. 12 billion messages sent daily. The free tier offers unlimited mobile push with unlimited subscribers — confirmed as of March 2026.

PwPushwoosh is the less-known alternative with some meaningful advantages: unlimited journeys on every tier (OneSignal caps at 1–3), direct event triggers (OneSignal requires tag workarounds), frequency capping included for free (OneSignal gates this to Enterprise), and WhatsApp support (OneSignal doesn’t offer it).

OSOneSignal FreeOSOneSignal GrowthPwPushwoosh FreePwPushwoosh Paid
PriceFree$19+/moFree$3/1k users
Mobile pushUnlimited subscribers + sendsUnlimited ($0.012/MAU)Up to 1,000 usersUnlimited
Email10K/month20K free + $1.50/1K1K/month$1/1K
Journeys1 journey, 2 steps3 journeys, 6 stepsUnlimitedUnlimited
Segmentation6 segments, 2 tags10 segments, 10 tagsUnlimitedUnlimited
Frequency capping✗ (Enterprise only)
Data retention30 days90 daysUnlimitedUnlimited
WhatsApp
Expo plugin
Price
OS FreeFree
OS Growth$19+/mo
Pw FreeFree
Pw Paid$3/1k users
Mobile push
OS FreeUnlimited subscribers + sends
OS GrowthUnlimited ($0.012/MAU)
Pw FreeUp to 1,000 users
Pw PaidUnlimited
Email
OS Free10K/month
OS Growth20K free + $1.50/1K
Pw Free1K/month
Pw Paid$1/1K
Journeys
OS Free1 journey, 2 steps
OS Growth3 journeys, 6 steps
Pw FreeUnlimited
Pw PaidUnlimited
Segmentation
OS Free6 segments, 2 tags
OS Growth10 segments, 10 tags
Pw FreeUnlimited
Pw PaidUnlimited
Frequency capping
OS Free
OS Growth✗ (Enterprise only)
Pw Free
Pw Paid
Data retention
OS Free30 days
OS Growth90 days
Pw FreeUnlimited
Pw PaidUnlimited
WhatsApp
OS Free
OS Growth
Pw Free
Pw Paid
Expo plugin
OS Free
OS Growth
Pw Free
Pw Paid
The pricing model shift to watch

In June 2024, OneSignal moved Growth plans from per-subscriber pricing to per-MAU pricing. This means you pay for all monthly active users regardless of push opt-in rate — not just users who’ve subscribed to push. If your push opt-in rate is 40%, you’re paying for 100% of your MAUs. This is a significant cost increase for apps with low opt-in rates.

Tortie at altitude 3

When Tortie needs analytics, segmentation, or scheduling, OneSignal’s free tier is the natural next step. Unlimited mobile push, basic A/B testing, 30+ integrations — at $0. Integration via onesignal-expo-plugin: 2–4 hours for basic push, 1 day for rich push + delivery tracking + in-app messaging.

The consideration worth flagging: OneSignal’s free tier caps at 6 segments, 2 data tags, 1 journey with 2 steps, and 30 days of reporting history. For a couple expense tracker, that’s plenty. For a product with engagement ambitions, you hit walls quickly.

Under the hood: OneSignal and Pushwoosh internals

OneSignal Expo integration specifics

  • onesignal-expo-plugin MUST be first in the plugins array (iOS notification setting conflicts if not).
  • NSE (Notification Service Extension) setup adds complexity for rich push and delivery tracking.
  • Development vs. production APNs environment mismatch is the most common “notifications not appearing” bug.
  • December 2025 incident: onesignal-expo-plugin was briefly archived on GitHub — caused significant developer anxiety. Resolved same day, but revealed community concern about Expo CNG support commitment.

OneSignal trajectory

  • Moving toward mid-market Customer.io territory (altitude 5 direction), not toward altitude 4.
  • Self-positioning: “drag-and-drop workflow builder enables startups to create sophisticated automation sequences without requiring dedicated engineering resources.” That’s the altitude 5 narrative.
  • Spring 2025: OneSignal Events (behavioral data ingestion), RCS support, Intelligent Delivery.
  • Fall 2025: Message Event Segmentation, AI Analytics Insights (early access), AI Message Composer.

Pushwoosh differentiators for technical evaluation

  • Native event-based triggers (configure directly in campaign interface — no tag workaround engineering).
  • RFM segmentation for monetization analysis.
  • Up to 500,000 push notifications/sec (vs OneSignal’s 850K/sec).
  • EU data center (Germany) — relevant for GDPR data sovereignty.
  • DAU + MAU tracking + revenue/ARPU metrics (OneSignal: MAU only, no revenue metrics).

Airship (boundary case)

  • Sits at the boundary of altitude 3 and 4/5. All custom pricing, no self-service. Median buyer: ~$35K/year. Enterprise-only positioning. Named a Leader in 2025 Gartner Magic Quadrant for Multichannel Marketing Hubs. Relevant only for enterprise-scale mobile-first brands.

The fork: delivery feature vs. product feature

Here’s where most comparison articles fall apart. They rank OSOneSignal and KKnock in the same table, compare features side by side, and declare a winner. But they’re asking the wrong question.

The right question isn’t “which tool has more features?” It’s “what is a notification in your product?”

If notifications are a delivery mechanism — fire-and-forget alerts that tell users something happened — you’re at altitude 3. OneSignal, Pushwoosh. Campaign platforms with push delivery, segmentation, and analytics. The person configuring them might be a developer, a product manager, or a marketer.

If notifications are a product feature — a persistent in-app feed, a workflow engine that orchestrates multi-step sequences, user-controlled preferences for which channels receive which notification types — you’re at altitude 4. Knock, Novu, Courier. Notification infrastructure that engineers own and build into the product’s architecture.

Three markers that mean you need altitude 4

  1. In-app notification inbox/feed — a persistent, real-time notification center embedded in your product. Not just a transient push alert. A place users go to see what’s happened.
  2. Workflow engine — conditional, multi-step orchestration. If a user triggers X, send push now. If not read in 1 hour, send email. If no action in 24 hours, send SMS. This is beyond what a “journey” in OneSignal can do.
  3. Preference management — user-level controls over which channels receive which notification types. “Notify me about comments via push, but marketing updates only by email.” Architectural, not just a settings toggle.

At altitude 3, a notification is something you send. At altitude 4, a notification is something you build.

The ownership shift is just as important: at altitude 4, a pull request is how you change a notification workflow. At altitude 5, a campaign draft is how you change it.

Altitude 4 — Notification infrastructure

KKnock, NvNovu, CoCourier

This is the altitude most comparison content doesn’t know exists. Analysis of nine existing comparison articles found that the notification infrastructure category is invisible in roughly 80% of content. Articles that do cover it don’t map it against the layers above and below.

These three tools share a common architecture: they’re orchestration layers above delivery providers. None of them deliver email, SMS, or push directly. They route through your configured providers — SSendGrid for email, TwilioTwilio for SMS, FCM for push. They add the intelligence layer: workflow logic, preference management, batching, throttling, and in-app notification feeds.

KKnockNvNovuCoCourier
Free tier10K messages/month10K events/month10K notifications/month
Paid entry$250/month (Starter)From $30/month (Pro)From $100/month (Growth)
Per-unit overage$0.005/message~$0.001/eventNot published
Self-hosting✓ (MIT core license)
Open source✓ (38.3K GitHub stars)
In-app feed (web)Pre-built React componentsPre-built <Inbox /> componentPre-built Inbox (rebuilt Aug 2025)
In-app feed (React Native)Headless hooks (build own UI)Headless hooks (build own UI)Pre-built CourierInboxView
Expo push supportFirst-class (KnockExpoPushNotificationProvider)Via generic FCM/APNs integrationSupported (CourierPushProvider.EXPO)
MS TeamsLimitedNot nativeNative integration
Code-first workflowsManagement API + CLIFramework SDK (TypeScript)Limited
Auto provider failoverManualManualAutomatic
EU data residencyEnterprise onlyCloud tierAvailable (not Enterprise-only)
i18n / translationsEnterprise onlyCloud tierAll plans
Total funding$18M (Series A, Feb 2024)~$6.6M (Seed)$47.5M (Series B, Jun 2022)
Free tier
Knock10K messages/month
Novu10K events/month
Courier10K notifications/month
Paid entry
Knock$250/month (Starter)
NovuFrom $30/month (Pro)
CourierFrom $100/month (Growth)
Per-unit overage
Knock$0.005/message
Novu~$0.001/event
CourierNot published
Self-hosting
Knock
Novu✓ (MIT core license)
Courier
Open source
Knock
Novu✓ (38.3K GitHub stars)
Courier
In-app feed (web)
KnockPre-built React components
NovuPre-built <Inbox /> component
CourierPre-built Inbox (rebuilt Aug 2025)
In-app feed (React Native)
KnockHeadless hooks (build own UI)
NovuHeadless hooks (build own UI)
CourierPre-built CourierInboxView
Expo push support
KnockFirst-class (KnockExpoPushNotificationProvider)
NovuVia generic FCM/APNs integration
CourierSupported (CourierPushProvider.EXPO)
MS Teams
KnockLimited
NovuNot native
CourierNative integration
Code-first workflows
KnockManagement API + CLI
NovuFramework SDK (TypeScript)
CourierLimited
Auto provider failover
KnockManual
NovuManual
CourierAutomatic
EU data residency
KnockEnterprise only
NovuCloud tier
CourierAvailable (not Enterprise-only)
i18n / translations
KnockEnterprise only
NovuCloud tier
CourierAll plans
Total funding
Knock$18M (Series A, Feb 2024)
Novu~$6.6M (Seed)
Courier$47.5M (Series B, Jun 2022)

Designing your notification stack?

I help teams make these architectural decisions and implement them. If you are evaluating options, I can save you the expensive mistakes.

The price cliff to understand

Knock’s jump from $0 (10K messages) to $250/month (50K messages) with no intermediate tier is a significant forcing function. Novu’s Pro tier at $30/month covers approximately the same volume at 5x lower per-unit cost ($0.001 vs $0.005). If budget sensitivity matters more than developer experience polish, Novu is the cost-effective choice — especially with the self-hosted option.

The React Native verdict

For React Native / Expo teams specifically, the SDK story matters:

CoCourier wins for fastest path to production-ready inbox UI. CourierInboxView is a pre-built, drop-in notification inbox for React Native — unique advantage. Neither Knock nor Novu offers pre-built RN UI components.

KKnock wins for strongest Expo push integration. The KnockExpoPushNotificationProvider wrapper with useExpoPushNotifications hook provides automatic push token registration and engagement tracking — first-class treatment.

NvNovu wins for cost and flexibility. Self-hosted option on Docker, code-first workflow definition via @novu/framework TypeScript SDK, and the strongest open-source community (38.3K GitHub stars, 446 contributors).

All three provide headless hooks for in-app feeds in React Native — but only Courier gives you a pre-built visual component out of the box.

Tortie at altitude 4 — if it gets there

If Tortie evolves beyond simple push alerts — if an in-app notification feed showing expense history, budget alerts, and partner activity becomes a real product feature — that’s when altitude 4 enters the conversation. Knock’s Expo integration is the cleanest path. Courier’s pre-built CourierInboxView would be fastest to a polished inbox. The reality: Tortie doesn’t need altitude 4 yet. But knowing this layer exists — and when you’d need it — is exactly why this map matters.

Under the hood: Knock, Novu, and Courier deep-dives

Knock deep-dive

  • Workflows 3.0 (redesigned 2025): visual canvas with delay, batch, branch, throttle, experiment, fetch, AI agent, and trigger workflow step types.
  • Batch step: aggregates trigger calls with same batch key — e.g., collect “new comment” events into a single digest notification.
  • Preference model: per-recipient PreferenceSets controlling opt-outs at channel types, individual channels, workflow categories, and individual workflows. Multi-tenant hierarchy: recipient > tenant > environment defaults.
  • H1 2025 Launch Week: Agent Toolkit + MCP server, Workflows 3.0, Broadcasts (one-time campaign sends with stateful follow-up), Guides (in-app messages beyond the feed — banners, modals, paywalls), new docs + SDKs.
  • Notable customers: Webflow, Vercel, Amplitude, Pinecone, Modal.

Novu deep-dive

  • Open core model: MIT license for core platform, commercial for enterprise features (SSO, RBAC, HIPAA).
  • Dashboard 2.0 (January 2025): cloud visual workflow editor, WYSIWYG email block editor, redesigned activity feed, in-app notification testing.
  • Self-hosting requires: novu-api, novu-worker, novu-ws, novu-dashboard, novu-bridge, MongoDB, Redis.
  • Known pain point: v0 → v2 migration is manual and painful — no automated migration, workflows must be recreated. Breaking changes between @novu/notification-center (v1) and @novu/react (v2).
  • Less capitalized ($6.6M) than Knock ($18M) and Courier ($47.5M).

Courier deep-dive

  • Most capitalized: $47.5M Series B from Google Ventures, Bessemer, Matrix, Twilio Ventures, and Slack Fund.
  • Twilio uses Courier to unify notification infrastructure for its 300,000 customers — biggest known production deployment.
  • Key architectural differentiator: automatic provider failover. Knock and Novu require manual failover configuration.
  • In-app Inbox completely rebuilt August 2025: faster performance, real-time via managed WebSocket.
  • Caution flag: last funding round was June 2022 — no public funding activity in 3+ years.
  • React Native repo has only 10 GitHub stars (though actively maintained) — low community mindshare.

Altitude 5 — Full engagement platforms

CCustomer.io, BzBraze, IntercomIntercom

At altitude 5, notifications are one channel within a broader engagement strategy. The person configuring notifications isn’t an engineer — it’s a marketer, a growth lead, or a support manager. The question shifts from “how do we build notification logic?” to “how do we orchestrate customer communications across all channels?”

CCustomer.io is the mid-market entry point. Starting at $100/month for 5,000 profiles and 1M emails/month. Behavioral messaging with event-triggered campaigns, lifecycle workflows, and a Transactional API that handles password resets, receipts, and OTPs. Hit an estimated $100M ARR in September 2025. Startup program: 12 months free for companies that raised under $10M.

BzBraze is the enterprise tier. ~$593M revenue (FY2025), publicly traded (NASDAQ: BRZE). Real-time stream processing architecture (not batch). Canvas workflow builder with up to 200 steps. AI Decisioning Studio (powered by OfferFit acquisition) replaces A/B testing with autonomous personalization. Named a Leader in 2025 Gartner Magic Quadrant for Multichannel Marketing Hubs — third consecutive year. Minimum ~$60K/year. Kayo Sports saw a 14% subscription increase and 105% cross-sell increase using BrazeAI.

IntercomIntercom has pivoted decisively to AI-first customer service. Fin AI Agent is the centerpiece. Push notifications in Intercom are an add-on to a support product ($99/month Proactive Support Plus add-on) — not a growth tool. Use Intercom for notifications only when your primary use case is customer support and notifications are a side-channel to keep support conversations alive.

The two-vendor architecture

At scale, many teams run altitude 4 (KKnock) for product transactionals — password resets, comment notifications, activity digests, system alerts — alongside altitude 5 (CCustomer.io) for lifecycle campaigns — onboarding drips, re-engagement, promotional messaging. Engineering owns one; marketing owns the other. This is healthy architecture, not redundancy.

Where boundaries blur

Every player is adding features from adjacent altitudes. OSOneSignal added Journeys and behavioral Events (climbing toward altitude 5). KKnock added Broadcasts and Guides (reaching toward altitude 5). CCustomer.io added a Transactional API (reaching down to altitude 4).

The marketing language is converging. The architecture isn’t.

A company can “send a campaign” in Knock and “send a transactional” in Customer.io, but the underlying engineering model, data model, and organizational ownership remain fundamentally different. OneSignal’s Journeys are drag-and-drop workflows operated by marketers. Knock’s workflows are code-reviewed orchestration logic operated by engineers. Customer.io’s Transactional API is a single-message-per-call endpoint that lacks Knock’s batching, throttling, and digest primitives.

Convergence makes sense within an altitude — consolidating from three email providers to one. It rarely makes sense across altitudes — using one tool for both infrastructure and campaigns creates architectural coupling that limits both.

ToolCore altitudeReaching into
OSOneSignal3 (push-first)Low 5 (Journeys, lifecycle)
KKnock4 (notification infra)Low 5 (Broadcasts, Guides)
CCustomer.io5 (lifecycle marketing)4 (Transactional API)
BzBraze5 (enterprise engagement)4 (API-triggered, Content Cards)
CoCourier4 (notification infra)5 (Journeys, marketing visual builder)
Core3 (push-first)
Reaching intoLow 5 (Journeys, lifecycle)
Core4 (notification infra)
Reaching intoLow 5 (Broadcasts, Guides)
Core5 (lifecycle marketing)
Reaching into4 (Transactional API)
Core5 (enterprise engagement)
Reaching into4 (API-triggered, Content Cards)
Core4 (notification infra)
Reaching into5 (Journeys, marketing visual builder)

Where you fit

The altitude that’s right for you depends on three things: what notifications mean in your product, who owns them in your organization, and where you are in your growth.

What stage is your product at?
Tortie’s path

Start → Expo Push (altitude 2). Free, zero config, handles transaction alerts and budget warnings.

When analytics and segmentation are needed → OneSignal free tier (altitude 3). Still $0.

If in-app notification feed becomes a product feature → evaluate Knock or Courier (altitude 4). $100–250/month.

Marketing automation? Not until Tortie has users worth marketing to.

The decision is open. And that’s the point — the altitude map tells you when to move, not just where to go.

Cost comparison

Monthly volumeExpoExpo PushOSOneSignalPwPushwooshKKnockNvNovuCCustomer.ioBzBraze
10K usersFreeFreeFreeFreeFree$100/mo~$5K+/yr
50K usersFree~$619/mo~$150/mo$250/mo~$60/mo$100/mo~$5–10K/yr
100K usersFree~$1,219/mo~$300/mo$500/mo~$100/mo$100–200/mo~$10–25K/yr
500K usersFree~$6,019/mo~$1,500/mo$2,500/mo~$500/mo$1,000+/mo~$60–100K/yr
10K users
ExpoFree
OneSignalFree
PushwooshFree
KnockFree
NovuFree
Customer.io$100/mo
Braze~$5K+/yr
50K users
ExpoFree
OneSignal~$619/mo
Pushwoosh~$150/mo
Knock$250/mo
Novu~$60/mo
Customer.io$100/mo
Braze~$5–10K/yr
100K users
ExpoFree
OneSignal~$1,219/mo
Pushwoosh~$300/mo
Knock$500/mo
Novu~$100/mo
Customer.io$100–200/mo
Braze~$10–25K/yr
500K users
ExpoFree
OneSignal~$6,019/mo
Pushwoosh~$1,500/mo
Knock$2,500/mo
Novu~$500/mo
Customer.io$1,000+/mo
Braze~$60–100K/yr

OneSignal Growth estimates based on $0.012/MAU/month + $19 platform fee. Actual cost depends on MAU definition and usage.
Knock pricing: $250/month base includes 50K messages, then $0.005/message overage.
Novu estimates based on published tier pricing. Self-hosted operational costs not included.
Braze: no public pricing, estimates from industry sources.
All prices as verified in March 2026.

Why other comparisons miss the point

I analyzed nine existing comparison articles while researching this topic. Every one commits the same structural error: comparing tools across altitudes as if they’re solving the same problem.

A typical article table looks like: OneSignal vs Knock vs Braze vs Firebase vs Pushwoosh — all ranked on the same criteria. But Firebase is a delivery protocol (altitude 2). OneSignal is a campaign platform (altitude 3). Knock is notification infrastructure (altitude 4). Braze is an enterprise engagement suite (altitude 5). Comparing them in one table is comparing SMTP to Mailchimp.

Six gaps the altitude map fills

  1. The decision framework gap — no article answers “what altitude do I need?” before “which tool at that altitude?”
  2. The stack composition gap — no article discusses that you might need tools at multiple altitudes simultaneously.
  3. The migration arc gap — no article discusses the natural progression from lower to higher altitudes as complexity grows.
  4. The ownership question gap — no article asks “who in your organization owns notifications?” — which is the most important question for choosing altitude.
  5. The architectural implication gap — no article explains that choosing a tool at the wrong altitude creates technical debt.
  6. The consolidation question — when to run one tool per altitude vs. consolidate. Within-altitude consolidation makes sense. Cross-altitude consolidation creates coupling.

Go deeper

Ready to choose within an altitude? These deep-dives compare tools head-to-head:

Altitude 3 vs. 4 boundary
OneSignal vs Knock — mobile notification infrastructure compared
Which notification infrastructure for your mobile app? Decision framework and pricing.
OS
K
Coming soon
Altitude 2 → 3 transition
Expo Push vs OneSignal — when to graduate from built-in push
For React Native / Expo teams: when to graduate from Expo’s built-in push to a platform.
Expo
OS
Coming soon
Altitude 4 head-to-head
Knock vs Novu vs Courier — notification infrastructure compared
Three notification infrastructure platforms compared on architecture, pricing, and DX.
K
Nv
Co
Coming soon
Email delivery layer
Transactional Email: Loops vs Resend vs Postmark vs SendGrid
The email delivery layer — choosing a provider for receipts, resets, and operational messages.
Resend
S
Coming soon
Altitude 5
Customer.io vs Braze vs Intercom — enterprise engagement compared
Enterprise engagement platforms for marketing-led teams at scale.
C
Bz
Intercom
Coming soon

Building a product that needs notifications?

You’ve mapped the altitudes — now you need to pick the right tools for yours. I help teams make these infrastructure decisions and implement them. 30 minutes, no pitch — just your stack, your constraints, your answer.

Frequently asked questions

What is the difference between a push notification service and a customer engagement platform?

A push notification service (Altitude 2–3) handles delivery mechanics — sending messages across channels like push, email, and SMS. A customer engagement platform (Altitude 4–5) adds behavioral targeting, journey orchestration, and analytics on top. The cost and complexity difference is roughly 10x between tiers for the same message volume.

Should I use Firebase Cloud Messaging or a managed push service?

Use FCM directly (Altitude 1) only if you need sub-100ms latency or process millions of messages daily with custom routing logic. For most apps, a managed service like OneSignal or Expo Notifications handles delivery, retries, and device token management with far less engineering effort.

When should I switch from OneSignal to Knock or Novu?

Switch when you need to orchestrate notifications across more than two channels with unified user preferences, digest batching, or in-app notification feeds. OneSignal handles push and basic email well, but cross-channel routing and preference management are where Altitude 4 tools earn their cost.

What notification tools work best with React Native and Expo?

Expo Notifications provides a solid Altitude 2 solution with built-in push token management and delivery. For multi-channel needs, Knock and Novu both have React Native SDKs. Avoid building directly on FCM/APNs unless you need custom delivery logic that no managed service supports.

How much do notification platforms cost at scale?

Costs vary by 10x across altitudes. Raw cloud messaging (FCM, SNS) is near-free at low volume. Managed push services run $0.50–2 per thousand messages. Multi-channel routers charge $0.01–0.05 per notification. Full engagement platforms like Braze or Customer.io start at $500–1,000/month and scale with your active user count.

Sources and tools
Tools referenced
  • SNSAmazon SNS — cloud message queue, raw pub/sub infrastructure
  • Google Pub/SubGoogle Pub/Sub — cloud message queue, raw pub/sub infrastructure
  • FCFCM — Google’s push delivery pipe to Android and web
  • APAPNs — Apple’s push delivery pipe to iOS and macOS
  • ExpoExpo Push — zero-config push for React Native / Expo apps
  • OSOneSignal — push notification service, mobile-first
  • PwPushwoosh — push notification service, enterprise-oriented
  • KKnock — notification infrastructure, API-first multi-channel
  • NvNovu — open-source notification infrastructure
  • CoCourier — notification orchestration platform
  • CCustomer.io — customer engagement platform, messaging-led
  • BzBraze — enterprise customer engagement at scale
  • IntercomIntercom — customer engagement with support and messaging
Pricing & data

Let's talk about what you're building.

30-minute call. No pitch deck. Just tell me what you're trying to build. I'll tell you how I'd approach it.

High StickersPAJ by ImparatoIris GaleriePlancton by PimpantKoudetatCHU NantesGuest SuiteAsmodeeRobin des Fermes #1Meme pas CapDrakkarHigh StickersPAJ by ImparatoIris GaleriePlancton by PimpantKoudetatCHU NantesGuest SuiteAsmodeeRobin des Fermes #1Meme pas CapDrakkar