Skip to main content

Creating Journeys

Journeys are multi-step orchestrated experiences that guide users through complex workflows over time. Unlike individual flows (which run within a single session), journeys span multiple sessions and can include delays, conditions, and branching logic.

Journeys vs. Flows

FlowsJourneys
ScopeSingle session, single page or featureMultiple sessions, multiple features
DurationSeconds to minutesHours to weeks
StepsTooltips, modals, beaconsContent items (including flows), surveys, wait periods, conditions
Use caseFeature walkthrough, tooltip tourOnboarding program, training path, adoption campaign

Creating a Journey

  1. Navigate to Content > Journeys in the dashboard.
  2. Click Create New Journey.
  3. Enter a name and description.
  4. Open the journey builder to add and connect steps (see Journey Builder).
  5. Configure enrollment rules (see Enrollment below).
  6. Click Publish when ready to launch.

Journey Statuses

Every journey has a lifecycle status that controls whether it accepts new enrollments:

StatusDescription
DRAFTJourney is being designed. No users are enrolled.
PUBLISHEDJourney is live. New users matching the enrollment criteria are enrolled automatically.
PAUSEDJourney is temporarily suspended. Enrolled users stop progressing but retain their position.
ARCHIVEDJourney is hidden from the active list. Historical data remains accessible.

Per-user state (whether a given user is ACTIVE, COMPLETED, STOPPED, or ARCHIVED within the journey) is tracked separately as enrollment status and is returned by GET /api/journeys/:id/enrollments.

Enrollment

Control how users enter a journey:

  • Auto-enroll -- Automatically enroll users who match a target audience. New users who satisfy the audience rules are enrolled as soon as the journey is PUBLISHED.
  • Manual enrollment -- Enroll specific users or user lists via the dashboard or API.

Users can only be enrolled in a given journey once. If a user exits early, you can choose whether to allow re-enrollment.

Anonymous Enrollment

Set allowAnonymous: true on the journey to enroll users who have not yet been identified via DAP('identify'). The SDK can then call /sdk/journeys/:id/enroll and /sdk/journeys/:id/progress with an anonymousId instead of a userId. Use this for top-of-funnel onboarding (e.g., marketing-site visitors) where you do not yet have a stable user identifier. Anonymous enrollments are stitched to a real user record once the visitor identifies.