Skip to main content

Overview

Journeys are multi-step customer engagement workflows that orchestrate a sequence of decisions, waits, branches, and actions over time. Unlike a single decision flow that produces an instant recommendation, a journey guides a customer through a series of interactions over days or weeks.
Journeys are an Enterprise tier feature. See Licensing & Tiers for details.

Visual Flow Editor

Journeys are built using a visual drag-and-drop flow editor. Each journey is a directed graph of steps connected by transitions. The editor supports:
  • Drag-and-drop step placement
  • Visual connection of steps with edges
  • Step configuration panels
  • Real-time validation of flow structure

Step Types

Step TypeIconDescription
waitClockPause the journey for a specified duration
decideBrainExecute a decision flow and select the best offer
branchSplitEvaluate conditions and route the customer down different paths
sendSendDeliver a recommendation through a channel
updatePencilUpdate customer attributes or segment membership

Wait Step

Pauses the journey for a configurable duration before proceeding to the next step.
{
  "type": "wait",
  "config": {
    "duration": 3,
    "unit": "days"
  }
}
Supported units: minutes, hours, days.

Decide Step

Executes a decision flow to select the best offer for the customer at this point in the journey.
{
  "type": "decide",
  "config": {
    "decisionFlowId": "df_personal_loans",
    "maxOffers": 1,
    "storeResultAs": "loan_recommendation"
  }
}

Branch Step

Evaluates conditions and routes the customer to different subsequent steps based on the result.
{
  "type": "branch",
  "config": {
    "conditions": [
      {
        "label": "Converted",
        "expression": "outcome == 'conversion'",
        "targetStepId": "step_thank_you"
      },
      {
        "label": "Clicked but no conversion",
        "expression": "outcome == 'click'",
        "targetStepId": "step_followup"
      }
    ],
    "defaultTargetStepId": "step_reminder"
  }
}

Send Step

Delivers a recommendation or message through a specified channel.
{
  "type": "send",
  "config": {
    "channelId": "ch_email",
    "creativeId": "treat_loan_email_v1",
    "resultSource": "loan_recommendation"
  }
}

Update Step

Modifies customer data — updates attributes, adds or removes segment membership, or sets internal flags.
{
  "type": "update",
  "config": {
    "operations": [
      { "type": "set_attribute", "key": "journey_stage", "value": "followup_sent" },
      { "type": "add_segment", "segment": "loan_interested" }
    ]
  }
}

Journey Configuration

FieldTypeDescription
namestringJourney name
descriptionstringDescription of the journey’s purpose
maxDurationnumberMaximum journey duration in days
statusenumLifecycle status
stepsarrayOrdered list of journey steps
entryConditionsobjectCriteria for customer enrollment

Status Lifecycle

draft → active → paused → archived
StatusDescription
draftBeing designed; no customers are enrolled
activeLive; new customers can be enrolled and existing customers progress
pausedNo new enrollments; existing customers are paused in place
archivedPermanently retired; all enrolled customers are exited
Archiving a journey immediately exits all enrolled customers. Any in-progress steps are terminated. Use pause instead if you want to temporarily halt without losing journey state.

Creating a Journey

1

Navigate to Journeys

Go to Studio > Journeys in the sidebar.
2

Click Create Journey

Click the + New Journey button.
3

Name the journey

Enter a name and description for the journey.
4

Set max duration

Configure the maximum number of days a customer can remain in the journey.
5

Build the flow

Use the visual editor to add steps, configure each step, and connect them with transitions.
6

Define entry conditions

Specify which customers should be enrolled (segment membership, event triggers, or manual enrollment).
7

Validate

Click Validate to check the journey structure for errors (unreachable steps, missing configurations).
8

Save and activate

Save as draft, test with a sample customer, then set status to active when ready.

API Reference

Create a Journey

POST /api/v1/journeys
Content-Type: application/json
Request body:
{
  "name": "Personal Loan Nurture",
  "description": "3-week nurture journey for loan-interested customers",
  "maxDuration": 21,
  "status": "draft",
  "entryConditions": {
    "segments": ["loan_interested"],
    "minDaysSinceLastJourney": 30
  },
  "steps": [
    {
      "id": "step_initial_offer",
      "type": "decide",
      "config": { "decisionFlowId": "df_personal_loans", "maxOffers": 1 }
    },
    {
      "id": "step_send_email",
      "type": "send",
      "config": { "channelId": "ch_email", "resultSource": "step_initial_offer" }
    },
    {
      "id": "step_wait_3d",
      "type": "wait",
      "config": { "duration": 3, "unit": "days" }
    },
    {
      "id": "step_check_response",
      "type": "branch",
      "config": {
        "conditions": [
          { "label": "Converted", "expression": "outcome == 'conversion'", "targetStepId": "step_end" }
        ],
        "defaultTargetStepId": "step_followup"
      }
    }
  ]
}
Response (201 Created):
{
  "id": "jrn_loan_nurture",
  "name": "Personal Loan Nurture",
  "status": "draft",
  "maxDuration": 21,
  "stepCount": 4,
  "createdAt": "2026-03-10T14:30:00Z",
  "updatedAt": "2026-03-10T14:30:00Z"
}

List Journeys

GET /api/v1/journeys

Update a Journey

PUT /api/v1/journeys/:id
Active journeys can only be updated with non-structural changes (name, description). To modify steps, pause the journey first.

Delete a Journey

DELETE /api/v1/journeys/:id
Only draft journeys can be deleted. Active/paused journeys must be archived first.