What is Flowmark
Write a process as plain text, one step per line, and the app draws the diagram for you.
Flowmark is the text form of your diagram. The Flowmark pane beside the diagram shows it as text, and you can edit it there: the diagram follows when you pause typing. You write the steps and how they connect, and the app does the layout and wiring. The assistant and a connected AI app write the same text, so anything you learn here helps you read what they draft.
If a line has a mistake, the pane's header shows the error with its line number, and so does the Problems panel. The diagram keeps its last working version until you fix it. Select the error to jump to that line. When your text isn't laid out the way the app prints it, Reformat shows in the pane's header and rewrites it that way. To take the text elsewhere, use Export > Flowmark text for a .flowmark file, or Copy Flowmark.
Write your first process
Here is a complete process. Paste it into the Flowmark pane to see it drawn.
process Expense claim
lanes Employee | Finance
lane Employee
start Expense incurred
user Submit expense claim
lane Finance
user Check receipts
xor Receipts complete?
yes -> Pay expense
no (default) -> Return claim
service Pay expense
end Expense paid
send Return claim
end Claim returnedReading it from the top:
process Expense claimnames the process.laneslists the lanes in order, and eachlaneline puts the steps after it in that lane.- Every other line is one node: a kind such as
start,userorxor, then its name. - The first block runs from Expense incurred to Receipts complete?, each line connecting to the one above it.
- The indented
->lines are the gateway's outgoing flows, labeled yes and no. - Each blank line starts a new path. Pay expense and Return claim start their own blocks, and the gateway's arrows lead to them.
The rules that matter
- One node per line. Write the kind, then the name:
user Approve invoice. Kinds are lowercase. See Steps. - Lines connect top to bottom. Inside a block, each node connects to the node on the line above it. See Flows and labels.
- A blank line starts a new path. So does an end event, or a node with its own
->lines. - Arrows point by name or
#id.-> Pay expensefinds the node called Pay expense. Give a node an#idwhen it has no name or shares one. See Ids and comments. - Indented lines belong to the node above. Arrows, boundary events (
on:), documentation (doc:), notes (note:) and messages (=>,<=) all attach to the node declared last.