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 arunId, 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 therunId 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.