When to Use Automations
If you’re sending straightforward transactional messages, you don’t need automations. The Send API handles rendering, routing, preferences, and delivery in a single call, and that’s the right choice for most notifications. Automations are for when your notification logic involves:- Timing - delays, scheduled delivery, or waiting for business hours
- Sequences - multi-step flows like onboarding or reminder chains
- Batching and digests - grouping events into a single notification
- Conditional logic - branching based on user data, delivery status, or external conditions
- Cancellation - aborting a flow when conditions change (e.g., user completes the action before a reminder fires)
Automation Components
Automations are built from three types of nodes: triggers that start workflows, actions that perform tasks, and control flow that adds logic.Trigger Nodes
Triggers define how an automation starts. Every automation has one entry point.| Trigger | Description |
|---|---|
| API Invoke | Start via POST /automations/:template_id/invoke. Default trigger type. |
| Schedule | Run at specific times using cron expressions, recurrence rules, or fixed dates. |
| Segment | React to Segment identify, group, or track events. |
| Audience | Fire when users match or unmatch an audience. |
| Inbound Event | Respond to events from connected sources. |
| Webhook | Start from external webhook calls. |
| Digest | Release accumulated digest events on schedule. |
Action Nodes
Actions perform tasks in your workflow.| Action | Description |
|---|---|
| Send | Deliver a notification to a user via any channel. |
| Send to List | Send to all subscribers of a Courier list. |
| Delay | Pause execution for a duration or until a specific time. |
| Fetch Data | Make HTTP requests and merge response into automation context. |
| Update Profile | Modify a user’s Courier profile. |
| Get Profile | Load a user profile into the automation context. |
| Invoke | Call another automation template. |
| Cancel | Cancel a running automation by its cancellation token. |
| Add to Batch | Accumulate events for batched delivery. |
| Add to Digest | Add events to a user’s digest. |
| Throttle | Rate-limit notifications per user or globally. |
Control Flow Nodes
Control flow adds conditional logic and branching.| Node | Description |
|---|---|
| If | Branch based on a single condition (true/false paths). |
| Switch | Route to the first matching condition from multiple cases. |
| Branch | Multi-path routing with condition groups (V3). |
- Data fields from the automation context
- Profile fields from the user profile
- Step Ref status of previous send steps (e.g.,
CLICKED,DELIVERED) - JS Expression for complex logic
Common Use Cases
User Onboarding
Create onboarding sequences that adapt to user progress:- Send welcome email immediately after signup
- Wait 24 hours, then check if user completed first action
- If not, send a reminder via push notification
- If completed, send a congratulations message
Batched Activity Notifications
Reduce notification fatigue by batching activity:- Collect events (likes, comments, mentions) as they occur
- After 1 hour of inactivity (or max 24 hours), release the batch
- Send a single notification summarizing all activity
Scheduled Digests
Send periodic summaries to users:- Configure a digest schedule in Preferences Editor
- Add events to the digest throughout the period
- Automation triggers at schedule time with accumulated events
- Send personalized digest notification
Agent-Human Collaboration
Build human-in-the-loop patterns for AI agents and automated systems:- Agent triggers an automation requesting human approval
- Send an actionable notification to Inbox (approve/reject buttons)
- Wait for user response via webhook or inbound event
- Branch on the response: proceed, escalate, or cancel
Getting Started
- Navigate to Automations in the Courier app
- Click New Automation to create a template
- Add a trigger node to define how the automation starts
- Add action nodes for each step in your workflow
- Add control flow for conditional logic
- Publish the automation to activate it
- Invoke via API or wait for trigger conditions