How do I track if different iterations of the same blueprint have been interacted with in a scene?

As usual I was overthinking. Above is more generic idea for keeping track of items, and sadly there is no automatic way to keep same ids for same items during whole development, i think it needs human input somewhere.

Anyway here is simple code that will manage your trees without caring which tree is which, this only counts untouched trees.

EVENT_ChangeState sets materials for test cube mesh. EVENT_CountTrees counts untouched trees, and if it’s ZERO, it sets the state to ALL touched. However, this only happens in the last checked tree blueprint. I did not add a dispatcher, etc., to keep it simple. So other trees/blueprints do not receive event to change state.

and enum for tree state:

ps.
To keep track of separate trees, you can read actor name in blueprints, and create map variable that holds name of actor as key, and state as value.