Thanks, Andreas. Just to be clear, the removeRepeatingRow() function works (it removes rows), and the remove:repeating_foo event also works (when someone clicks Modify -> Trash , and the row is deleted, this event fires and can be used to cause a sheet worker to run). The problem is that one would expect them to be connected ; i.e. calling the removeRepeatingRow() function should be another action (besides Modify -> Trash ) that causes the remove:repeating_foo event to fire, and apparently it does not. I'm afraid to assume that this will always be how this works - if I write my own row-removal-cleanup stuff into code that calls removeRepeatingRow() , and later someone at Roll20 decides that this was a bug and fixes things so that the remove:repeating_foo event does fire, my code will be broken. So I guess what I'm looking for is confirmation that this isn't a bug, and that it won't be changed. Or for it to be changed now. I don't care, I'd just like to know which way to write my code.