Inputs left, outputs right
A node takes what it needs on one side and offers its results on the other. What connects to what is visible on the canvas rather than implied by the order of lines in a file.
Every step of a flow is a node: a single operation with typed inputs on one side and typed outputs on the other. Over 100 of them across 17 categories — and the list is not fixed, because the library is meant to be extended.
A flow is a graph, not a script. Each operation is a node, and directional links define both the execution path and the data travelling along it.
A node takes what it needs on one side and offers its results on the other. What connects to what is visible on the canvas rather than implied by the order of lines in a file.
Success, warning and error are distinct exits, not one return value you have to inspect. The branch for the case that went wrong is drawn, which means somebody had to decide what it does.
A node either runs in the browser, where the person can see it, or on the server, where they cannot. Each node says which it is, so a journey never hides where the work is happening.
Nodes are grouped by what they are for. The proportions are informative on their own: the largest category is the general-purpose one, because most of a journey is deciding and transforming rather than calling.
Where a flow starts and ends, how one flow calls another, and how a result is handed back to whoever asked.
The user record itself: create it, read it, search for it, change it, move it through its lifecycle.
Group objects and the membership that attaches a person to them.
The link between a person and an application they are entitled to reach.
Assigning and removing roles as the journey decides they apply.
Opening a session, inspecting what is in it, and closing it before it outlives its reasons.
Handing authentication to an external provider and picking the journey back up afterwards.
The steps specific to OpenID Connect providers.
Directory-native operations, for the systems where identity has lived the longest.
Everything that happens in the browser: prompts, redirects, forms, what the person actually sees.
Generating a one-time code and checking the one that comes back.
Registering a public-key credential and verifying an assertion against it.
Tokens, hashes and signatures, for the moments a flow has to prove something rather than assert it.
Server-side logic and calls out to the systems that hold the answer.
The general-purpose toolkit — variables, conditions, transformation, control. The largest category, which is what you would expect.
Session data you define yourself, for the state a standard session was never meant to carry.
Asking for consent, recording it, and letting it be taken back.
A node declares which kinds of flow it is available in. It is why the palette stays readable: designing a consent journey does not put every directory operation in front of you.
The journeys that end with somebody signed in.
What a person does for themselves: recovery, profile, credentials.
What an administrator does on somebody else's behalf.
Flows invoked by a system rather than walked by a person.
Capturing and revoking permission.
Reusable sub-flows, called by the others instead of copied into them.
Journeys that do not fit the shapes above.
Categories you create yourself.
The nodes that ship with the platform are a starting point. What you add sits beside them, with the same shape and the same rules.
Alongside the categories that ship with the platform you can define your own, with their own name, colour, icon and position in the list. The library is organised the way your team thinks about it.
A node type is a metadata definition: bundle, name, category, and the flow categories it should appear in. Define one and it takes its place in the palette next to the built-in nodes.
A custom node declares the inputs it expects and the outputs it can take, each with a level — success, warning, error — so the branches downstream can tell the difference.
Display name and description can be set per language. Node types that have been superseded can be marked deprecated rather than deleted, so existing flows keep working while new ones move on.
Categories and counts reflect the current product documentation and move with each release. What a specific node does, what it expects and what it returns is documented per node — this page is the map, not the reference.
The quickest way to judge a node library is to watch somebody build your flow with it.
Talk to an expert