
Last updated: November 2026
Courier vs Customer.io is a choice between two ways of running customer messaging. Both send across email, push, SMS, and in-app. Courier is a customer messaging platform that people and AI agents both operate, with journeys and broadcasts for campaigns. Customer.io is a lifecycle marketing platform that also sends transactional messages.
Courier fits most product, growth, and engineering teams better than Customer.io, because it bills per send instead of per profile. Journeys, experiments, broadcasts, an in-app inbox, preferences, and 50+ delivery providers sit on one platform that people and AI agents both operate.
| Courier | Customer.io | |
|---|---|---|
| Pricing model | Per send, any channel | Per profile and object in the billing cycle |
| Free plan | The Developer plan is free and includes 10,000 sends a month | No free plan. Startup Program gives a free year under $10M raised |
| Entry paid plan | $0.005 per send, pay as you go | Essentials from $100 a month, 5,000 profiles and 1M emails |
| Channels | Email, SMS, mobile and web push, in-app inbox, Slack, Microsoft Teams, WhatsApp, webhooks | Email, push, in-app, inbox, SMS, WhatsApp, Slack, webhooks, plus LINE |
| Microsoft Teams | Native customer-facing channel | Not one of its channels |
| Slack | Customer-facing channel with DMs and multi-workspace auth | Internal team alerts |
| Provider abstraction | 50+ providers with routing and automatic failover | Channel execution, no documented failover |
| Visual journey builder | Journeys, with send windows, an AI node, and Experiments | Journeys, with multivariate campaign testing |
| Drop-in UI components | Inbox, Toasts, preference center, Courier Create | Inbox and in-app messages via web and mobile SDKs |
| Self-hosting | No, cloud only | No, cloud only |
| AI tooling | MCP server, CLI, Courier Skills, AI node, AI Translations | MCP, CLI, and an AI Agent for campaign work |
| Best for | Product notifications plus lifecycle, run by engineers, marketers, and AI agents together | Marketer-led lifecycle campaigns on profile data |
Courier connects product events and profile data to messages across channels. Your app fires an event, and Courier picks the channel and provider, renders the template, applies preferences, and sends. Journeys, Broadcasts, Experiments, Inbox, Design Studio, Preferences, and Routing sit on one platform, so transactional and lifecycle messages need one stack. Twilio, LaunchDarkly, CircleCI, and Nav run on it.
Everything in Courier's UI is available via the API, CLI, and MCP server. Journeys, templates, brands, routing, preferences, audiences, tenants, users, and translations are first-class API objects. A marketer builds a journey on the canvas, an engineer manages it as code, and an AI agent edits it through the MCP server. Courier Create goes further: embed a branded, no-code designer in your own product, scoped per tenant, so your customers design their own messages. Here's how journeys work as code.
Customer.io is a marketing automation platform built around customer profiles.
Courier integrates with 50+ providers including SendGrid, Twilio, SES, APNs, Firebase, and Slack. It sits on top of what you already use. Providers sit behind an abstraction, so you swap or combine them per channel without rewriting send logic. If your primary email provider goes down, Courier fails over on its own. Routing also falls back across channels: if a push can't be delivered, Courier tries email, then SMS. Courier delivers natively to Slack and Microsoft Teams with DMs, channel messages, and email fallback.
SDKs cover Node.js, Python, Go, Ruby, Java, PHP, and C# on the server, plus JavaScript, React, iOS, Android, Flutter, and React Native on the client. See how push fallbacks work.
Customer.io documents email, push, in-app, inbox, SMS, WhatsApp, Slack, and webhooks plus LINE, with SDKs for web, iOS, Android, React Native, Flutter, and Expo. Its Slack support posts internal alerts to your own workspace, not customer-facing DMs with multi-tenant auth.
Both have visual journey builders. What differs is how flows trigger and who operates them afterward.
Courier Journeys start from an API call, an inbound webhook, a CDP event, or the moment a user matches an audience. Nodes cover Send, Branch, Delay, Fetch Data, Throttle, Batch, Digest, and AI, plus send windows in the user's time zone. When a user does the thing you were nudging them toward, your app cancels the run and the remaining steps stop. Separate test and production environments keep changes away from customers until you publish, and Courier's customer journey tooling covers onboarding, upgrade, and renewal flows.
Experiments live inside a journey. At any send point, test 2 to 10 template variants split by weight, with per-variant metrics. Recipients stay in the same variant. Broadcasts are separate: a one-off send to a whole list or audience, with your preferences and routing applied.
Customer.io's journey builder includes multivariate testing and conversion tracking.
Yes, Customer.io has a notification inbox, one per workspace.
Courier Inbox is a real-time notification center you drop into your product or build on headlessly. It tracks read state, supports filtering and archiving, syncs across devices, and ships with SDKs for React, JavaScript, iOS, Android, Flutter, and React Native. Toasts cover in-app pop-ups. Inbox runs on the same send pipeline as your other channels, so one template can reach email and Inbox together, with the same preferences and tenant context. See what it takes to build a notification center.
Add a language and Courier's AI Translations handle the whole template, subject lines and buttons included, with side-by-side review before you publish. Change the source copy and Courier flags what is out of date. Courier then picks the language per recipient at send time, in the same pipeline as routing and preferences. Customer.io also has an AI translator in its Design Studio.
Courier's preference system covers a hosted preference page, an embeddable web component you theme, and headless APIs for your own UI. Topics and sections, per-topic channel choices, and digest subscriptions are all first class. Users pick channels per topic, an opt-out blocks the whole topic, and Courier enforces it on every send. For B2B products, each tenant sets its own preference defaults. See how to launch a hosted preference center.
Customer.io's subscription center treats topics and channels as separate layers, and its FAQ confirms there's no per-topic channel choice.
Pricing is the clearest reason product teams pick Courier.
Courier is send-based and public. Developer is free with 10,000 sends a month and includes Journeys, Broadcasts, the MCP server, the CLI, and the SDKs. Business is $0.005 for every send on any channel, pay as you go with no volume cap. It adds AI Translations, the AI node, and EU data residency, with AI features running on AI credits at $1 per 100. Enterprise is custom volume pricing with an Enterprise SLA, role-based access control, a dedicated Slack channel, and observability integrations.
An in-app notification costs the same as an email, with no per-seat fees. In a journey, each Send node delivers one channel, so a journey that sends email and Inbox counts two sends.
Customer.io is profile-based, billed on "your account's maximum number of uniquely identified people and objects," per its pricing page. Essentials includes 5,000 profiles and 1 million emails a month. Overage is $0.009 per profile and $0.12 per 1,000 emails, and Premium starts at $1,000 a month billed yearly. Plan prices are starting prices, so your real number needs a quote. There is no free tier, though the Startup Program gives a full year free if you have raised under $10M.
Dormant users stay on the bill. Customer.io counts every profile that existed at any point in the billing period, including profiles you deleted during it (how Customer.io bills). Its own guidance is to run a sunset policy that deletes unengaged profiles, and to make sure integrations don't re-add them, because a re-added profile counts twice (reducing overages). On Courier, a user you don't message costs nothing, so there is nothing to prune.
A product with 100,000 registered users sending 30,000 targeted emails a month pays $150 a month on Courier: 30,000 sends at $0.005. On Customer.io, those 100,000 profiles are 95,000 over the Essentials allowance. At the published $0.009 overage that is $855 a month in profile overage on top of the $100 Essentials base, so about $955 a month. Courier's figure excludes your email provider's fees; Customer.io's includes email delivery. Send-based pricing wins when your user base is large or partly dormant.
Choose Courier if product events drive your notifications, your user base dwarfs your send volume, or you need an in-app inbox and per-tenant preferences.
Courier is a customer messaging platform that runs product notifications and lifecycle campaigns, and Customer.io is a lifecycle marketing platform that also sends transactional messages. Courier bills per send and fronts 50+ delivery providers with one API. Customer.io bills per profile and centers on marketing segmentation.
Courier is a strong Customer.io alternative for most product, growth, and engineering teams. It covers the same core channels, adds Microsoft Teams and customer-facing Slack, and gives you a notification center, per-topic channel preferences, and an API a person or an AI agent can drive.
Yes, when your audience is large relative to what you send. Courier charges $0.005 per send while Customer.io charges per profile. At 100,000 users and 30,000 emails a month, that's $150 on Courier and about $955 on Customer.io Essentials, before your email provider's fees.
Courier and Customer.io overlap on email, push, SMS, in-app, and WhatsApp. Courier adds Microsoft Teams and customer-facing Slack with per-user DMs, and connects to 50+ providers with failover between them.
Both do. Courier Inbox is a notification center on web and mobile, drop-in or headless, with read state, filtering, and archiving, and it shares the send pipeline with your other channels. Customer.io offers in-app messages and a notification inbox, one per workspace.
Yes. Courier Experiments test 2 to 10 template variants at any send point inside a journey, split by weight, with per-variant metrics and sticky assignment.
Courier. It offers a hosted preference page, an embeddable web component, and headless APIs, with per-topic channel choices and per-tenant defaults enforced on every send. Customer.io's subscription center treats topics and channels as separate layers, without per-topic channel choice.
Moving from Customer.io? The Customer.io migration guide maps automations, transactional messages, and preferences to Courier, with a worked example.
For most product, growth, and engineering teams, Courier is the better choice and a clean replacement for Customer.io: one platform for product notifications and lifecycle journeys, billed for the messages you send, not the profiles you store.
Start free with 10,000 sends a month, fire a journey, split a send into an experiment, and drop in the Inbox, or book a demo.

Catch broken lifecycle journeys with synthetic users and AI
Paste one prompt into a coding agent and get a local test of your onboarding journey: synthetic users, real timing, and every send explained. Catch stale reminders before your customers do.

Test Courier emails end to end with your AI agent
Give your coding agent an AgentMail inbox, and it can test your Courier emails the way a user would: send the change, check what arrives, review how it renders, and fix what it finds before the change reaches Production.

Let your agent check every email before it ships
Courier Device Preview gives your coding agent real screenshots from Outlook, Gmail, and Apple Mail. Here's the prompt and workflow to have it check every email, fix the draft, and check again before you publish.