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
| Communication | Adaptive Journey | |
|---|---|---|
| Shape | A single letter | A graph of steps |
| When it fires | Manual or a trigger | Triggered and walked over time |
| Optimization | Variants inside the letter | Experiment step across those variants; Branch only routes |
| Storage | TenantCommunication | AdaptiveJourney (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