The flow editor is where you build and change flows. You place blocks on a canvas, wire their outputs to other blocks’ inputs, fill in their settings and deploy. The draft is saved as you work; nothing runs until you deploy.
Create a flow
- Open Automation. The list shows every flow of every host, root flows first.
- Select New flow.
- Fill in the dialog:
| Field | Meaning |
|---|---|
| Host | IoT or General. “Where the flow runs and which blocks it can use. It cannot change later.” |
| Name | The flow’s name |
| Slug | Its short id: lower-case letters, digits, - and _, up to 32 characters. It cannot change later. |
| Start from | An empty flow, or a template of the host. See Flow templates. |
- Select Create. The editor opens.
Every flow has one Flow input block from the start. It is the entry for messages another flow hands over, and for a root flow, the entry of its device messages. It cannot be deleted; leave it unconnected if nothing hands messages to this flow.
The editor at a glance
| Area | What it holds |
|---|---|
| Top bar | The flow’s name and state, the save state (Saving…, Saved, Not saved yet), live figures (Live or Every 5 s, messages per second, waiting messages, errors in 24 h) and the buttons Activity, Webhooks, Test, Versions, Failed messages, Discard draft and Deploy |
| Palette | Node Types: every block of the host, alphabetically, with a search box |
| Canvas | The blocks and their wires |
| Side panel | The selected block’s settings, or the Activity panel |
Webhooks appears once a deployed flow has a Webhook trigger. Versions appears after the first deploy. Discard draft appears while the draft differs from the deployed version.
Add blocks
- Drag a block from the palette onto the canvas, or click it.
- Or right-click the canvas and choose Add a block here…, or right-click a wire and choose Add a block in between…. The Add a block picker searches by name, description or type.
- A block that cannot be used is shown greyed, with the reason: “Your plan does not include this block.”, “This block needs a configuration that is not set up yet.”, “The module this block belongs to is not installed.”, “This block does not run on this flow’s host.” or “You need the permission … to use this block.”
Wire blocks
- Drag from an output port (right side of a block) to an input port (left side of another).
- A block can have several outputs, for example yes and no, or one per rule of a Switch. Hovering a port shows its name.
- Most blocks also have an error output. Wire it to handle that block’s errors yourself; otherwise errors go to the flow’s Catch triggers. See Trigger blocks.
- To move a wire’s end, drag its handle to another port. To change which output a wire leaves from, right-click it and choose Change port….
- Select a wire and press Delete, or right-click it and choose Delete connection.
Wires carry a count of messages once the flow runs (“12 messages”).
Edit a block
Click a block. The side panel opens with three tabs:
| Tab | Shows |
|---|---|
| Settings | Label, Description (a note for people; it does nothing) and the block’s own settings. “Changes apply as you type. Undo with Ctrl+Z.” |
| Messages | The last messages that passed the block, In and Out, with Test with this input. Message contents are shown only to people who may debug. |
| Help | The block’s reference: what it does, its ports and settings |
Settings that take a value let you pick its kind: Number, Text, Yes / no, JSON, Variable (a path such as msg.payload.level or flow.limit), Expression, Environment variable or Current time. Settings that pick a connection (an MQTT broker, an HTTP endpoint) list your connections of that type, with Manage connections. See Connections and secrets.
The Script block opens a code editor with find and replace, formatting, full screen and Test the script. See The script block.
Work with many blocks
| Action | How |
|---|---|
| Select several | Shift or Ctrl click, or hold Shift and drag a frame (Select blocks with a frame) |
| Copy, cut, paste, duplicate | The right-click menu or the usual keyboard shortcuts |
| Group | Select, right-click, Group…; give the group a name and a colour |
| Comment | Right-click the canvas, Add a comment here. Comments do nothing when the flow runs. |
| Skip a block | Right-click, Skip: the block stays but does not run |
| Tidy up | Arrange the blocks in the toolbar |
| Find | Find a block searches names, types, descriptions and ids |
| Navigate | Zoom in and out, Fit to screen, Mini map, Fullscreen |
Press ? on the canvas for the keyboard shortcuts.
Problems
The editor checks the flow as you build it. Problems are marked on the blocks and listed under Problems:
| Problem | Meaning |
|---|---|
| “Setting is required.” | Fill in the setting. |
| “This block is not connected to anything.” / “Nothing is connected to this block.” | Wire it or remove it. |
| “A flow can have only one Flow input block.” | Remove the extra one. |
| “These blocks send messages round in a loop that never waits…” | Put a waiting block (a delay, a timer, a call) in the loop, or break it. |
| “A Run flow block cannot run its own flow.” | Pick another flow. |
| “This block is not available here. It keeps its connections but cannot run.” | The block came from an import and does not exist on this host. |
A flow with errors cannot be deployed: “Fix the problems marked on the canvas first.”
Saving
The draft is saved to the server automatically as you edit. The save state shows Saving…, Saved or “Not saved. Retry”. Unsaved changes are also kept in your browser: if you leave and come back, the editor offers to restore them.
If someone else saved the same flow meanwhile, the editor shows “This flow was saved by someone else” with:
- Merge: keeps what only one side changed and saves the result as the draft. Look through it before you deploy; Undo goes back to your version.
- Overwrite with mine: keeps your version.
Deploy
- Select Deploy. The dialog “Deploy name” says: “This becomes version n of the flow and starts running.”
- Read the warnings and the list of changes, if any.
- Choose What restarts: Only the blocks that changed (default), Every block of the changed flows or Every flow of this host. Blocks that do not restart keep their memory.
- Leave Run the flow after the deploy ticked to run it, or untick it to deploy it switched off.
- Optionally write a Note (“What changed”). It shows in the version list.
- If the flow has blocks that act outside it (Code, Control, External, System risk), the dialog lists them: tick I understand what these blocks do and type the flow’s name.
- Select Deploy (or Confirm and deploy).
A deploy can be refused: by a problem, by a plan limit (“Your plan allows n flows: …”), by a missing permission, or because someone deployed meanwhile. The dialog says which. See Flow limits.
A flow that is a root must stay switched on and approved: “This flow is a root, so it must stay switched on and approved: device data would not be stored otherwise.”
Read-only flows
You see “You can view this flow but not change it.” when you lack the permission to manage automation, when the flow is deleted (restore it first), or when a module built it (a Rules-card rule: Built by badge). See Hosts, the root flow and profile root flows and Versions, testing and rollback.

