Adaptive Journeys

An Adaptive Journey is a published lifecycle workflow that responds to what people do. It can wait, branch, send letters, and compare letter variants against a conversion.

A journey is a directed graph of steps:

  • Trigger — the entry condition (an event, a schedule, or a segment entry)
  • Wait — a duration or until-event pause
  • Branch — routing only. On a rule or On engagement. See Engagement Branching
  • Send — a letter over email, in-app, or push
  • Experiment — send one of N variants of a single communication and let the conversion event pick the winner
  • Webhook — an outbound call to your own systems
  • Exit — the journey ends

Each step has a stable id and routes to a next step. Branches fan out. An Experiment step converges: every arm continues to the same next.

Adaptive Branch (Thompson sampling on a Branch) is retired. Legacy ones still execute. New tests use an Experiment step.

Experiment steps

An Experiment step compares versions of the same letter. Everyone continues down the same path.

  • Pick the communication. Its variants (authored side by side in the composer) become the arms.
  • On publish, that communication is frozen so the treatment cannot change mid-test. A plain Send delivers Control only. If a communication has variants, a Send is blocked at publish and you are steered to an Experiment step.
  • The winner is judged on a conversion event (not opens or clicks). A winner is decisive only when probability-to-be-best is high enough and each arm has enough people. Small tests report collecting or inconclusive.
  • Promotion is manual. After Apex names the winner, you decide whether to apply it to the communication.

Why "Adaptive"

Static drips ship the same sequence and hope. Adaptive Journeys respond to behavior and can test which letter converts, while the global holdout stays untouched.

You do not decide when variant B wins. The Experiment step does, from the conversion event.

How journeys differ from communications

CommunicationAdaptive Journey
ShapeA single letterA graph of steps
When it firesManual or a triggerTriggered and walked over time
OptimizationVariants inside the letterExperiment step across those variants; Branch only routes
StorageTenantCommunicationAdaptiveJourney (versioned)

A Send references an existing communication. You do not re-author copy inside the journey. Publish pins the communication version so in-flight people keep the version that was live at publish.

Versioning

Each publish creates an immutable v<n> record. In-flight executions stay on the version they started. New executions pick up latest.

You can edit a published journey freely. Changes live in the draft until you publish again. Publish to Production, Beta, or Dev.

Subjects

Journeys run on your customers (the person noun your workspace uses). Trigger and segment-entry checks run on a short EventBridge tick.

What you author vs what is automatic

You decide:

  • The shape of the graph
  • Which communication each Send uses
  • Which event starts entry
  • The conversion event and window
  • Which segment is eligible

The journey decides:

  • Which Experiment arm each person gets
  • Whether each Send is allowed (opt-out, suppression, frequency cap, holdout)
  • How to attribute the conversion event inside the window