The purpose of events is to have triggers without needing an advancement for it. This should go hand in hand with the current data driven files. We have been using advancements for a totally different reason than what they were intended for. And that's what we wanted to avoid from 1.13 onwards. A few advantages is they work for all entities, not only for players. They keep triggering, so you don't need to revoke the advancement.
Events are json files put in namespace/data/events
Its structure is very similar to the current advancement structure of a criteria.
This event would run namespace:foo
for every zombie that hurts a player in a plains biome
{
"event": {