Courier offers three ways to send notifications, from a single API call to fully managed journeys. Start simple, add orchestration only when you need it.
Courier gives you a sending model that can grow with your product. Start with a single API call for straightforward notifications, then add templates, workflows, and orchestration as your messaging needs become more sophisticated.There are three levels of sending in Courier: Inline Send, Templates, and Journeys. Each level builds on the last, so you can choose the right approach for each part of your product.
Send a notification with content defined directly in your API call. No templates, no workflows; just one request.This is ideal for transactional messages where the content is generated by your app: password resets, verification codes, order confirmations, alert payloads.
Separate content from code by referencing a saved template. Your team designs and updates notifications in Courier’s visual editor; your code just triggers the send with data.This is ideal when non-engineers need to edit copy, when you want consistent branding across channels, or when the same notification is sent from multiple places in your codebase.
Use this when: content is managed by PMs, designers, or ops; you want to update messaging without deploying code; or you send the same notification type from multiple services.
Templates handle routing, channel-specific content, and localization in one place. Your send call stays the same regardless of how many channels or languages you support.
When messaging involves multiple steps, timing, branching, enrichment, or user behavior, use Journeys. Journeys are visual workflows that run on Courier’s infrastructure and orchestrate customer messaging across channels.This is ideal for onboarding flows, activation nudges, reminder chains, re-engagement campaigns, and any messaging experience that needs more than a single send.
// Invoke a journey via API{ "journey_id": "onboarding-sequence", "user_id": "user_123", "data": { "plan": "pro", "signup_date": "2026-02-10" }}
A journey can include:
Send nodes to deliver messages through email, SMS, push, or inbox
Branches to route users down different paths based on data or behavior
Delays to pause execution for a duration or until a specific time
Fetch Data to enrich the workflow with external data
AI Agent to generate, classify, or transform content and data inside the workflow
Experiment nodes to test different paths, messages, or strategies
Throttle to limit how often users pass through a point in the journey
Run inspection to debug what happened for a specific user at every node
You can use all three levels across different parts of your product. A password reset can be an inline send while an onboarding flow uses Journeys; they share the same users, preferences, and delivery infrastructure.