Courier lets you orchestrate notification flows—branch, delay, throttle, batch, and digest messages—using our visual builder or API. Build powerful logic without writing glue code or redeploying your app.

Batch

Use notification batching to group related messages and reduce noise. Keep communication clear during high-activity periods so users stay focused, engaged, and free from alert fatigue.

Use notification batching to group related messages and reduce noise. Keep communication clear during high-activity periods so users stay focused, engaged, and free from alert fatigue.

Use notification batching to group related messages and reduce noise. Keep communication clear during high-activity periods so users stay focused, engaged, and free from alert fatigue.

Throttle

Throttle notifications to control volume and prevent overload. Limit message frequency during busy periods to reduce fatigue and maintain user trust.

Throttle notifications to control volume and prevent overload. Limit message frequency during busy periods to reduce fatigue and maintain user trust.

Throttle notifications to control volume and prevent overload. Limit message frequency during busy periods to reduce fatigue and maintain user trust.

Digest

Use notification digests to combine multiple updates into a single message. Deliver a clear summary at the right time so users stay informed without being distracted by a stream of individual alerts.

Use notification digests to combine multiple updates into a single message. Deliver a clear summary at the right time so users stay informed without being distracted by a stream of individual alerts.

Use notification digests to combine multiple updates into a single message. Deliver a clear summary at the right time so users stay informed without being distracted by a stream of individual alerts.

Switch

Use Switch to branch your workflow based on dynamic inputs. Evaluate user traits, event payloads, or message metadata to control logic flow and deliver the right outcome per condition.

Use Switch to branch your workflow based on dynamic inputs. Evaluate user traits, event payloads, or message metadata to control logic flow and deliver the right outcome per condition.

Use Switch to branch your workflow based on dynamic inputs. Evaluate user traits, event payloads, or message metadata to control logic flow and deliver the right outcome per condition.

Delay

Use Delay to pause workflow execution for a set duration. Control timing between steps by waiting minutes, hours, days, or even weeks before proceeding to the next block.

Use Delay to pause workflow execution for a set duration. Control timing between steps by waiting minutes, hours, days, or even weeks before proceeding to the next block.

Use Delay to pause workflow execution for a set duration. Control timing between steps by waiting minutes, hours, days, or even weeks before proceeding to the next block.

Automate your notification logic
without writing it

Automate your notification logic without writing it

Courier’s Automations API lets you programmatically create, update, and trigger workflows. Define custom logic, override existing automations, and integrate notification orchestration directly into your application.

Courier Inbox delivers real-time in-app messaging to your product with the reliability and polish users expect. Lightweight, platform-specific SDKs, integrate cleanly and give you full control over look and feel.

Node.js

Ruby

Python

Go

PHP

import { CourierClient } from "@trycourier/courier";
const courier = CourierClient({ authorizationToken: "******************" });

// Example: send a message supporting email & SMS
const { messageId } = await courier.send({
  eventId: "courier-quickstart",
  recipientId: "37e2c08c-3958-449a-8266-dea286807f65",
  profile: { },
  data: {
    blueiables: "awesomeness",
  },
});

Node.js

Ruby

Python

Go

PHP

import { CourierClient } from "@trycourier/courier";
const courier = CourierClient({ authorizationToken: "******************" });

// Example: send a message supporting email & SMS
const { messageId } = await courier.send({
  eventId: "courier-quickstart",
  recipientId: "37e2c08c-3958-449a-8266-dea286807f65",
  profile: { },
  data: {
    blueiables: "awesomeness",
  },
});

Node.js

Ruby

Python

Go

PHP

import { CourierClient } from "@trycourier/courier";
const courier = CourierClient({ authorizationToken: "******************" });

// Example: send a message supporting email & SMS
const { messageId } = await courier.send({
  eventId: "courier-quickstart",
  recipientId: "37e2c08c-3958-449a-8266-dea286807f65",
  profile: { },
  data: {
    blueiables: "awesomeness",
  },
});

import { CourierClient } from "@trycourier/courier";
const courier = CourierClient({ authorizationToken: "******************" });

// Example: send a message supporting email & SMS
const { messageId } = await courier.send({
  eventId: "courier-quickstart",
  recipientId: "37e2c08c-3958-449a-8266-dea286807f65",
  profile: { },
  data: {
    blueiables: "awesomeness",
  },
});

import { CourierClient } from "@trycourier/courier";
const courier = CourierClient({ authorizationToken: "******************" });

// Example: send a message supporting email & SMS
const { messageId } = await courier.send({
  eventId: "courier-quickstart",
  recipientId: "37e2c08c-3958-449a-8266-dea286807f65",
  profile: { },
  data: {
    blueiables: "awesomeness",
  },
});

The all-in-one notification platform for developers

Ready to take your notifications to the next level?

Backed by

Backed by

Backed by

Backed by