Action webhooks are useful for real-time personalisation and analytics. If you only need end-of-challenge events, stick with
challenge-completion.When to use action webhooks
- Progressive personalisation: update a recommendation engine as each action is completed rather than waiting for the full challenge.
- Granular analytics: feed a data warehouse with per-step engagement metrics.
- Custom side-effects: trigger downstream workflows (e.g. email a partner) when a specific action type is completed, regardless of which challenge it belongs to.
The action-participation event
Subscribe to the action-participation event:
Example payload
eventSourceIdis the action participation ID, not the action definition. If you need the action definition, usepayload.actionId.payload.actionTypematches the enum in action definitions.
Filtering by action or challenge
Combineaction-participation with entity-level filtering to subscribe to only a specific action or challenge:
Volume expectations
Action webhooks fire far more frequently than challenge webhooks. A 5-action challenge fires 5action-participation events plus 1 challenge-completion event per user completion. Plan accordingly:
- Size your handler for peak burst throughput, not average.
- Process asynchronously — acknowledge the delivery with
200 OKfast, then enqueue work. - Use entity filters to cut volume before it reaches your handler.
Action completion vs challenge completion
| Event | Fires when |
|---|---|
action-participation | A user finishes one action inside a challenge |
challenge-completion | The user finishes all required actions in a challenge |
challenge-completion. Reach for action-participation when you need real-time signals at the step level.
Related
Event Catalog
Full event list, including all action-related events.
Entity Filtering
Scope subscriptions to specific actions or challenges.

