webhook
candidateStageChanged
Fires whenever a candidate transitions to a new user-visible node
in their pipeline (any node that isn't a routing-only Choice/Group
node). Routing decisions traversed during the hop are folded into
data.branched_through so receivers can apply their own definition
of "rejected" / "advanced" without us guessing.
The previous node's response data (resumatic score, assessment
results, manual-review verdict, etc.) is included in
data.previous.response — shape varies by data.previous.node_type.
2XXReceiver acknowledged the event.
