Deck Help Center

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.

Updated Β· 5 min read

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#

  1. In the left sidebar, under Operate, click Flows.
  2. Click New flow. You get Untitled flow with a Start node already on the canvas, and the name field selected β€” type a name.
  3. 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#

  1. 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.
  2. A step has one outgoing wire; dragging a new one from the same dot replaces the old one.
  3. If / Else has two, labelled then and else (the else wire is drawn in a different colour). Chance has yes and no.
  4. 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#

ActionHow
PanDrag empty canvas, or scroll
ZoomCtrl+scroll, or the βˆ’ / + buttons (25%–250%)
Fit everythingFit, or double-click empty canvas
Delete a step or a wireSelect it, press Delete
Duplicate a stepCtrl+D
Deselect / cancel a wireEsc
SaveCtrl+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, .class or button[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.

  1. With nothing selected (or with Start selected), find Asked for at Run in the inspector.
  2. Click + Add input.
  3. 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 |).
  4. 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.