[Solution] Multiple checkbox filters on a Repeating Group — simpler than Daisy Chain

Hey everyone,

I was looking for a clean way to implement cumulative checkbox filters on a Repeating Group. I searched the forum but couldn’t find a satisfying answer — most relevant threads were archived and I couldn’t reply to them.

I came across the Daisy Chain Filtering method, but honestly found it hard to follow and overly complex to maintain. So I came up with a different approach that works great for me, and I wanted to share it here as a new reference for people in the same situation.


The approach: one hidden RG per filter + intersect (or merge)

Inside a hidden Popup (just to keep the page clean and avoid cluttering the elements tree), I created one Repeating Group per checkbox filter.

Each hidden RG has a conditional data source:

  • If the checkbox is checked → Search for [DataType] with the relevant constraint
  • If the checkbox is unchecked → Search for [DataType] with no constraint (returns everything)

Then my main visible RG data source is simply:

RG_Filter1’s List of Things intersect with RG_Filter2’s List of Things intersect with RG_Filter3’s List of Things


Why this works

When a checkbox is unchecked, its RG returns the full list — so the intersect doesn’t restrict anything. When it’s checked, its RG returns only the filtered subset — so the intersect narrows the result down. Stack as many checkboxes as you want, it cumulates perfectly.


Intersect or Merge — depending on your logic

This is actually where the approach gets flexible:

  • Use intersect with if you want an AND logic — the result must match all checked filters simultaneously
  • Use merge with if you want an OR logic — the result matches at least one of the checked filters

You can even combine both depending on your use case.


Why I prefer this over Daisy Chain

  • No workflows, no custom events — everything is declarative, in the data source
  • Adding a new filter = add one hidden RG + add it to the intersect/merge. That’s it.
  • Much easier to read and maintain, especially when coming back to the app months later
  • I can’t speak to WU performance vs Daisy Chain — happy to hear from more experienced Bubblers on that

Hope this helps anyone who was stuck on the same problem. Feel free to share your thoughts or improvements!

Happy building :bubbles:

3 Likes

You can achieve the same result with a single Do a Search, no hidden RGs and no intersect :slightly_smiling_face:

:backhand_index_pointing_right: The idea is to drive the filter using an Option Set.

Setup

Create an Option Set Checkbox Filter with an attribute:

Allowed values (list of yes/no)

Then define:

  • Unchecked → Yes, No

  • Checked → Yes

Next, create a reusable that simply toggles between these two states.

In your RG

You just need one constraint:

Field (yes/no) is in Reusable Checkbox’s Allowed values

Result

  • Unchecked → allows Yes + No

  • Checked → allows Yes

Filters become cumulative, with no intersect, no hidden RGs, and only one search :+1:

2 Likes

Here’s one of the ways I go about it in one filter:

Reducing lengthy conditions to integers lets you use simple comparison operators.