Kyle Seyler
November 26, 2025

Table of contents
When Does Nodemailer Stop Making Sense?
What Is Omnichannel Notification Infrastructure?
Why B2B Products Need More Than Transactional Email
How Courier Compares to Nodemailer
What Is a Notification Center and Why Does It Matter?
Slack and Microsoft Teams: The B2B Imperative
When to Migrate from Nodemailer to Courier
Getting Started
Use Courier with AI Agents via MCP
Nodemailer is a solid library. It does exactly what it promises: send emails from Node.js. For side projects, internal tools, and early-stage products, it's often the right choice. Free, flexible, no vendor lock-in.
But there's a moment every growing product hits where Nodemailer stops being a shortcut and starts being a bottleneck. You're not just sending password resets anymore. You're building notification infrastructure for B2B customer journeys that span email, Slack, Microsoft Teams, SMS, push, and in-app messages.
That's when you need something different.
Nodemailer handles transactional email well. But "email only" becomes a constraint fast when your users expect notifications where they actually work.
You've outgrown Nodemailer when:
At this point, you're not maintaining a library. You're maintaining infrastructure. And that infrastructure is pulling engineers away from your actual product.
Omnichannel notification infrastructure means one API, one template system, and unified delivery logic across every channel your users care about. Email, SMS, push notifications, in-app messages, Slack, Microsoft Teams, Discord, WhatsApp.
Instead of integrating each provider separately and writing custom routing logic, you define the message once and let the platform handle delivery based on user preferences, channel availability, and fallback rules.
This matters for B2B products especially. Your users aren't checking personal email during work hours. They're in Slack. They're in Teams. They expect your product to meet them there.
B2B customer journeys are more complex than consumer flows. A single workflow might involve:
Building this yourself means maintaining integrations with SendGrid (or SES), Twilio, Firebase Cloud Messaging, APNs, Slack's API, Microsoft Graph API, and whatever comes next. Each has its own authentication, rate limits, delivery semantics, and failure modes.
That's not a side task. That's a product unto itself.
Nodemailer is a library for sending email. Courier is a platform for notification infrastructure. They solve different problems.
| Capability | Nodemailer | Courier |
|---|---|---|
| Yes (SMTP) | Yes (any provider) | |
| SMS | No | Yes |
| Push notifications | No | Yes |
| In-app notification center | No | Yes |
| Slack notifications | No | Yes |
| Microsoft Teams notifications | No | Yes |
| Visual template editor | No | Yes |
| User preference management | No | Yes |
| Delivery analytics | No | Yes |
| Automatic failover | No | Yes |
| Provider abstraction | No | Yes |
With Nodemailer, you write code for every channel, every provider, every retry. With Courier, you call one API:
Copied!
const { CourierClient } = require("@trycourier/courier");const courier = CourierClient({ authorizationToken: "YOUR_AUTH_TOKEN" });await courier.send({message: {to: { user_id: "user_123" },content: {title: "Your report is ready",body: "Q3 analytics are now available in your dashboard."},routing: {method: "all",channels: ["email", "slack", "push"]}}});
That single call handles routing, templating, delivery, retries, and logging across every channel.
A notification center is an in-app inbox where users see all their notifications in one place. It's the bell icon you've seen in every modern SaaS product.
Users expect this now. They want to catch up on what they missed without digging through email. They want read/unread states that sync across channels. They want a single place to manage what notifications they receive.
Building a notification center from scratch takes months of engineering time. You need real-time updates, persistence, read state management, cross-channel sync, and a UI that matches your product's design.
Courier's Inbox SDKs give you pre-built, customizable components for web, iOS, Android, React Native, and Flutter. You can ship a production notification center in days instead of quarters.
Here's the reality of B2B notification delivery: your users spend their workday in Slack or Microsoft Teams. Email is where messages go to die.
If you want real-time engagement, you need to meet users in their collaboration tools. That means building and maintaining integrations with Slack's Bot API and Microsoft Graph.
Courier handles both natively. You configure the integration once, then route notifications to Slack or Teams based on user preferences or tenant configuration. Enterprise customers on Teams get Teams notifications. Startups on Slack get Slack notifications. Same template, same API call.
This is table stakes for B2B products selling to enterprises. Microsoft Teams support, in particular, is often a procurement requirement that catches teams off guard.
There's no universal answer. But here are signals that it's time:
Strong signals:
Weaker signals (still worth considering):
If you're only sending a handful of transactional emails and that's unlikely to change, Nodemailer is fine. If your notification needs are growing with your product, you're building infrastructure either way. The question is whether you build it yourself or use something purpose-built.
Courier has a free tier and usage-based pricing. You can start with email and add channels as you need them.
Create your account: app.courier.com/signup
The Node.js SDK installs in one command:
Copied!
npm install @trycourier/courier
From there, you can migrate existing email sends incrementally while adding new channels through the same API.
If you're building with AI-assisted development tools, Courier offers a Model Context Protocol (MCP) server that lets you manage notifications directly from your IDE.
Setup in Cursor:
mcp.json:Copied!
{"mcpServers": {"courier": {"url": "https://mcp.courier.com","headers": {"api_key": "YOUR_COURIER_API_KEY"}}}}
Pro tip: Courier MCP works best with Agent mode enabled.
What you can do with Courier MCP:
Full documentation: courier.com/docs/tools/mcp
Ready to move beyond DIY email infrastructure? Create your free account or talk to the team about your notification needs.

AI Tools for Product Managers: The Modern PM Stack
The modern PM stack runs on AI at every step: Cursor and Claude Code for build, Pencil and Claude Design for prototyping, Courier for notifications and agent communication, Segment for routing product events and engagement data, PostHog for analytics and LLM evals, and a knowledge system like Notion for shared memory across humans and agents.
By Kyle Seyler
April 28, 2026

The AI Node in Journeys: Smarter Branching, Personalized Messages, and Live Enrichment
Courier Journeys now includes an AI node that you can drop into any customer journey. Use it to branch on logic too nuanced for if/then, generate message copy shaped by each user's context, enrich profiles with live data mid-flow, and batch activity into recurring digests. Existing deterministic journeys keep working. The AI node is additive, not a replacement, and it lets you unlock the kind of personalization that used to require a dedicated ML team. Here's what it does and how to use it.
By Kyle Seyler
April 23, 2026

Your Notification Center, Your Competitive Edge
The in-app inbox is the most valuable notification surface you own. Every other channel has a gatekeeper: push, email, and SMS all run through someone else's filters. The inbox is the one surface where you set the rules. Courier Inbox ships as a drop-in component backed by a hosted API that stores messages, syncs read state across devices in real time, and integrates with your other channels. SDKs for React, Web Components, React Native, Flutter, iOS, and Android. Install it with an AI coding agent or a few lines of code. Theme it, customize the renderers, or go fully headless.
By Kyle Seyler
April 22, 2026
© 2026 Courier. All rights reserved.