Explicit, explicit, automatic-but-not-how-you'd-guess
addPageAction(name, attrs): fully manual, works for anything. Always lands as the fixed event type PageAction. Needs agent v593+ (effectively always available). Free attributes you didn't ask for: actionName, timeSinceLoad, referrerUrl, browserWidth, browserHeight. Has its own on/off switch, init.page_action.enabled (on by default).
recordCustomEvent(eventType, attrs): also fully manual, but you name the event type instead of always getting PageAction. Needs agent v1.277.0+, genuinely newer. No bonus attributes, just what you send. Not gated by page_action.enabled. New Relic's own guidance: keep it to roughly 5 event types per account, not one per action.
BrowserInteraction: the only one of the three that fires on its own. Despite its name, it doesn't record every interaction. The agent requires a click, then a URL (route) change, then a DOM update after that change, in that order. A click that changes no route never becomes its own BrowserInteraction, no matter how many times you click. The two buttons below prove both halves of that.