Payload structure
All webhook payloads share a common envelope:
step.broken
Fired when Zenstep’s Smart Anchoring engine cannot find the DOM element for a step after multiple consecutive page loads.
step.recovered
Fired when a previously broken step is successfully anchored again.
flow.completed
Fired when a user completes a flow (reaches the last step and confirms).
userHash is a HMAC-SHA256 hash of the userId passed to identify(). The
raw user ID is never sent in webhook payloads.
flow.dismissed
Fired when a user explicitly dismisses a flow (clicks the X or “Skip” button).
Common data fields