Hey @wernstrom,
Tough case you got here. You’re absolutely right. Assuming you’re flow is triggered by a placed order event, using a condition such as “collection contains X” would be evaluated based on the entire order. This means, that if someone purchases more than one item - which includes one from the targeted collection, they would be eligible.
One way I can see this being accomplished would be through a series of trigger splits with the conditions of: “Collections contains X AND Collection does not contain Y AND Collection does not contain Z...”. In this case, Y and Z would be all other categories that is not X. This would allow you to isolate only orders that were purchased with this specific collection.
You can then iterate through the rest of the collections with a different branch with a condition of: “Collections contains Y AND Collection does not contain Y AND Collection does not contain X...”.
Depending on how many collections there are, this can get expansive.
A more technical method would be triggering a custom event when someone’s purchases contains only products from one collection. This way, you can simply trigger a flow off this custom events while ignoring orders which contain products from a wide number of categories.
I hope this helps!
David