final case class Event(name: String, payload: Map[String, String])
What the browser sent: the handler name from the event binding, and the payload the client collected (an input's value, a form's fields). Both are untrusted input; the wire layer caps and validates before this exists.