There were of course various levels of abstraction, but sure I would know when an event happened because a user scrolled by a widget on an external site, on the main domain, when they clicked on the widget, liked it etc. all the normal things you would want to capture if you are measuring widget interactions across sites.
on edit: So in your first scenario - if a non developer wanted to look over all events they might see that there were events named "hotspot seen", "hotspot hovered", "hotspot clicked" and so forth.
In those ones actually there was the widget id that hotspots where in and of course the original interaction id so you could draw a graph of how many users progressed from hotspot seen to product liked and so forth. But at some point a non developer is going to probably have to ask a developer or elasticsearch expert - I need this data out of the system and summed in this way.
Since one of the things that was in my properties was an identifier added in build stage for every analytics call in the code if I wanted to figure out what analytics properties came from what lines of code it was relatively easy.
So could track when properties were added, spread of their usage, and using git blame figure out who added it. But we were also a small team so usually I added it.