Skip to main content
Build the smallest journey that works, start a run from your code, then open the run and read what it did. One send node is enough to see the whole loop. Delays, branches, and digests are the same graph with more nodes on it.

Prerequisites

Build it

1

Create the journey

Open , select New Journey, and name it. Choose the API Invoke trigger, which is what lets your code start each run.
2

Add one send node

Drop a send node on the canvas, pick email, and select + Create to write its content inline. Each send node owns one Template scoped to this journey, so there is nothing to create separately.Address the recipient by user_id. The profile supplies the email address, which means preferences apply and the address can change without touching this journey.
3

Publish

Select Publish. That locks the draft as a version and makes it the one new runs use. Copy the journey ID from the editor.

Invoke it

carries the call in every language. The response returns a runId, which is the handle for everything below. Send an Idempotency-Key if the call sits anywhere a retry could reach it, because a repeated key returns the stored result instead of starting a second run.

Read the run

Run inspection is a console view, and there is no public endpoint for a run’s trace. Take the runId from the invoke response, open the journey’s Logs tab, and search for it. The detail view draws each node’s outcome on the graph. Click a node to see its step context: the input data, the profile, any conditions evaluated, and the output. covers the run states and what each view shows. This is the step worth doing slowly. A journey that sends nothing looks identical to one that was never invoked until you open the run and see which node it stopped at.

Verify

1

The run completed

Invoke for a test user, then confirm the run reads as complete rather than sitting on the send node.
2

The message arrived

Check the inbox for the address on that user’s profile, then open and confirm the send is recorded against the journey.
3

A second invoke starts a second run

Invoke again without an Idempotency-Key and confirm two runs appear. Repeat with the same key and confirm only one does.

What to add next

Onboarding sequence

Delays and a branch, so only stalled users get nudged.

Nodes

Every node type, one page each.

Limits & behavior

  • Editing a send node’s content after publishing changes nothing on its own. The edit saves as a template draft, the journey keeps sending the version it was published with, and nothing marks the difference. Publish the journey again.
  • A run in flight finishes on the version it started with. A publish does not migrate it.
  • A draft does not run. Invoking a journey that was never published starts nothing.