Nodes and pins
Learn how nodes work and how typed pins control data and execution flow.
Nodes
Nodes are the building blocks of every pattern. Each node performs one operation — parse JSON, make an HTTP request, compare two values, or branch on a condition.
DRAGOPS ships with 179 primitives organized into 16 categories:
| Category | Examples |
|---|---|
| Events | On Webhook, On Schedule, On Pattern Call |
| Flow Control | Branch, For Each, Switch, Sequence |
| HTTP | HTTP Request |
| String | Concat, Split, Replace, Format |
| Math | Add, Multiply, Clamp, Random |
| Array | Map, Filter, Find, Sort, Reduce |
| Object/Map | Get Property, Set Property, Merge |
| Data Formats | Parse JSON, Stringify JSON, Parse CSV |
| Comparison | Equal, Greater Than, Contains |
| Date/Time | Now, Format, Add, Parse |
| Variables | Get Variable, Set Variable |
| Utility | Log, Delay, Comment |
Node categories and header colors
Every node has a colored header that indicates its category at a glance:
| Category | Header color | Purpose |
|---|---|---|
| Event | Pink | Triggers that start execution |
| Function | Blue | Pure computations and data transforms |
| Flow | Orange | Control flow (Branch, For Each, Switch) |
| Action | Green | Side effects (HTTP requests, logging) |
Pins
Pins are the connection points on the left and right edges of a node. You create wires between pins to build your automation logic. There are two kinds of pins.
Execution pins
Execution pins control when a node runs. They are white/gray and triangular, forming the execution flow — like lines of code running in sequence.
- A node with execution pins runs only when its input execution pin fires
- After completing, it fires its output execution pin to continue the flow
- Some nodes have multiple output execution pins (like Branch, which has True and False)
Data pins
Data pins carry values between nodes. They are circular, and each type has a distinct color so you can identify the data flow at a glance:
| Type | Color | Example values |
|---|---|---|
| String | Pink | "hello", "" |
| Integer | Teal | 42, -1, 0 |
| Float | Green | 3.14, -0.5 |
| Boolean | Red | true, false |
| Object | Blue | { "key": "value" } |
| Array | Purple | [1, 2, 3] |
| DateTime | Amber | 2026-03-05T12:00:00Z |
| Binary | Orange | (raw byte data) |
| Any | Gray | Accepts any type |
| Null | Dark gray | null |
| Enum | Dark green | Named enumeration values |
For details on how types interact when you connect pins, see the type system.
Pure vs impure nodes
Nodes fall into two behavioral categories based on whether they have execution pins:
- Pure nodes (no execution pins) — compute a value from their inputs. They evaluate inline when their output is needed. Examples: Add, Concat, Equal.
- Impure nodes (has execution pins) — perform an action with side effects. They execute in sequence along the execution flow. Examples: HTTP Request, Log, Set Variable.
Pure nodes do not appear in the execution flow. Instead, their outputs are calculated on demand when a downstream impure node needs the value.
Connecting pins
Drag from an output pin to a compatible input pin to create a wire. The type system prevents invalid connections — you cannot wire a Boolean output into an Object input without a conversion node.
To disconnect a wire, drag it away from the input pin.
Related concepts
- Wires — the connections between pins
- Type system — compatibility rules for connecting pins
- Variables — using Get Variable and Set Variable nodes