Automate your notification logic without writing it
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.



bolt
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
