FluxBilling
Plugins

Node Reference

Complete reference for every node in the flow builder: fields, defaults, and outputs.

Updated · 2026-05-28

This is the complete catalog of nodes you can drop onto a flow canvas. For each node you'll find its purpose, a table of its configuration fields (with types and defaults), and the outputs it produces. Nodes with more than one output are branching nodes — they pick one output at runtime and execution continues down whatever you wired to it. Nodes with a single default output just pass control to the next node.

Throughout, fields accept the {{ }} syntax for dynamic values — see Variables and Expressions. For how to assemble these into a working flow, see Building Flows.

The palette shows each node by its canonical name. Several nodes also accept short aliases as node types — HTTP, Request, Set, Wait, Debug, Format, and Map Status — which you'll see in imported or shared flows. These resolve to the same nodes (for example, HTTP and Request are both the HTTP Request node, and Set is Set Variable); they are not separate palette items.


Start

Purpose: The entry point of every flow. It receives the flow's input and passes it through unchanged. A flow has exactly one Start node, and execution always begins here.

Config fields: none.

Output: the flow's input, forwarded to the next node. Single default output.


End

Purpose: The exit point of a flow. It returns the final result. A flow can have several End nodes (for example, one on a success branch and one on an error branch); whichever is reached first ends the flow.

Config fields:

Field Type Default Notes
output object Shapes the returned result. Each entry's value may use {{ }}. When set with at least one key, this defines the output object.
outputMapping object An alternative to output: a map of { resultKey: sourcePath } that pulls values from variables or input by path. Used only when output isn't set.
statusCode number For webhook responses. When set, the result is wrapped as { statusCode, body: <output> }.

With none of these set, End simply returns whatever input reached it (passthrough).

Output: the final flow result. No further outputs — End terminates the flow.


Condition

Purpose: If/else branching. Evaluates one or more conditions and routes to true or false.

Config fields:

Field Type Default Notes
conditions array of { field, operator, value } field is an expression to evaluate, operator is the comparison, value is what to compare against (string values support {{ }}).
logic string and How multiple conditions combine. and requires all to pass; or requires any one.

With no conditions configured, the node routes to true.

Operators:

equals (eq, ==), notEquals (neq, !=), strictEquals (===), strictNotEquals (!==), greaterThan (gt, >), greaterThanOrEqual (gte, >=), lessThan (lt, <), lessThanOrEqual (lte, <=), contains, notContains, startsWith, endsWith, matches (regular-expression test), isEmpty, isNotEmpty, isTrue, isFalse, exists, notExists, in (member of an array or comma-separated list), notIn.

Outputs: true and false. The input passes through unchanged to whichever branch is taken.


Switch

Purpose: Multi-way branching on a single value — cleaner than chaining many Conditions. A common use is routing inbound webhook events by event type.

Config fields:

Field Type Default Notes
field string (expression) The value to switch on.
cases array of { value, handle, label? } Checked in order; the first match wins. handle is the name of the output for that case (string values support {{ }}).
default string default The output used when no case matches.
operator string equals How each case's value is compared to field.

Operators: equals (eq), strictEquals (===), in, startsWith, endsWith, contains, matches.

Outputs: one output per case (each named by its handle), plus the default output. The input passes through unchanged.


Loop

Purpose: Iterate over an array. For each item, the flow runs whatever you wired to the body output; when every item is done, it runs the complete output.

Config fields:

Field Type Default Notes
source string (path or {{ }}) The array to iterate. Point it at an array value (e.g. a previous node's list output).
itemVariable string item The variable name that holds the current item inside the loop body.
indexVariable string index The variable name that holds the current zero-based position.
maxIterations number 1000 Safety cap on how many items are processed (the platform also enforces an upper bound).

If source isn't an array (or is empty), the loop does no iterations and goes straight to complete.

Outputs: body (runs once per item, with itemVariable and indexVariable set) and complete (runs after the last item; it can read the collected results of all iterations).


HTTP Request

Aliases: HTTP, Request.

Purpose: Call an external API through one of your plugin's connections, then route by success or error. This is the workhorse of most plugins.

Config fields:

Field Type Default Notes
connectionId connection reference The connection to send through (carries the base URL and authentication). Preferred way to pick a connection.
connectionSlug string Alternative to connectionId — reference a connection by its slug. Supports {{ }}. One of connectionId or connectionSlug is required.
method string GET HTTP method. A request body is sent only for POST, PUT, and PATCH.
path string / The path appended to the connection's base URL. Supports {{ }} — e.g. /servers/{{ input.serverId }}/status.
headers object {} Request headers; values support {{ }}. (Authentication headers from the connection are added for you.)
body object or string Request payload, for write methods only. Supports {{ }}.
bodyType string Set to raw to treat body as a raw string (it's substituted, then parsed as JSON if possible). Otherwise body is treated as an object.
bodyOmitEmpty boolean When true, drops body keys whose templated value resolved to empty or unresolved — handy for optional fields.
responseMapping object { key: sourcePath } Reshape the response into named fields. A response. prefix reads from the full response; otherwise paths read from the response body.

You can put {{ }} anywhere in path, headers, and body to inject input, configuration, or earlier node outputs.

Outputs: success when the response indicates success, otherwise error. The success output carries the (optionally mapped) response data; the error output carries an error message. Connection-level concerns — base URL, authentication, timeouts, and safety checks — are handled by the connection itself; see Connections and Authentication.


Transform

Purpose: Reshape data by mapping source values to target fields, optionally applying a transform to each value as it's copied.

Config fields:

Field Type Default Notes
mappings array of mapping objects Each mapping is { source, target, transform?, expression?, default? } (see below).
mode string merge merge starts from the incoming input and adds/overwrites mapped fields; replace starts from an empty object.

Per-mapping fields:

Field Notes
source Where to read the value from. Accepts a {{ }} expression or a plain path.
target Where to write the value in the output (a path).
expression An expression to compute the value directly, instead of source.
default Used when the resolved value is missing (undefined/null).
transform A transform to apply to the value — either a simple name (string) or a parameterized object { type, ... }.

Simple transforms (use the name as a string):

toString, toNumber, toBoolean, toUpperCase, toLowerCase, trim, length, first, last, reverse, unique, flatten, sort, toJson, parseJson, keys, values, toISOString, toTimestamp, abs, ceil, floor, round, urlEncode, urlDecode, base64Encode, base64Decode.

Parameterized transforms (use an object { type, ... }):

type Key parameters (defaults)
split delimiter (,)
join delimiter (,)
slice start (0), end
replace pattern (''), flags (g), replacement ('')
map field
filter field, value
find field, value
pad length (10), char (space), side (end)
default value
coalesce values (array of paths), fallback
template template (string with {{ }}, plus the current value)
enrichArray fields (a map of fieldName → template, applied per item)
flattenVersions versionsField (versions), nameField (name)
math operation (add/subtract/multiply/divide/modulo/power), operand

An unknown transform name leaves the value unchanged.

Output: the assembled object. Single default output.


Status Map

Alias: Map Status.

Purpose: Declaratively map an external value onto an internal one — for example, a provider's status string onto your platform's status. Cleaner than nested conditionals.

Config fields:

Field Type Default Notes
sourceField string (expression) The value to look up.
mappings object { externalValue: internalValue } The lookup table. The source value is matched against the keys.
default any unknown Returned when no key matches.
outputField string status The key the mapped value is written to in the output.
passthrough boolean true When true, the mapped field is merged onto the incoming input; when false, the output is just { [outputField]: <mapped> }.

Output: the input with the mapped field added (or just the mapped field if passthrough is off). Single default output.


Set Variable

Alias: Set.

Purpose: Store one or more computed values into flow variables so later nodes can reference them by name.

Config fields:

Field Type Default Notes
variables array of { name, value } Each entry stores a value under name. The value may be a whole-value {{ }} (raw value preserved), a string with embedded {{ }}, a literal, or an object. Entries without a name are skipped.

Output: the input, passed through unchanged. Single default output. The variables you set are available to any node downstream.


Delay

Alias: Wait.

Purpose: Pause the flow for a set amount of time before continuing.

Config fields:

Field Type Default Notes
delay number (milliseconds) 0 How long to wait. Capped at 300,000 ms (5 minutes). A value of 0 continues immediately.

Output: the input, passed through after the wait. Single default output.


Log

Alias: Debug.

Purpose: Write a message (and optionally some extracted values) into the run's execution trace, to help you understand what a flow is doing while you build and debug it.

Config fields:

Field Type Default Notes
message string Log node executed The message to record. Supports {{ }}.
level string info Log level label.
data object { key: sourcePath } Optional values to capture alongside the message; each path is read and recorded under its key.

Output: the input, passed through unchanged. Single default output. The message appears in the flow's History trace.


Format Message

Alias: Format.

Purpose: Build a notification message from a template and format it for a specific channel. Typically used in notification flows just before an HTTP Request that delivers the message.

Config fields:

Field Type Default Notes
template string The message body. Supports {{ }}; use \n for line breaks. Required.
format string text The output format (see below).
title string Optional heading/title for formats that support one (e.g. embeds, blocks). Supports {{ }}.
color string (hex or integer) Optional accent color for embed/block formats.
variables object { key: expression } Extra values computed and made available to the template before it's rendered.

Formats: text, markdown, html, slack_blocks, discord_embed, telegram. An unknown format falls back to text.

Output: the formatted message (its exact shape depends on the chosen format), including the rendered message text and title. Single default output. For end-to-end notification setup, see Notification Plugins.


Related: Building Flows · Variables and Expressions · Connections and Authentication · Notification Plugins · Capabilities and Flow Contracts