Tips and tricks
Drag from a pin to connect or create a block, right-drag to create the usual block for that pin, double-click a pin to reach a distant block, and press Cmd/Ctrl + S to save. Every canvas shortcut is on this page.
| To do this | Do this |
|---|---|
| Connect two blocks | Left-drag from one pin to the other |
| Create a connected block from a search | Left-drag from a pin to empty canvas |
| Create the usual block for a pin | Right-drag from a pin to empty canvas |
| Connect to a block out of view | Double-click the pin, pan, click the target pin |
| Disconnect a pin | Right-click the pin |
| Select several blocks | Cmd/Ctrl + click, or right-drag over them |
| Remove selected blocks | backspace, then save |
| Save | Cmd/Ctrl + S |
| Search for a block or value | Ctrl + F |
Drag between pins to connect them
left-click an output pin and drag it into an input pin, or the other way around.
Drag out of a pin and release on empty canvas to get a search. Pick a block and it is created with the connection already made. The results favour blocks that match the type of the pin you dragged.
Right-drag a pin to create the usual block
A right-click drag from an in-pin or out-pin to the blueprint background creates a block for you. It is used most with value pins, where it creates a custom value block.
| Pin type | Block created |
|---|---|
value |
value_default |
array |
array_values_default |
object |
object_new_fields (in-pin), object_update_fields (out-pin) |
condition |
condition_is_true |
date |
date_currentdate |
file |
file_custom |
storage |
storage |
fielddefinitions |
fielddefinitions_get_multiple |
user |
user_current |
flow |
function_custom_execute (out-pin) |
These pin types only occur on state pages and UI components, which are deprecated:
| Pin type | Block created |
|---|---|
state |
state_text |
uiclass |
uiclass_custom |
uistyle |
uistyle_custom |
inpinfunction |
inpinfunction_select |
Hidden in-pins appear when you drag a matching wire
Blocks keep their less common in-pins hidden until they are needed. When you drag a connection out of an out-pin, every block on the canvas checks the type you are carrying and reveals any hidden in-pin that can accept it. Drop the connection straight onto it: there is no need to add the pin by hand first.
The wire takes the colour of the pin's type (for example value, array or condition), and a small label shows the pin's name and type. In-pins of incompatible types stay hidden, so you only see the connections that are valid.
Click a block's header to select it
The header is usually the darker part of the block. A selected block gets an orange border.
- Hold
Cmd/Ctrland click another block to add it to the selection. - Click a selected block to deselect it.
right-clickand drag to draw a dark selection area over the blocks you want.
Double-click a pin to reach a block out of view
You cannot drag a connection directly to a block outside your viewport. Instead:
Double-click the pin
A message confirms that the pin is waiting for its other end.
Pan to the other block
Move the canvas until the target is in view.
Click the target pin once
The connection is made.
Right-click a pin to disconnect it
This cuts the connection on both ends. When the pin has several connections, a modal asks you to confirm first.
A removed block is gone only after you save
Select one or more blocks and press backspace. The block turns opaque with a red dashed border: it is marked as removed but not yet deleted. Save the blueprint and it disappears for good.
Staging and saving: a save is live
Press Save in the bottom bar or use Cmd/Ctrl + S. On core 15 a save goes live in an active blueprint: there is no separate deploy step. On core 14 and earlier a saved change stays in development until you deploy it.
To see your changes on a state page without saving each one, append ?staging to the URL of the page. A web page does not read ?staging: it always runs the saved blueprint, so save before you reload it.
The three dots open a block's options
Click the three dots at the top of a block. The menu holds block-specific options, and always these:
Modify name: changes the block's name, which documents a flow without needing a comment block.Revisions: opens the logbook for this block alone, so you can review recent changes to it.Documentation: opens the block's documentation in a new tab.
Reorder a block's pins with Edit pin sorting
Blocks with several pins of the same type, such as the out-pins on a private function block, let you choose their order. Open the block's options menu and choose Edit pin sorting.
The popup lists each pin with its position number. Drag the handle on the left of a row up or down; the numbering updates as you go. After you save the blueprint, the pins follow the new order.
The play icon runs a flow with values you choose
Blocks at the beginning of a flow have a play icon. It opens a popup where you pick a mode, set values and start the run. In the example below, key is an out-pin whose value you can set; during the run it is passed to the connected blocks.
| Mode | What runs |
|---|---|
Simulation (default) | Nothing is executed for real. For testing and debugging. |
Staging | Everything is executed, except storage related blocks. |
Production | Executed as if it were running live, side effects included. |
Write simulation values in the format of the pin
| Pin type | Format |
|---|---|
date |
1749321690 (timestamp as number) |
number |
1 |
object |
{"key": "value"} or {} |
value |
"value" or "" |
array |
["value1", "value2"] or [] |
condition |
true or false |
uiclass |
"uiclass" or "" (state pages) |
uiattributes |
{"loading": "lazy"} or {} (state pages) |
uistyle |
{"background": "grey"} or {} (state pages) |
Namespaces label a blueprint's functions
When many functions are used across blueprints, organize them with the built-in namespace instead of prefixing each function by hand. Click the blueprint's title at the top and fill in the namespace.
It is prepended to all functions in the blueprint, public and private. In other blueprints these functions then show the prefix, so you can see where each one comes from.
Ctrl + F finds any block or value
The search bar opens at the bottom left of your screen and searches the cluster you are working in. Click a result to jump to that block. It is especially helpful in a blueprint you do not know well.
It works for most block types. Translated data is not searchable.
The minimap shows where you are
In larger blueprints a minimap sits in the bottom-right corner. Every block is a small marker on it, and the highlighted rectangle is your current viewport. Drag it to whatever size suits you.
Habits that pay off in serious blueprints
- Simulate before you activate. Every trigger block has a play button: run the flow with simulation values and inspect each out-pin before it sees production. Full technique in Debugging Blueprints.
- Comment as you go. Right-click and
Add commenton anything non-obvious. Warnings mark do-not-touch areas; markers ping collaborators to a spot. - Review changes before saving. The
changescounter in the bottom bar expands into a per-block diff. Check it the way you would check a git diff before committing. - Use the Timeline for archaeology. The blueprint Timeline replays every save with author and timestamp. Block-level
Revisionsgive the same for a single block (see audit log). - Split when two people fight over one canvas. Functions in a shared blueprint, per-feature blueprints elsewhere (see Best Practices).
Next steps
Best Practices Naming, structure and habits that keep a blueprint maintainable. Debugging Blueprints Simulation, the console and the audit log in depth.Frequently asked
How do I connect two blocks that are far apart in a RUAL blueprint?
Double-click the pin you want to connect, pan to the other block, and click once on the target pin to establish the connection. Dragging a connection directly to a block outside the current viewport is not possible.
How do I search for a block inside a RUAL blueprint?
Press Ctrl + F to open the search bar at the bottom left of the screen. Clicking a result takes you straight to that block. It works for most block types, except translated data, which is not searchable.
How do I preview unsaved blueprint changes in RUAL?
On a state page, append ?staging to the URL to see your unsaved changes without saving each one. A web page runs the saved blueprint, so press Cmd/Ctrl + S and reload.
How do I simulate a RUAL flow before activating it?
Blocks at the start of a flow carry a play icon. Click it to open the play mode popup, set simulation values per out-pin in the right format for its data type, and run the flow to inspect what each connected block receives.












