Workflows
A workflow is a graph of nodes joined by connections. It starts from a trigger, passes items (rows of data) from node to node, and can drive browser profiles, accounts, mail, SMS, files, AI models, phones and outside apps. The engine runs in the app’s core, on your computer.
The editor
Section titled “The editor”- Canvas: drag nodes from the panel, connect their ports, and arrange them. Branching nodes (If, Switch, Loop) have one output per branch.
- Node panel: opens on a node to edit its parameters. Fields accept fixed values or expressions that read the incoming item, earlier nodes, variables and the run’s context. The ? next to a field opens its help and links to the node reference.
- Drafts: a workflow saves while it is still invalid; errors are listed so you can finish later.
- Versions: every save keeps a version you can compare and restore.
Triggers
Section titled “Triggers”A workflow starts from one of:
- Manual, from the editor, the workflow list, the Local API or
mzb run; - Schedule (interval or cron);
- Webhook, an HTTP call to a URL the app gives you;
- Event inside MZBase, an error in another workflow, or a call from another workflow;
- Chat messages from the AI Agents page or a chat app;
- app triggers such as a new Google Sheets row, a Telegram or Zalo OA message.
Turn a workflow on to let its schedule, webhook or event trigger start it.
Running on profiles
Section titled “Running on profiles”A run can target one or many profiles. The engine opens each profile when a browser node needs it (see Profiles: proxy check, lock, sync) and can close it afterwards. Concurrency, retries and rate limits are set per workflow and per node.
Items and data
Section titled “Items and data”- Nodes receive a list of items and, by default, run once per item.
- Data nodes edit, filter, sort, merge, aggregate and reshape items; Data tables keep rows between runs.
- Code (
data.code) runs JavaScript in a sandbox with memory and time limits. - Credentials for outside services are stored encrypted and picked by name; values never appear in logs.
Browser scripts
Section titled “Browser scripts”The Browser script node runs JavaScript with Playwright’s syntax: page, locator, getByRole, click, fill, waitForResponse and more. It does not run real Playwright: every call goes to MZBase’s own browser driver, which:
- never turns on the browser signals that pages use to detect automation;
- runs helper code in isolated worlds, invisible to the page;
- types and moves the mouse like a person.
The same script runs on every engine the driver supports. A call outside the supported set fails with a clear error naming it and the nearest supported call; it never falls back to a detectable path.
AI in workflows
Section titled “AI in workflows”AI nodes chat, extract, classify, write and act on the page (ai.act), using the models of the AI gateway (your keys, or local models on your GPU). An AI agent node can call other nodes as tools. Anything that posts, sends, buys or deletes can be routed through an approval step.
Executions
Section titled “Executions”Every run is kept as an execution with each node’s input, output, logs and timing. From an execution you can:
- re-run from any node with the earlier data (partial re-run);
- pin a node’s output while you build the rest;
- see why a node failed and retry it.
Run from outside
Section titled “Run from outside”- Local API:
POST /workflows/runwith the workflow and profile ids. See Local API. - Terminal:
mzb run "<workflow>" --profile "<profile>" --wait. - AI agents and MCP clients see workflows and nodes as tools.
Reference
Section titled “Reference”The node reference lists every node type with its parameters and outputs. It is generated from the app’s node registry.