Skip to main content



A flow represents a single end-to-end onboarding or engagement flow users will experience in your product such as Marketers trial onboarding , Invited users creating first project onboarding, or Admin onboarding.

Flows are composed of connected blocks that contain the targeting and logic rules.

Flow lifecycle for users

A flow can be in the following states for each user.

Not qualifiedThe user does not meet the entry condition and will not enter the flow. This is the default state.
QualifiedThe user meets the entry condition and is qualified to start the flow. The flow has not started yet because none of the blocks are active.
StartedUser has started the flow. At least one step block is active.
FinishedUser has finished the flow by hitting a finish block.
ExitedUser was manually exited from the flow without finishing (e.g. could be a “Hide onboarding” link).

You can see or reset the state of each user per flow on the users page.

You can also programmatically reset the state of a flow on a user by user basis by accessing flow intents via an SDK. This is useful for building out experiences that might involve bringing a user back to the beginning of a flow such as a control for reseting a product tour.


Additional flow state accessors and intent methods are coming soon.

Flow status

Flows can have a status of either enabled or disabled for a particular environment. Setting the status of a flow effectively allows you to turn a flow on or off depending on your needs.

  • Enabled - Users who match the targeting rules are able to enter the flow and users who are progressing in the flow are able to continue progressing within the flow
  • Disabled - Users will be prevented from entering the flow (even if they match the targeting rules). Users who are progressing in the flow will not be able to continue progressing until the flow is enabled again.

Flow status can be set from flows page or the targeting tab in the flow builder. Setting the flow status affects all versions of a flow for a particular environment.


When you create a new flow, its status will default to enabled on the development environment and disabled on the production environment.

Flow versioning

Flows can be versioned to keep a snapshot of the flow at a particular moment so you can continue to iterate on new changes without worrying about breaking any experiences that rely on how your flow looked like before.

A version is associated with a version tag and an optional commit message which can help with describing the changes made in the version. Versions cannot be modified further once created.

When creating a flow version, you can specify how users will transition when they encounter this version. Dopt currently supports two transition methods:

  • Restart flow - Restarts users who have started (but not completed) the flow to the beginning of the new flow version
  • Exit flow - Exits users who have started (but not completed) the flow so they will not see the new version

How to create a flow version →