Your App → Courier API → Providers → User
You decide what to send and who should receive it. Courier manages how it gets there. It handles routing, preferences, retries, and logging automatically. Here’s a example of sending a very simple email. Learn more about sendingCore Concepts
Every send request in Courier is built around a few core ideas that define how notifications reach your users. Understanding these will help you design consistent, user-aware notification experiences. RecipientsDefines who should receive the notification. You can include recipient details (eg email address, phone number, push token) directly in your API request or reference a
user_id linked to a stored Courier user profile.
TemplatesYou can define message content inline in your API request or use a saved template. Templates are reusable designs stored in Courier that keep messages consistent across channels and easy to update without code changes. Learn more in the Template Designer overview. Data
Provides the dynamic variables used to personalize a message. For example, include values like
{{name}} or {{order_id}} to render context-specific content inside your template. Learn how to include data in your send request in the Inserting Variables guide.
RoutingSpecifies how the message is sent. Choose a single channel, send through all available channels, or use a priority order for automatic fallback. See Channel Priority for details on routing methods. User Preferences
Controls how and when each user receives notifications. Courier automatically checks a user’s preferences before sending, ensuring you respect their channel choices, frequency settings, and opt-outs. Learn more in the Preferences Overview.
These concepts work together in every send request.
You define the content, recipients, and intent, and Courier handles routing, personalization, and user-specific preferences automatically.