Content
Set attributes, flip public/ready/searchable, run workflow transitions, compute embeddings, summarize.
The node vocabulary
Every node belongs to a category that determines its role in the graph, and the palette is the authoritative list for your installation — platform modules contribute nodes for their own domains alongside the built-ins.
InputThe graph's entry point — receives the triggering value, typed as the accepted event.
TransformReshapes data and always produces an output. JSONata, bridges, and conversions live here.
FetchResolves a full platform entity from a reference in the inbound value — events carry ids, not entities.
CombineFans in — merges multiple inbound branches into one value, keyed by each edge's port name.
RouteBranches — sends the value down one of several output ports. Condition and Switch.
ActionPerforms a side effect or controls execution; some actions suspend the run and resume it later.
OutputMarks the pipeline's result. Optional — a pipeline that only performs actions needs none.
Transforms
The JSONata node shapes or extracts JSON with a single expression. Its inspector expands into a workbench: paste a sample input on one side, edit the expression on the other, and preview the result without leaving the editor.
$eventCreated is bound to the run's occurrence timestamp in every expression.{
"profileId": id,
"displayName": name,
"occurredAt": $eventCreated
}Typed values
The event that seeds the Input node is a real typed object, not a JSON blob, and values keep their serialization as they flow. Nodes that work structurally — JSONata, Condition, Switch — operate on a JSON view; two bridge nodes cross the boundary explicitly.
// the editor checks value kinds as you draw
ProfileCreated → Event → Profile ✓ typed event
Profile → JSONata ✓ json view
JSONata → Get Project (UUID) ✗ not a UUID
Get Id → Get Project (UUID) ✓ typed UUIDActions
Action nodes end most branches — and some control execution itself, suspending the run durably until a timer fires or a job finishes.
Enqueue a platform background job — fire-and-forget, or suspend until it finishes with failures routed out an error port.
Run a stored Kotlin script synchronously; its result flows to downstream nodes, so it can sit mid-graph.
Invoke another pipeline as a sub-graph and pass its result downstream — the composition building block.
Run a body pipeline once per item of an array, with configurable concurrency and per-item error handling.
Publish a catalogued platform event — the fan-out primitive; every active pipeline accepting it runs.
Suspend the run for a duration or until a timestamp — even one inside the flowing value — then resume.
Send to recipient profiles through the platform's messaging service, as text or HTML.
Post to a Slack incoming webhook referenced by secret name — the URL is never stored in the graph.
POST the inbound JSON to a secret-held URL, optionally signed with HMAC-SHA256 so the receiver can verify it.
When things fail
Some nodes expose a red error port alongside their output. When the node fails, the error routes out that port instead of aborting the run — wire it to notify someone, fall back, or retry another way.
Every node can carry a retry policy: on failure the executor re-runs it up to the configured attempts with fixed or exponential backoff. Retries re-execute the node, so reserve them for idempotent work.
Webhook URLs and signing keys are named, encrypted secrets, resolved only at execution time. The graph JSON, run history, and dry-run traces never contain the value.
Domain nodes
Beyond the built-ins, platform modules contribute nodes for their own domains — resolvers that turn lean events into full entities, and actions that operate on them.
Set attributes, flip public/ready/searchable, run workflow transitions, compute embeddings, summarize.
A moderation toolkit — Moderate Text, evaluate verdicts, and set comment status, composable into custom flows.
Index and remove documents, with a replace mode that clears an entity's previous documents first.
Profile event resolvers plus get and set profile attributes.
Spec, requirement, and task event resolvers plus project and sprint lookups.
Compute profile signals, infer interests, and classify content for personalization.
A family of CRM sync nodes — create and update objects, manage lists, route by sync state.
Keep exploring
What a pipeline is, how it executes, and what it can do.
A three-pane graph workspace with typed connections and versioned saves.
Trace a sample event through the graph before anything goes live.
Event-triggered, durable execution with every run logged.