Skip to content

Event types

Outbound events (the envelope) carry a stable type. When you register an endpoint you choose which types it receives.

TypeStatusFires whenTypical use
experience.goal.reachedAvailableThe flow reaches its goal.Mark success; hand back to your systems.
experience.startedComingA person enters an experience.Note engagement; start your own timer.
experience.step.completedComingA flow step / card is completed.Track progress through the flow.
experience.endedComingThe experience ends (goal or fail).Close the loop; clean up.

More types are added over time. Subscribe only to what you handle; ignore types you don’t recognise.

Types are dot-namespaced and lower-case: domain.thing.happened. The domain today is experience. New domains may appear (for example, integration-specific ones) — match on the full string.

The catalogue and the envelope follow an additive-only rule within a version:

  • Additive (no version bump): new event types; new optional fields in data.
  • Breaking (new version): removing or renaming a field, changing a field’s meaning or type, or changing when an existing type fires.

Build defensively so additive changes never break you:

  • Ignore unknown event types and unknown fields.
  • Don’t depend on field order or on the absence of a field.
  • Branch on type (and, where present, a version marker), not on payload shape.
Was this page helpful? Tell us / report an issue ↗