Space conditions
Three conditions help you scope a workflow to a specific room, floor, or building — without typing space IDs by hand. For workflow authors filtering booking or occupancy events down to part of the office.
When to use which
- Is Same Space — match exactly one space.
- Is On Floor — match every space on a particular floor.
- Is In Building — match every space in a particular building.
All three behave like the standard If condition: one input, two outputs (true and false). Wire your action to the true port; leave false unconnected (or send it to a different action) depending on what you want for non-matching events.
Is Same Space
Compares two space IDs and routes to true if they're equal.
Configuration:
- Source Space ID — required.
- Target Space ID — required.
The names suggest a direction; there isn't one. The two slots are interchangeable in the equality test. The typical setup is:
- Leave one slot as a fixed space — pick from the dropdown (say, Reception).
- Switch the other slot's mode button to Data reference and point it at the trigger's space — event.space.id for booking triggers, space.id for occupancy triggers.
If you're not sure how the mode button works, see References and templates.
[SCREENSHOT] The Is Same Space inspector. Source Space ID is set to a fixed picker showing "Reception". Target Space ID's mode button on the left has been switched to Data reference, with a chip below the field reading event.space.id.
Is On Floor
Routes to true when a given space sits on a given floor.
Configuration:
- Floor ID — required, picked from the floor dropdown.
- Space ID — required. Almost always a data reference to the trigger's space.
The condition recursively walks every descendant of the floor, so deep nesting (floor → zone → room → desk) all matches without extra setup.
Is In Building
Routes to true when a given space sits anywhere in a given building.
Configuration:
- Building ID — required, picked from the building dropdown.
- Space ID — required. Almost always a data reference.
Same recursive behaviour — desks inside zones inside floors inside the building all match.
Common patterns
- Notify only for one floor. Booking No-Show trigger → Is On Floor (Floor = 3rd floor, Space = event.space.id) → Send DM. Anything off the third floor short-circuits to false.
- Different actions per building. Booking Started trigger → Is In Building (Building = Oslo HQ, Space = event.space.id) → Slack channel A on true. Then the false port flows into a second Is In Building for Bergen Office → Slack channel B. Chain as needed.
- Multi-floor allow-list. No "in this list of floors" condition exists yet. Today this needs one Is On Floor per floor, OR'd by chaining the false branches.
What about a single specific space?
If you only ever care about exactly one space, Is Same Space with one fixed slot works — but for readability the standard If condition with event.space.id equals <id> reads equally well. Pick whichever your team finds clearer.
When it fails
These conditions hit the entitydb to look up the floor or building tree, so a few runtime errors are possible:
- "Space not defined" — the configured floor/building id resolved to an empty string. Check the form.
- "Failed to get spaces" — entitydb couldn't list spaces. Usually a transient backend issue; retry the workflow.
- The container picked isn't actually a floor (for Is On Floor) or a building (for Is In Building) — the condition just routes to false with no error. If this surprises you, double-check what you picked in the dropdown.
[SCREENSHOT] The Logs panel on a failed Is On Floor task. The TASKS pane shows one red node; the OUTPUT pane on the right shows the message "Failed to get spaces".