Journeys

Build multi-step care programs that guide members through onboarding, treatment plans, and engagement sequences.

Intermediate
8 min read

Journeys

Journeys let you build multi-step programs that guide members through a series of steps over days, weeks, or months. Each journey is a directed graph of steps — some run in sequence, others in parallel, and some branch based on conditions.

Use journeys for:

  • Patient onboarding — Welcome message, insurance verification, intake form, first appointment scheduling
  • Chronic care management — Multi-week programs with check-ins, assessments, and escalation paths
  • Training programs — Sequential modules with prerequisites and completion tracking
  • Re-engagement campaigns — Automated outreach sequences with branching based on member responses

Journey Status

Every journey has a status that controls whether it accepts new enrollments and processes steps:

StatusWhat It Means
DraftBeing designed. Members cannot be enrolled.
ActiveAccepting enrollments and processing steps.
PausedTemporarily frozen. No steps advance, but enrolled members remain in place.
ArchivedRead-only. Historical reference only.

Creating a Journey

  1. Go to Journeys in your workspace
  2. Click New Journey
  3. Enter a name and optional description
  4. The journey starts in Draft status — you can design it fully before activating

Once you have added steps and connections, set the journey to Active to begin enrolling members.

Building the Step Graph

A journey is made up of steps connected by edges. Steps are the things that happen; connections control the order.

Step Types

TypePurpose
ActionExecutes a workflow or requires manual completion
WaitPauses progression until a trigger fires
CheckpointGate that requires all required parent steps to complete before proceeding
GoalTerminal step linked to a journey goal

Adding Steps

  1. Open your journey
  2. Click Add Step on the canvas
  3. Choose the step type
  4. Configure the step name, trigger, and optional workflow

Connecting Steps

Draw connections between steps to define the order of progression:

  • Click a step's output handle and drag to another step's input
  • A member moves from one step to the next when the parent step completes and the child step's trigger fires
  • You can connect one step to multiple children (branching) or multiple parents to one child (convergence)

Triggers

Each step has a trigger type that controls when it becomes eligible for a member:

TriggerHow It Works
ManualRequires explicit activation by staff or an AI agent
Time ElapsedFires a set number of seconds after the previous step completed. Configure the duration in the step settings.
Date RelativeFires relative to a date field on the member's enrollment (e.g., 7 days after enrollment). Configure the field name and offset.
Step CompletedFires when a specific other step completes. Select the target step in the configuration.
Tag MatchFires when the member gains matching labels. Specify which labels to watch for.
CEL ExpressionFires when a custom CEL expression evaluates to true. Write the expression in the trigger CEL field.

The journey's heartbeat periodically checks time-based triggers (Time Elapsed and Date Relative) and advances steps that are ready.

Connections and Conditional Branching

Connections between steps have two important properties:

  • Required — When a connection is marked as required, the child step cannot become eligible until this parent completes. Checkpoint steps require all required parents to complete.
  • CEL Condition — An optional CEL expression evaluated at runtime. If the condition is false, the edge is not followed — the child step is skipped. This enables conditional branching.

Example: After a screening step, you might have two connections:

  • Connection to "Schedule Appointment" with condition member.data.screening.risk_level == "high"
  • Connection to "Send Resources" with condition member.data.screening.risk_level == "low"

The member follows only the branch whose condition matches.

Evaluation Order

When multiple connections leave a step, the order field controls which conditions are evaluated first. Lower numbers are evaluated before higher numbers.

Goals

Goals represent the high-value outcomes of a journey — the end-states you are trying to achieve.

  • Goals are linked to goal-type steps in the journey
  • Each goal can have an optional monetary value for tracking ROI
  • When a member completes a goal step, the goal is marked as achieved

To create a goal:

  1. Open the journey
  2. Go to the Goals section
  3. Click Add Goal
  4. Enter a name, optional description, and optional value
  5. Link the goal to a goal-type step in the journey

Enrolling Members

Single Member

  1. Open the journey
  2. Go to the Members tab
  3. Click Add Member
  4. Search for and select a member
  5. Click Enroll

The member's enrollment starts immediately. Their first step(s) begin in pending status and advance to eligible once trigger conditions are met.

Bulk Enrollment with a Member Filter

  1. Click Add Member
  2. Choose Use a member filter
  3. Select or create a saved member filter to target a group
  4. Leave "Auto-enroll" unchecked for a one-time enrollment
  5. Click Enroll

All members currently matching the filter are enrolled at once.

Auto-Enrollment (Continuous)

Auto-enrollment continuously watches for new members who match a filter and enrolls them automatically.

  1. Click Add Member
  2. Choose Use a member filter
  3. Check Auto-enroll matching members continuously
  4. Click Enroll

The filter is saved on the journey. On every heartbeat cycle, the system re-evaluates the filter and enrolls any newly matching members who are not already enrolled.

When auto-enroll is active, the Members tab shows which filter is linked. You can change or remove the auto-enroll filter at any time.

You can also set an auto-enroll filter via the API or CLI:

bash

To remove it, set autoEnrollFilterId to null.

Note: Members who were previously unenrolled (canceled) are not automatically re-enrolled, even if they match the filter. This prevents unwanted re-enrollment of intentionally removed members.

Step Progression

Each member's progress through a step follows this lifecycle:

StatusMeaning
PendingStep exists but prerequisites are not yet met
EligibleAll prerequisites are satisfied and trigger conditions are met
In ProgressStep has been activated (workflow running, waiting for action)
CompletedStep finished successfully
SkippedBypassed (manual skip or conditional branch not taken)
FailedStep execution failed

When a step completes, the heartbeat evaluates downstream connections to determine which child steps should become eligible next. If all goal steps are completed, the member's journey is marked as completed.

Monitoring Progress

Viewing Enrolled Members

Open the journey's Members tab to see all enrolled members and their current status. Each enrollment shows:

  • Member name
  • Enrollment status (active, completed, canceled)
  • Current step progress
  • Enrollment date

Step Statuses

Click on a member's enrollment to see their step-by-step progress. Each step shows its current status and when it last changed.

Goal Progress

The Goals section shows aggregate progress — how many enrolled members have achieved each goal.

Re-Enrollment

If a member needs to go through a journey again, you can re-enroll them. A new enrollment is created, and the member starts from the beginning with fresh step statuses.

Unenrollment

To remove a member from a journey:

  1. Open the journey's Members tab
  2. Find the member's enrollment
  3. Click Unenroll or Cancel

The enrollment is marked as canceled. The member's progress is preserved for historical reference but no further steps will advance.

Journey Notes

Use the notes field on a journey to document internal context — design decisions, clinical protocols, or operational notes. Notes are visible only to workspace administrators and are not shown to members.

Automation with Actions

Journey lifecycle events can trigger Actions in the event rule system, letting you attach automation to key moments:

EventWhen It Fires
journey:enrolledA member is enrolled in a journey
journey:completedA member completes a journey
journey_step:dueA step's trigger time arrives
journey_step:enteredA member step transitions to in progress
journey_step:completedA member step transitions to completed

See Scheduled Events for more on attaching automation to events.

Tips

  • Start with a simple linear journey — Get comfortable with steps and triggers before adding branches.
  • Use checkpoints for convergence — When parallel branches need to rejoin, add a checkpoint that requires all parent steps.
  • Test in draft mode — Design and review the full step graph before setting the journey to active.
  • Use auto-enrollment carefully — Make sure your member filter is specific enough to avoid enrolling the wrong people.
  • Monitor failed steps — Check the Members tab regularly for steps that failed and may need manual intervention.