Concepts

Template Syntax Reference

The ${string.x} placeholder syntax that turns any text field into a port.

Most text fields across Floah’s nodes , a URL, a GraphQL query, an HTTP header value, a gRPC request body , aren’t plain strings. They’re templates: plain text with typed placeholders embedded in it, and each placeholder automatically becomes an input port on the node.

Declaring a placeholder

Add a port named x by writing ${string.x}, ${number.x}, or ${bool.x} inside any template field:

I need ${number.x} carrots.

This gives the node one input port, x, typed as a number. Any text around the placeholder is kept as-is and the resolved value is substituted in at run time , so a URL field like:

https://${string.host}/api

gets one host input port, and resolves to something like https://api.example.com/api once that port has a value.

A field can contain more than one placeholder , each distinct name becomes its own port. On nodes with more than one template section (a Form Node with several fields, for instance), port names are namespaced as <fieldName>.<var> so identically-named placeholders in different fields don’t collide.

Pulling from environment variables

Source a placeholder from the workspace’s environment variables instead of wiring it to another node:

${env.x}

This reads x from the workspace’s default environment variable set , manage those from the Explorer’s menu → Environment Variables… (see Workspaces & Files).

Optional values

Add =default to a placeholder to make it optional, falling back to that default when nothing else supplies a value:

${string.x=hello}
Tip

This is the exact syntax shown in the app’s own field tooltips , hover any template field for a reminder, with an example specific to that field.

Every node reference page under Node Reference calls out which of its fields are templates versus fixed enums/selects.