Skip to main content

Flow Best Practices

Habits that keep flows easy to use, read, and fix

Written by Holly Conrad Smith

A flow that your team can read and trust gets reused on every site, instead of rebuilt for each deal. These habits keep flows easy to use, easy to follow, and quick to fix when a result looks wrong.

Plan the flow and its inputs

Plan the flow before you add nodes

Write down three things before you open the canvas: the values someone will change, such as setbacks and floor heights, the result the flow should produce, such as a building envelope with a unit count, and the values that never change. That list becomes your Input Parameter nodes, your Write nodes, and the fixed numbers inside the flow.

Name every flow and input

Give each flow a name that says what it produces, such as Townhouse Setback Massing, so it is easy to find in the Flow Manager.

Give every exposed input a clear name, such as Front Setback or Floor Height. An Input Parameter node without a name does not show up as a control on the geometry.

Expose only the inputs people need

Add an Input Parameter node only for values someone will change from project to project. Work out related values inside the flow instead of asking for them. For example, expose Floor Height and Number of Floors, and calculate the building height from them. A short list of meaningful controls is easier to use than a long list of technical ones.

Inputs appear in the same order as their Input Parameter nodes on the canvas, from top to bottom. Stack the nodes in the order you want people to see them.

Learn how to set up input nodes and choose their types.

Describe and limit each input

Fill in the Description on each Input Parameter node to tell people what the value controls, such as "Distance from the front boundary to the building." For number inputs, turn on Min and Max to stop values that break the flow, such as a negative setback or a zero floor height. Assume someone will try every value the control allows.

Set a dimension on length and area inputs

Flow works in meters, square meters, and cubic meters, even when your project uses feet. Set the Dimension on a number Input Parameter node to Length, Area, or Volume. People then enter the value in project units, and Flow converts it to metric for you.

Convert a fixed value in feet with the To Meters, To Square Meters, or To Cubic Meters node before you write it into a transform setting. For example, 40 ft is 12.192 m. To show a result in feet, such as a height written to a property, convert it with the To Feet, To Square Feet, or To Cubic Feet node. Fix a value that comes out the wrong size.

Build the flow

Lay out the canvas from left to right

Place Read nodes on the left, the steps in the middle, and Write nodes on the right, so the flow reads in the same direction the wires carry data. Line up nodes as you add them with Align Top in the canvas right-click menu. Tidying as you go is faster than untangling a finished flow.

Set each value in one place

Connect one node to every step that needs the same value, instead of typing the same number into several nodes. When the setback changes, you change it once and every step follows. An output can feed many wires.

Control the order of combined wires

When several wires connect to one input, Flow combines them into a list ordered by where each source node sits on the canvas, from top to bottom. Arrange the source nodes in the order you want the list to be in.

Use Map to work on every item in a list

Most nodes take a single item. Use the Map node to run the same steps on every item in a list, such as every lot on a site. Set up a Map loop step by step. Check the Access column on a node's Help Center page to see whether an input takes an Item or a List. See Item and List Inputs.

Reuse shared logic with Evaluate Flow

Build logic you use in many flows, such as a zoning setback, as its own flow. Call it from other flows with the Evaluate Flow node instead of copying the nodes into each one. A fix to the shared flow then reaches every flow that calls it. A flow cannot call itself.

Test and change a flow safely

Build in small steps and check each one

Add a few nodes at a time and check the result before you add more. Select one geometry that uses the flow, then click the glasses button in the Flow Builder toolbar, labeled View evaluated flow for selected feature, to see which nodes have errors or warnings. Connect a Reader node to any output to see the exact value coming out of it. An empty list, a null, or a zero can pass through several nodes without an error before something downstream fails.

To find which node causes a problem, right-click a node and choose Disable, then check whether the problem goes away. Troubleshoot a flow for more checks.

Test with small and large sites

Try each flow on a small geometry, a large one, and an odd shape before you share it. Set each input to its minimum and its maximum. Check the start and end of arrays, corners, and any rule that switches on at a size threshold. Most flow errors show up at these edges first. Troubleshoot a flow that fails on one of these tests.

Duplicate a flow before a big change

Choose Duplicate Flow in the Flow Manager before you rework a flow that other geometries use. Make the change on the copy, test it, and then assign it to your geometries.

Did this answer your question?