Conditional Logic
Conditional logic lets you create rules that automatically show, hide, enable, or disable option blocks based on the user's current selections. This creates a guided, intelligent configuration experience.
How It Works
A conditional logic rule consists of three parts:
Condition
When a specific option has a specific value selected...
Action
...perform an action on another option block.
Fallback (Optional)
...otherwise, do something else.
Creating a Rule
- 1In the project editor, switch to Options mode.
- 2Click the "Conditional Logic" button (or lightning bolt icon) in the toolbar.
- 3Click "Add Rule".
- 4Set the IF condition: choose the source option block, the comparison operator (equals, not equals, contains, etc.), and the trigger value.
- 5Set the THEN action: choose the target option block and what should happen (show, hide, enable, disable, set value).
- 6Optionally, set an ELSE action for when the condition is not met.
- 7Save the rule. It takes effect immediately in the configurator.
Available Actions
| Action | Effect |
|---|---|
| Show | Makes the target option block visible. |
| Hide | Hides the target option block from the user. |
| Enable | Makes the target option block interactive (clickable). |
| Disable | Greys out the target option block so it cannot be changed. |
| Set Value | Automatically sets the target option to a specific value. |
Target Scopes
When creating a rule, you choose a target scope that determines what the rule affects. There are four scopes:
| Scope | What It Targets | Use Case |
|---|---|---|
| Entire Block | The whole option block UI panel | Hide an entire section (e.g. hide "Armrest Colour" when armrests are off). |
| Specific Variants | Individual variant options within a block | Hide indoor-only fabric options when "Outdoor" is selected. |
| Materials | Material assignments on 3D objects | Swap the material applied to a part based on another selection (e.g. apply "Outdoor Paint" material when "Outdoor" is chosen). When a block becomes visible via a conditional rule, the default material is auto-applied to the viewport. |
| 3D Objects | Whole 3D objects in the viewport (UI stays visible) | Hide the headrest mesh when "Minimal" style is chosen, while keeping the option block visible. |
| 3D Parts | Individual mesh parts (sub-meshes) in the viewport | Hide stitching detail or logo embossing on a plain finish without affecting the parent object. |
targetObjectName (e.g. "headrest_mesh") or via targetObjectIds in visibilityConfig. Use 3D Parts to target individual mesh parts by their targetPartName / targetPartNames (e.g. "logo_emboss", "stitching_detail"). Both 3D scopes affect only the viewport — the UI option block remains visible.Disable Snap Sides (Modular)
Modular blocks have a third THEN action — Disable — that restricts which faces of a host module a guest module is allowed to snap onto, without hiding anything. The module stays selectable and placeable; only the chosen snap sides become unavailable for that specific pairing. It is a connection rule, not a show/hide rule: it ignores the WHEN selection conditions and never affects pricing or visibility.
- 1Open the Modular block's Conditional Logic and click "Add Rule".
- 2Set the THEN action to "Disable" (only shown on Modular blocks).
- 3Under "Restrict module", pick the Modular block being restricted (the modules consumers drag) and optionally specific variants — leaving variants unchecked applies to all of them.
- 4Under "When connecting to (host)", pick the host Modular block (the module being snapped onto) and optionally specific host variants.
- 5Under "Disable these snap sides", tick the host's faces you want to block. A ticked side is blocked; everything else still snaps.
Example: Roof System Snap Restriction
A roof builder with three Modular blocks — Main Roof, Extra Roof, and Side Walls. Extra Roofs should only extend a Main Roof sideways (left/right), never off its front or back, while Side Walls keep all their valid sides.
DISABLE snap sides for "Extra Roof" variants
HOST "Main Roof" — block Front, Back
Result: Extra Roofs snap to the Main Roof's left/right faces only. Side Walls (a separate, unreferenced block) still snap on all their valid sides.
Example: 3D Part Visibility
A sofa configurator where the decorative stitching and button cap details are hidden when the user selects a "Plain" finish, but the finish selector block remains visible.
IF "Finish Style" equals "Plain"
THEN Hide 3D Parts: "stitching_detail", "button_caps", "logo_emboss"
The option block UI stays fully interactive — only the mesh parts are hidden in the 3D viewport.
Examples
Example 1: Material-Dependent Colour Options
A sofa configurator has a "Material Type" dropdown (Leather, Fabric). Show different colour options depending on the selection.
IF "Material Type" equals "Leather"
THEN Show "Leather Colours"
ELSE Hide "Leather Colours"
IF "Material Type" equals "Fabric"
THEN Show "Fabric Colours"
ELSE Hide "Fabric Colours"
Example 2: Size-Dependent Add-ons
A table configurator where "Extension Leaf" is only available for tables with length > 180cm.
IF "Table Length" greater than 180
THEN Show "Extension Leaf Option"
ELSE Hide "Extension Leaf Option"
Example 3: Cascading Selections
A bicycle configurator where choosing "Road Bike" frame type automatically sets tyre width to "23mm" and hides the "Suspension" option.
IF "Frame Type" equals "Road Bike"
THEN Set Value "Tyre Width" = "23mm"
IF "Frame Type" equals "Road Bike"
THEN Hide "Suspension Type"
ELSE Show "Suspension Type"
Advanced: AND / OR Multi-Conditions
For more complex scenarios, you can combine multiple conditions using AND (all must be true) and OR (any can be true) operators. This lets you build sophisticated configuration logic.
| Operator | Meaning | Use Case |
|---|---|---|
| AND | All conditions must be true for the action to trigger. | Show "Premium Engraving" only when BOTH "Material = Gold" AND "Size = Large". |
| OR | Any one condition being true triggers the action. | Show "Warranty" option when "Material = Steel" OR "Material = Aluminium". |
| NOT | Inverts a condition. | Show "Paint Colour" only when material is NOT "Natural Wood". |
Example 4: AND — Multiple Conditions Required
A laptop configurator where "4K Display Upgrade" is only shown when the user selects a high-end processor AND at least 16GB RAM.
IF "Processor" equals "Intel i9" AND "RAM" greater than or equals "16GB"
THEN Show "4K Display Upgrade"
ELSE Hide "4K Display Upgrade"
Example 5: OR — Any Condition Triggers
A kitchen configurator where the "Handle Style" option should appear when the user chooses any cabinet type that has handles (as opposed to push-to-open).
IF "Cabinet Type" equals "Shaker" OR "Cabinet Type" equals "Traditional" OR "Cabinet Type" equals "Country"
THEN Show "Handle Style"
ELSE Hide "Handle Style"
Example 6: Nested AND + OR — Complex Logic
A furniture configurator where a "Premium Fabric Protection" add-on is only available when the material is fabric (not leather/wood) AND the size is either Medium or Large.
IF (
"Material Type" equals "Fabric"
AND
( "Size" equals "Medium" OR "Size" equals "Large" )
)
THEN Show "Premium Fabric Protection" + Set Value "Protection Price" = "$49"
Modular Self-Snap Rules (Per-Instance)
In Modular projects, a Modular option block can reference itself in the WHEN clause. This lets you author rules that hide or show parts of a placed module only when another instance of the same module snaps onto it. By default the hide/show effect applies only to the host — the module that was already there (the previously-placed one) and gets snapped onto; the newly-added module that the customer just dropped to trigger the rule is not affected. If you instead want every connected module affected, switch the rule's "Apply to" control to Both modules or, for L/U-shaped runs, Whole chain (see below).
Example 6: Hide a side panel when another module connects on that side
A pergola configurator with an "Extension Roof" modular block. When two extension-roof modules are connected, the shared wall between them should disappear from the host module so the roofs read as one continuous piece.
THEN Hide 3D Parts on "Extension Roof" → skeleton_extra_side
WHEN "Extension Roof" (this block · self-snap) has selected, snapped on side Left
Result: only the host's skeleton_extra_side meshes hide — that's the roof that was already placed and got connected onto. The roof the customer just dropped to make the connection keeps all its parts. Other placed extension-roof instances that have nothing snapped on their Left side also keep every part visible.
snappedTo.moduleId equals that host (and that match the chosen side) are considered. Hide/show effects are written to a per-instance map and applied to that host's clone alone — never to the global model.- Connected module (default) — affects only the existing module another one snapped onto. Because nothing has snapped onto the last module you added yet, that newest module keeps its parts. Adding the module 4 times (Module 1 ← Module 2 ← Module 3 ← Module 4) hides on Modules 1, 2, and 3 but not the 4th.
- Both modules — also affects the module that was just snapped on, so every module in the chain is affected, including the last one you added. Use this when each connection in the run is made on the same side that the rule watches.
- Whole chain — affects every module joined to the host in one continuous run of the same module, in both directions, stopping at a different module (e.g. the Main piece). Use this for L and U shapes, where a corner module snaps on a different side than the run was built on. Example: a straight run made by snapping extra roofs left-to-left, then a corner roof snapped onto the last one's front — "Both modules" would only reach the corner and the piece it touched, but "Whole chain" hides/shows the parts on the entire straight run as well.
Creating Multi-Condition Rules
- 1Open the Conditional Logic panel and click "Add Rule".
- 2Set your first IF condition as normal.
- 3Click the "+ Add Condition" button below the first condition.
- 4Choose "AND" or "OR" to connect the new condition to the first.
- 5Set the second condition's source option block, operator, and value.
- 6Repeat to add more conditions as needed. You can mix AND and OR operators.
- 7Set the THEN and optional ELSE actions.
- 8Save the rule and test it in the Share preview.
