David, I have a workaround that might work for you. Disclaimer that I have not tested this yet, but I believe it will work.
This requires 2 separate trigger campaigns. The first smart campaign will use the trigger "Program Status is Changed". Add the constraint "Success=True". In the flow step of this campaign, use "Request Campaign", in which you will be requesting your second trigger campaign.
In the smart list of your second campaign, use the trigger "Campaign is Requested" and add constraint "Min. Number of Times" and input value of 20. The flow of this campaign will be to send you the alert email and upon scheduling allow it to fire just once.
Again, I have not tested this myself, but I believe it could work for your use case. If you do try this out I will be interested to see if it works for you. Hope this helps!