DocumentationBring your customers and everything they do into Boom, then put an AI agent in conversation with them: win-backs, support, research, onboarding, qualifying leads, collecting what you need.
# Journeys
Source: https://docs.useboom.ai/journeys
The versioned workflow behind an initiative. Build it, validate it, and publish it, all over the API.
A journey is the step-by-step workflow a person moves through inside an initiative: a message, a wait, an AI-led conversation, a branch, all the way to an exit. It is fully authorable over the API and MCP, not read-only. You build a draft node by node, wire the connections, set how people enter, then validate and publish.
## Journey, initiative, run
Every journey belongs to exactly one initiative. A new initiative arrives without one, so building the first draft is your first step after creating it, and an initiative cannot launch until that draft exists and validates. From there the initiative can carry several journey versions over its life:
```
Initiative "Renewal reminder"
Journey v1 STOPPED (superseded by v2; its runs ran to completion)
Journey v2 PUBLISHED (live, one run per enrolled person)
Journey v3 DRAFT (being edited)
```
Each enrollment creates its own run against the version that was live at the moment the person entered. `journeys_list` and `journeys_get` return the read-only summary of a journey (its trigger and ordered steps, in plain language). `journeys_get_definition` returns the full editable graph, the shape you build with and save back.
## Node kinds
Discover these from `journeys_authoring_catalog` rather than hardcoding them: it returns every kind's inputs, its output handles (the signals it can emit), and the connection rules, scoped to what your organization actually has enabled.
| Node | What it does | Notable rule |
| --------------------- | ------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `ENTRY` | Where people start: manual, segment, or CDP event, with an optional frequency cap | Exactly one per journey |
| `SEND_MESSAGE` | Sends an approved WhatsApp template from a chosen channel | The template must belong to the same WhatsApp account as the channel, or publishing is blocked |
| `WAIT_FOR_REPLY` | Waits for the person to reply | Emits `REPLIED` or `TIMEOUT`. Pair it with `MANAGE_CONVERSATION` |
| `MANAGE_CONVERSATION` | Runs the AI-led conversation, or hands it to a human (`mode: ESCALATE`) | Emits `CLOSED` or `STALE`. An optional inactivity timeout closes the conversation after a window of silence |
| `CONVERSATION_BLOCK` | Legacy combined wait-and-converse step | Kept so journeys published before the split keep running. Build new journeys with `WAIT_FOR_REPLY` + `MANAGE_CONVERSATION` instead |
| `DISPATCH_EVENT` | Records a CDP event for the person | Lets one journey enroll people into another: the dispatched event can be a different journey's trigger |
| `DELAY` | Pauses the run for a duration, until a date, or until a weekday window | A pure wait. It does not race an incoming reply |
| `DECISION` | Two-way branch, combined by AND/OR, over workflow data, a reserved event, or a live CDP attribute | Both `YES` and `NO` must be wired before publishing |
| `CASE` | Switches on a single person attribute, up to 10 branches | Every branch handle, plus the default handle, must be wired |
| `HTTP_REQUEST` | Calls an external endpoint, optionally with a stored credential | Emits `SUCCESS` or `FAILED`. Behind a feature flag your organization may not have yet |
| `EXIT` | Ends the journey for the person | At least one is required |