
Choose a trigger type when creating a new journey: Segment event or API
API Invoke
The API trigger introduces a contract between your application and Courier. You define a schema on the trigger (field names and types), and Courier uses it to power autofill and variable hints throughout the journey editor. Any field you declare becomes available as a variable in every downstream node. Courier does not reject invocations that omit schema fields. If your payload is missing a field that a node references, the journey will proceed until it reaches that node and then fail there. Defining an accurate schema keeps things predictable and makes building in the editor much faster.Define a Schema
When you configure an API trigger, you add schema fields. Each field has a name and a type.
API trigger with four schema fields defined: order_id (String), order_total (Number), is_first_order (Boolean), order_date (Datetime)
Invoke via API
Send a POST request to start the journey for a user. Endpoint:POST /journeys/{journeyId}/invoke
The request body accepts three optional fields. At minimum, you must provide either user_id or a profile with contact information (like an email address).
runId you can use to track the journey execution in Run Inspection.
Invoke with Profile Only
If you don’t have a stored Courier user, you can invoke with just aprofile containing contact information. Courier will use the profile data to deliver messages without requiring a user ID.
Profile Enrichment
When you invoke a journey with auser_id, Courier loads the user’s stored profile and merges it with any profile data you include in the request. Request fields override stored fields with the same key; stored fields not present in the request are preserved.
Tenant-Scoped Profiles
If your application uses tenants, include the tenant ID in the profile context. Courier will load the user’s tenant-scoped profile data.cURL Preview
The journey editor generates a ready-to-use cURL command for every API-triggered journey. Click Show next to “Invoke cURL” in the trigger configuration panel to see the command with your journey ID and schema fields pre-filled.
The Invoke cURL panel generates a ready-to-use command with your schema fields pre-filled as placeholders
Error Handling
Segment
The Segment trigger connects a journey to your existing Segment event stream. When Courier receives an event that matches your trigger configuration, the journey starts automatically. No API integration is required; if you already send events to Segment, those same events can trigger journeys in Courier. This makes Segment triggers useful for behavioral flows driven by events you already track: feature adoption, lifecycle milestones, or engagement signals. Segment acts as a centralized event bus; the same events that push to your analytics tools, CRM, and marketing platforms can now drive notification workflows in Courier.
Segment trigger configuration with a Source Event dropdown showing available events from your Segment workspace
Supported Event Types
Event Filtering
You can narrow which events trigger the journey by adding conditions. Conditions evaluate fields from the Segment event payload (event name, properties, traits) and only start the journey when all conditions are met. For example, a journey triggered byTrack events could filter for event = "Order Completed" and properties.total > 100 to only run for high-value orders.

Journeys will automatically detect your data type and adjust the operator accordingly.
Trigger Conditions
Both API and Segment triggers support optional conditions. Conditions are evaluated before the journey starts; if any condition fails, the invocation is rejected (API returns422) or the event is ignored (Segment).
track events, the userId in the event has to be a valid Courier Profile ID otherwise the Journey will not be invoked.