Skip to content

Dynamic Option Filtering

Dynamic option filtering changes the choices available in a select, radio, or multi-select field based on earlier answers. It is useful for region-specific services, compatible products, available appointment types, and ranked preferences.

Choose the Filtering Action

  • Filter options (allow only): provide the complete list that remains.
  • Refine options (exclude): provide the smaller list that must disappear.
  • Exclude selected value from field: remove values already chosen in another field, such as a first preference from the second-preference list.

The rule stores option values, not only labels. If the visible label is Saudi Arabia and its value is saudi, configure the rule with saudi.

Example: Region-Specific Plans

Assume deliveryRegion contains saudi, uae, and global, while servicePlan contains every plan.

Create one mutually exclusive rule per region:

  1. When deliveryRegion equals saudi, allow only the Saudi plan values.
  2. When it equals uae, allow only the UAE plan values.
  3. When it equals global, allow only the globally supported values.

Descriptive names such as Saudi region exposes local plans make the rule trace understandable without opening the editor.

Handle an Existing Selection

A respondent may select a plan and then change the region. Test that sequence, not only a fresh form. The runtime removes unavailable choices from the visible list; the workflow must not submit a value that is no longer allowed.

Use Map & test to inspect the affected field's allowed values for every source choice. Test empty and unset sources, overlapping lists, and the case where filtering would leave no option.

Publication and Submission Safety

Publication is blocked when a filter has no configured values, targets a missing field, uses an unsupported action, or participates in an invalid dependency graph. At submission time, the server rebuilds the active field state and rejects values outside the allowed options, even when a caller sends the request directly.

KinoForms documentation