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 thisDo this
Connect two blocksLeft-drag from one pin to the other
Create a connected block from a searchLeft-drag from a pin to empty canvas
Create the usual block for a pinRight-drag from a pin to empty canvas
Connect to a block out of viewDouble-click the pin, pan, click the target pin
Disconnect a pinRight-click the pin
Select several blocksCmd/Ctrl + click, or right-drag over them
Remove selected blocksbackspace, then save
SaveCmd/Ctrl + S
Search for a block or valueCtrl + 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.

blocks connecting from drag
A popup shown after you drag from the out-pin
A popup shown after you drag from the out-pin

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.

blocks auto create
Automatically created block by right-drag
Automatically created block by right-drag
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.

blocks smart pin reveal
Dragging a typed out-pin reveals the matching hidden in-pin on the target block
Dragging a typed out-pin reveals the matching hidden in-pin on the target block

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/Ctrl and click another block to add it to the selection.
  • Click a selected block to deselect it.
  • right-click and drag to draw a dark selection area over the blocks you want.
tips select block multiple
Multiple Selected Blocks
Multiple Selected Blocks

Double-click a pin to reach a block out of view

You cannot drag a connection directly to a block outside your viewport. Instead:

  1. Double-click the pin

    A message confirms that the pin is waiting for its other end.

  2. Pan to the other block

    Move the canvas until the target is in view.

  3. Click the target pin once

    The connection is made.

blocks long connection
Message of a double-click pin
Message of a double-click pin

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.

blocks rightclick pin disconnect
Two connected blocks
Two connected blocks

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.

tips select block removed
Selected Block and removed one
Selected Block and removed one

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.
tips block options
Visible block options menu
Visible block options menu

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.

tips edit pin sorting
Edit pin sorting popup showing reorderable pins
Edit pin sorting popup showing reorderable pins

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.

tips block simulation
Activated simulation options
Activated simulation options
ModeWhat runs
Simulation (default)Nothing is executed for real. For testing and debugging.
StagingEverything is executed, except storage related blocks.
ProductionExecuted 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.

tips namespace
Namespace popup
Namespace popup

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.

tips search menu
Search menu
Search menu

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.

minimap
Minimap showing the current viewport within the blueprint
Minimap showing the current viewport within the blueprint

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 comment on anything non-obvious. Warnings mark do-not-touch areas; markers ping collaborators to a spot.
  • Review changes before saving. The changes counter 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 Revisions give 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.