Skip to main content

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

FieldTypeDescription
flowIdstringUUID of the flow
flowNamestringDisplay name of the flow
flowTypestringOne of: hint, tour_step, modal_step, checklist, banner
stepIdstringUUID of the step (where applicable)
userHashstringHMAC-SHA256 hash of the userId
sessionIdstringBrowser session identifier
pageUrlstringFull URL where the event occurred
orgIdstringYour Zenstep organisation ID