
Mike Miller
January 08, 2026

In-app notifications are only useful if users can actually find what they’re looking for. As your product grows, one inbox list starts to break down—comments, mentions, and updates all end up mixed together. The result is noise, not signal.
That’s why we built Tabs for Courier Inbox.
Tabs let you organize Inbox messages into clear, focused views—so users can jump straight to the category that matters, and teams don’t have to build custom filtering UX or maintain multiple notification surfaces. You define the views, Courier Inbox handles the rest.

Tabs are a pattern users already know. When notifications start to pile up, tabs are the simplest way to break one stream into a few clear categories—without adding a new navigation layer or forcing users to hunt.
That’s the same idea behind Courier Inbox tabs: each tab is a different view of your Inbox, tuned to a specific type of message so users can get to the right notifications faster.

In Courier Inbox, a tab is a filtered view of messages. Instead of building your own “notifications categories” UI, you define tabs with a simple filter object—and Courier Inbox renders each tab as a focused inbox view.
All filtering happens at the tab level. Each tab can use one or more filters, including:
tags to show specific notification typesstatus to filter by read/unreadarchived to include archived notificationsFilters are composable, so you can create tabs like “Mentions”, “Comments”, or “Reactions”—and combine criteria when you need to (for example, “Unread Mentions”).
Here’s a minimal example that creates a single Inbox feed with tabs for different notification types, plus a tab that combines filters.
import { useEffect } from "react";import { CourierInbox, useCourier } from "@trycourier/courier-react";export default function App() {const courier = useCourier();useEffect(() => {courier.shared.signIn({userId: YOUR_USER_ID,jwt: YOUR_JWT, // generate on your backend});}, []);const feeds = [{feedId: "notifications",title: "Notifications",tabs: [{datasetId: "all",title: "All",filter: {},},{datasetId: "comments",title: "Comments",filter: { tags: ["comment"] },},{datasetId: "mentions",title: "Mentions",filter: { tags: ["mention"] },},{datasetId: "mentions-unread",title: "Unread Mentions",filter: { tags: ["mention"], status: "unread" },},{datasetId: "archived",title: "Archived",filter: { archived: true },},],},];return <CourierInbox feeds={feeds} />;}
Tabs are a small feature with a big payoff: a cleaner Inbox, faster scanning, and less notification noise as your product grows. Start with a single feed and a few type-based tabs, then add more views as you learn what users reach for most. Because tabs are just filtered views of the same Inbox, you don’t need a new delivery pipeline or duplicate message streams—you’re simply organizing what’s already there.
Ready to try it? See our docs for Tabs for Courier Inbox.

Experiments: A/B test your messages inside Journeys
Experiments bring A/B testing into Journeys. On any send node, run 2 to 10 message variants, split traffic by weight, and Courier buckets each recipient deterministically, keeping them in the same variant across sends. Compare sent, delivered, open, and click rates per variant, then promote the one you want, without leaving your journey or bolting on a separate testing tool.

AI Translation: localize any template in seconds
Courier AI Translation brings built-in localization to Design Studio. Add a language to any template and AI translates every string in seconds. Works across email, SMS, push, in-app, and chat. Review side by side, override anything, and publish from the same editor you already use.

Inbox SDKs for Vue and Angular: a native in-app notification center
Courier now ships first-class inbox SDKs for Angular and Vue. Drop in a real-time notification center, toasts, and a preferences center with native components, an injectable service, and a composable, all backed by the same in-app inbox that already powers React and JavaScript apps.
© 2026 Courier. All rights reserved.