Visibility rules
What a visibility rule is
A rule is a list of conditions that must all hold. Each condition compares one earlier storefront answer, or a calculated value, to a value: "Inverter Type does not equal Microinverter", "Rapid Shutdown does not equal No", "Total Panels is greater than or equal to 20". There is no "or" and no nesting. When two rules apply to the same item (one on its group and one on the item type itself), both must pass.
- No rule means always included. If you never touch the feature, only the three default rules apply.
- Rules run live. Change an answer on the storefront and the section, the BOM lines and the sidebar update immediately.
- An unanswered question passes "does not equal" and "does not contain" and fails every other operator, including "is one of" and the number comparisons. So "Rapid Shutdown does not equal No" is true on a system where the Rapid Shutdown question was never asked. This is why the editor suggests "does not equal No" when you pick a Yes/No question and "does not equal Microinverter" when you pick Inverter Type: a rule written that way stays out of the way on every path where the question does not apply. A calculated value that does not exist yet (the racking step before the layout is drawn, an inverter value before the inverter is picked) behaves the same way. The flip side: a comparison on a number that is only asked on some paths hides the item on every other path, so key the rule on a question the customer answers everywhere.
- Answers from a component the customer did not choose count as unanswered. If a customer answers the racking questions and then unticks Racking on the first step, rules treat Mount Type and the other racking answers as never given. To key a rule on the components themselves, use Components chosen with "includes" or "does not include", as two of the default rules do.
- "Is one of" is offered on any source with a fixed list of answers (Inverter Type, Mount Type, a Yes/No question, a custom question with options): tick the answers that should pass. "Inverter Type is one of String Inverter, Optimizer" is the general form of "not microinverter", and keeps working when you later add another inverter type you also want excluded. There is no "is not one of"; write one "does not equal" condition per excluded answer.
The same mechanism carries two wordings. On a catalog card (an item type or a group) the row reads Included in every system. until you add a condition, then Included when followed by the chips, because those rows also govern items the engine computes without asking the customer anything (rails, clamps, wire): the rule decides whether the item is included, not whether a question is shown. This page calls them Include when rules. Question cards and the question modal read Show when, because a question is only ever shown or hidden. Anything that carries a rule shows a neutral Conditional badge on its collapsed header or card, with the rule as the tooltip.
What the customer sees
- A hidden item type has no storefront question and no picker, is left out of the bill of materials, and its accessories go with it. It does not appear in the sidebar, on the quote page, in the shareable quote or in the quote email. There is no zero-quantity line; the line simply does not exist.
- A hidden group hides every item type in it.
- A hidden question (built in or custom) is not shown. The configurator answers it on the customer's behalf with the Value when hidden you set. With no value set, the answer is removed while the question is hidden: pickers that depend on it stay hidden, product matching treats a missing custom answer as matching any product, and formulas and later rules that read it see nothing.
- A question the configurator would not ask on this path anyway (a carport question on a pitched roof) is simply absent; your rule is never evaluated for it and its hidden value never applies.
- On the BOS step, a category with nothing left to show loses its card.
Where to add a rule
| Rule on | Page | Where the row is | Label |
|---|---|---|---|
| An item type | Inverters, Racking, BOS, and every custom module | The item type's Settings tab, first group, headed Include rule (above Product selection where the item has one). Built in and custom item types both have it. While a rule is set, the item's header shows a Conditional badge even when the card is collapsed. | Include rule |
| A group | Inverters, Racking | The last line of the group's header, headed Include rule with a Learn more link. It cascades to every item type in the group, and each of those then shows the note "The <group> group rule above must also be met." | Include rule |
| A BOS category | BOS | The left column of the category card's settings strip under the title, headed Include rule with a Learn more link, beside the Always included / Customer chooses control. It is independent of that control (a category the rule excludes is never offered, whatever the pill says) and cascades to every item type in the category. See BOS categories. | Include rule |
| A custom racking sub-module (a carport, say) | Racking | The sub-module's group header on the Racking page, headed Include rule with a Learn more link. It cascades to every item type of that sub-module. | Include rule |
| A built-in question | Calculations > Storefront Questions > Inverters tab | On the question card, between the description and the default. See Show when on built-in questions. | Show when |
| One of your own questions or notes | The catalog page that owns it (Racking, Inverters, BOS, a custom module, or a racking sub-module) | The Visibility section of the question modal (Edit on the question card). See Show when on custom questions. | Show when |
A few things are deliberately not offered:
- The item types that define a configuration path (Microinverter, String Inverter, Optimizer / RSD) and Solar Panels have no rule, and neither does the Inverters group header. Hiding one of those would strand a whole path. To keep a customer out of the battery flow, put a Show when rule on the Battery Backup question with Value when hidden set to No.
- On the Racking page, the built in item types inside the manufacturer cards (Ballasted, Tilt Legs, Ground Mount) take the group row only. Custom item types inside those cards have their own row.
Using the editor
A row with no rule reads Always shown (on a catalog card, Included in every system.). Click + Add Condition to open the same condition builder used for formula rules: pick a question under Select a question, an operator, and a value. Group and BOS category rows carry a Learn more link back to this page in their Include rule heading; an item type's row on its Settings tab has none, because the group's link covers it.
- Choice questions offer equals, does not equal and is one of (a checkbox per answer).
- Number questions and calculated values offer equals, does not equal, is greater than, is greater than or equal to, is less than and is less than or equal to.
- Custom questions where the customer can tick several options offer contains and does not contain.
Saved conditions render as chips such as "Inverter Type ≠ Microinverter", "Inverter Type in String Inverter, Optimizer" or "Total Panels ≥ 20", joined by and. The × on a chip removes that condition. Two special chips can appear:
- A dimmed built-in chip (only on the Phase Type question card) is the configurator's own gate for that question. It cannot be removed; your conditions are added to it.
- A caution chip means the rule references a question that is no longer offered here, usually because the question was moved or the module was reparented. The rule still applies on the storefront until you remove the chip.
Default rules
Three rules ship with the app, because without them a quote would include a part that cannot be used:
| Applies to | Default rule |
|---|---|
| Ballasted MI Clamps (Inverters page) | Included when Components chosen includes Racking, Mount Type = Flat Roof and Flat Roof Subtype = Ballasted |
| MI Rail Attachments (Inverters page) | Included when Components chosen includes Racking and Flat Roof Subtype ≠ Ballasted |
| Rapid Shutdown question (Storefront Questions, Inverters tab) | Shown when Inverter Type = String Inverter |
"Flat Roof Subtype ≠ Ballasted" passes when the flat roof question was never asked, so rail attachments are included on pitched roofs and ground mounts. A system without racking gets neither part.
- A default that you have not changed shows a neutral Default tag next to its chips.
- Edit it like any other rule. Once it differs from the default, the tag becomes ↺ Reset to default.
- Remove every chip and the row reads Included in every system. with the note Default rule removed. A removed default stays removed until you click ↺ Reset to default.
- Reset, like any other edit, goes to the page's save bar.
- Default rules apply on every plan. Changing one needs the Growth plan. If you edited a default on Growth and later move to a lower plan, the default applies again and the editor notes "Your edit is saved; it applies on Growth and above".
- The Rapid Shutdown question follows its rule. If you remove or widen its default, the question is also asked on optimizer and microinverter systems wherever you stock rapid shutdown devices, and a Yes adds the device to the quote there. This takes effect at your next Publish.
When no earlier question exists to condition on, the button is disabled and its tooltip says so. The same row also edits the condition on a Calculated Values override, where it is labelled When and reads Always when empty; see Overrides for the one way an override treats its condition differently.
Which answers a rule can use
A rule can only look at answers the customer has already given by the time the item or question is decided: built-in questions from earlier steps and from the same step, number questions with the comparison operators, your own custom storefront questions from earlier steps, and calculated values. The dropdown is grouped by where the answer comes from. Mount Type offers your custom racking sub-modules next to the built in mount types, and Racking Manufacturer offers the manufacturers in your catalog.
- Calculated values are the numbers on the Calculated Values page (Total Panels and its neighbours, plus the inverter quantities), evaluated with every override that applies. A rule sees the same number the quote uses. A calculated value does not exist until the customer's layout does, and an inverter value not until the inverter product is picked; until then it behaves like an unanswered question. Item type and group rows can use calculated values on every page, Racking included. Questions can use them only after the racking step, because a racking question is asked before the layout exists.
- For a built-in question, the sources are strictly the questions asked before it: earlier questions of the same step and answers from earlier steps. Never the question itself, never a later one.
- For one of your own questions, the sources are every answer from the earlier steps, the built-in answers of the question's own step, and your earlier custom questions of the same step.
- For a custom module, the sources follow where the module sits. A sub-module under Racking (a carport) is offered the answers available inside the racking step, because that is where it renders. A custom top level module with its own step is offered everything before it.
A rule saved on a source that later stops being offered still applies on the storefront; it shows as a caution chip so you can remove it.
Example: offer monitoring only on some systems
One common rule: offer a monitoring system on string inverter and optimizer systems only, and skip it when a string inverter customer declines rapid shutdown. That is a single rule on the Monitoring group on the Inverters page. The group holds the Monitoring Devices item type, so a rule on the group header or on the item type itself works the same way:
Included when Inverter Type ≠ Microinverter and Rapid Shutdown ≠ No
- Microinverter system: the first condition fails. No monitoring question, no picker, no monitoring line.
- String inverter, Rapid Shutdown = Yes: both pass; monitoring is offered as usual.
- String inverter, Rapid Shutdown = No: hidden. The section, its BOM line and any accessories of the chosen unit disappear the moment the customer clicks No.
- Optimizer system: under its default rule the Rapid Shutdown question is not asked, so "does not equal No" passes, and monitoring is offered for the units compatible with the optimizer and the inverter chosen with it.
To offer monitoring on string inverter systems only (not optimizer systems), swap the first condition for "Inverter Type = String Inverter". To name the systems that qualify instead of the one that does not, write the first condition as "Inverter Type is one of String Inverter, Optimizer"; the chip reads "Inverter Type in String Inverter, Optimizer".
The rule decides whether the monitoring section exists at all. Which units appear in it is a separate question, answered by each product's Compatible Equipment SKU; see Monitoring devices. A unit with a blank Compatible Equipment SKU is offered on every path, microinverters included, unless a rule like the one above says otherwise.
Show when on custom questions and notes
The condition on one of your own storefront questions, or on a text note, is the same Show when row, inside the Visibility section of the question modal on the catalog page that owns the question (open the question card and click Edit). It behaves exactly like every other rule: several conditions joined by "and", "is one of", chips, Always shown when empty. The modal restates the rule under the storefront preview, for example "Shown when Mount Type = Ground", and the question card shows the Conditional badge once a rule is saved. The section only appears when there is an earlier question to condition on.
- Value when hidden follows the question's shape: a Yes/No selector for a yes/no question, the option list for a dropdown or image choice, a number box for a number question, and a checkbox list for a multiple choice question (the hidden answer is the set you tick). A text note has no value; it is either shown or not.
- With no value set, the customer's answer is removed while the question is hidden. A question that was answered and then hidden by its condition no longer carries that stale answer into product matching, formulas or later rules. If a hidden question must still count as answered (a Yes/No that other logic depends on, say), set its Value when hidden.
- The question modal saves with its own Save button. Publish as usual for customers to see the rule.
- Calculations > Storefront Questions lists each of your questions read only, with its Conditional badge, its hidden value ("hidden: answer removed" or the value) and an Edit link back to the owning catalog page.
Show when on built-in questions
Open Calculations > Storefront Questions and pick the Inverters tab (built-in question rules are available for the inverter questions). Every built-in question card that has at least one earlier question to condition on carries a Show when line between its description and its default.
- Phase Type carries a dimmed built-in chip, "Inverter Type ≠ Microinverter": the configurator only asks it on systems without microinverters. That chip cannot be removed, only extended.
- Rapid Shutdown starts with a default rule, "Inverter Type = String Inverter", tagged Default. You can extend it, change it or remove it, and ↺ Reset to default brings it back.
- Sources are strictly earlier questions: earlier inverter questions and answers from earlier steps. A custom question you added on the Inverters page cannot be a source, because custom questions are asked after every built-in question of the step.
- Edits to the Show when line and to Value when hidden go to the page's save bar: Save persists all of them at once (a "Changes saved" toast confirms it), Discard reverts. Overrides on the same page still save from their own modal.
Value when hidden
Value when hidden is the answer the configurator uses while your condition hides the question. The control appears once you have added at least one condition of your own, and a new rule starts at (none - answer removed while hidden); nothing pre-fills the question's storefront default. While it is (none), a hint under the control says what that means: treated as unanswered, so pickers that depend on this question stay hidden and formulas that use it get no value. Set a value only when the hidden question should count as answered. A Yes/No question gets a Yes/No selector, Inverter Type and Phase Type get their option list, and the rest get a text field.
For example, to skip the Rapid Shutdown question for customers who want battery backup and assume they want rapid shutdown:
Show when Inverter Type = String Inverter and Battery Backup = No Value when hidden: Yes
A string inverter customer who answers Battery Backup = Yes no longer sees the Rapid Shutdown question, the rapid shutdown device picker still appears (the hidden Yes feeds it), and any rule that reads Rapid Shutdown sees Yes. On optimizer and microinverter systems the first condition hides the question and the hidden value does not apply, because it applies only while Inverter Type = String Inverter, the default's condition, still holds. A question the configurator hides on its own (no products) stays absent exactly as before.
Saving, publishing and plans
- Catalog pages (Inverters, Racking, BOS, custom modules): adding or removing a condition on an item type or group header goes to the page's save bar. Save persists it, Discard reverts it, like every other product table edit. A custom question's rule saves with the question modal.
- Storefront Questions: Show when and Value when hidden edits on built-in questions go to that page's save bar too.
- Customers see rules only after you Publish. Preview reads the live configuration and reflects a rule as soon as it is saved; the storefront and Sales Mode serve the last published version. The Publish page lists one line per rule under Unpublished Changes, in the Include & show-when rules group: "Show <item> only when ..." for a new rule, "<Item>: condition changed to ..." for an edit, "<Item> now always shown" for a removed rule. A default rule adds "(default)" to its line. A removed default reads "<Item>: default condition removed (included in every system)", and a reset one "<Item>: condition reset to default (...)". A rollback restores the previous version's rules along with everything else. See Publishing and versions.
- Deleting a question a rule uses is blocked. Clicking delete on a custom question opens a dialog. When the question is still in use, the dialog is titled "Cannot delete" and lists every use grouped by kind: Products (match criteria), Formulas and rule conditions, Calculated value overrides, and Visibility rules (each entry reads "Include when on ..." or "Show when on ..."). Remove those uses first. When nothing blocks it, the dialog confirms and the delete is queued in the page's save bar: the question is removed when you save, and Discard brings it back.
- Changing plans: below Growth, rules you wrote on item types, groups and built in questions are kept but stop applying. Those editors turn read only with a "Requires Growth" badge, the published configuration omits your rules, and the Publish page does not report them as pending changes. The three default rules keep applying, including on a default you had edited. Upgrade again and your rules apply at the next publish. A custom question's condition is not affected by the plan.