Build or change a Flow by hand
The editor, explained: the palette, the canvas, wires, the inspector, flow variables and the inputs a Flow asks for when you run it.
On this page
Every Flow β drafted by AI, added from a template or started empty β opens in the same editor. Nothing here runs until you press βΆ Run.
Part of Pro, Team and Custom.
π Start an empty one#
- In the left sidebar, under Operate, click Flows.
- Click New flow. You get Untitled flow with a Start node already on the canvas, and the name field selected β type a name.
- Add steps, wire them up, then press Save (or Ctrl+S).
A dot beside the name means unsaved changes. Going back with βΉ Flows saves them for you.
π§© The three panes#
- Palette (left) β every step type, in five groups, with a Find a node search box. Click one to drop it in the middle of the view, or drag it where you want it.
- Canvas (centre) β the steps and the wires between them.
- Inspector (right) β the settings of whatever is selected. With nothing selected it shows the whole Flow's settings.
At the bottom, the Run log bar opens when you run something.
π Wiring steps together#
- Hover a step and drag from the dot on its right-hand edge to the next step. That wire is the order the run follows.
- A step has one outgoing wire; dragging a new one from the same dot replaces the old one.
- If / Else has two, labelled then and else (the else wire is drawn in a different colour). Chance has yes and no.
- Finish with an End step. A Flow that runs out of wires still stops, but it warns you: the graph ran out of wires β finishing (add an End node to be explicit).
Nothing can be wired into Start, a step cannot wire to itself, and a Flow has exactly one Start (A flow needs its Start node / A flow has exactly one Start).
Getting around the canvas#
| Action | How |
|---|---|
| Pan | Drag empty canvas, or scroll |
| Zoom | Ctrl+scroll, or the β / + buttons (25%β250%) |
| Fit everything | Fit, or double-click empty canvas |
| Delete a step or a wire | Select it, press Delete |
| Duplicate a step | Ctrl+D |
| Deselect / cancel a wire | Esc |
| Save | Ctrl+S |
On a Mac, use Cmd in place of Ctrl.
π― Telling a step which element to use#
Click, Hover, Human type, Wait for element, Read text, Read attribute, Select option and Upload file all ask for an element. The field has two modes:
- By features β fill in what you know: Text, Id, Tag, Aria label, Name, Placeholder, Href path, Role, Type, CSS path. Visible text is usually enough. At run time the best-matching element on the page wins, so a redesign does not break it.
- CSS selector β an exact selector, like
#id,.classorbutton[type=submit]. Use it only when features cannot tell two elements apart; it breaks the day the page is rebuilt.
Features are tried first, then the CSS selector. The run log says which route found it: (by features), (by tag) or (by css).
π€ Variables#
Click empty canvas to see the Flow's own settings in the inspector:
- Notes β what this Flow is for. Worth filling in; it is what you read in six months.
- Variables β values the run starts with. Use one anywhere as
${name}; steps can write over them. - Asked for at Run β the questions the Flow asks before it starts (below).
Anything a step stores ("Store it inβ¦") becomes a variable too. ${name} works in text fields, URLs, numbers and prompts; ${a.b} reaches inside an object. A name that does not exist becomes empty rather than the literal text.
A profile's saved logins are available to a Flow as ${account.email}, ${account.password} and ${account.totp} (a fresh 6-digit code each time it is read), or ${accounts.google.email} for a specific one. Passwords and codes are only ever typed by a Human type step, and only on that account's own website. See Saved logins and 2FA codes.
β Ask for something at Run#
Asked for at Run is what makes one Flow fit many jobs β the keyword, the URL, how many.
- With nothing selected (or with Start selected), find Asked for at Run in the inspector.
- Click + Add input.
- Fill in the variable name, the Label shown at Run, and pick a kind: Text, Long text, Number, Yes / no or One of (for One of, type the choices separated by
|). - Add a default and a Hint if it helps, and tick required if the run should refuse to start without it.
Up to 20 inputs per Flow. When you press Run, a dialog asks What should {flow} use this time? and your answers land in ${name}. They are remembered for next time on this computer β except anything that looks like a secret (a name or label containing pass, secret, token, otp, 2fa, totp, pin, code, cvv or api key), which is never kept.
β― The rest of the menu#
The ⯠button holds Rename, Duplicate, Fit to view, Insert a copy of another flow⦠and Delete flow.
Insert a copy of another flow⦠appends another Flow's steps into this one as an independent copy. To keep the two linked instead, use the Run flow step: it runs another Flow from your library on the same browser and comes back, so you edit the shared part in one place. That is the way to keep a "sign in" Flow you reuse everywhere.
π€ Share a Flow as a file#
Export in the toolbar (or the β button on a library row) writes the Flow to a .json file. Importβ¦ on the library page reads one back; it always creates a new Flow, so importing twice gives you two. Steps or settings a build does not recognise are dropped quietly.
Flows also sync to your other computers and to your team without exporting anything: What syncs.
βΉοΈ Good to know#
- A number field takes a number or a
${variable}. - A step the app repaired on its own carries a π©Ή mark β click it to review the change. See When a Flow gets stuck.
- Comment steps do nothing at run time. Use them to explain the tricky part of a Flow to whoever opens it next.
- Every step type, with all of its settings, is listed in the Flow steps reference.