Flow dismiss, snooze, and restart

Prev Next

When a flow ends, what happens next depends on how it ended and on the flow's frequency settings. This guide explains the difference between dismiss, complete, snooze, and restart, and how to fix the two most common surprises: a flow that keeps reappearing, and a flow that won't reappear.

What's the difference between dismissing and completing a flow?

  • Dismiss ends the flow without finishing it: the user clicks the X, or a button/trigger fires a Dismiss action. Starting another flow ("Start a flow" action) also auto-dismisses the current one.

  • Complete means the user reached a completion step. By default the last step completes the flow; you can mark any step as an explicit completion step.

Both dismiss and complete create a session record for that user and flow. That record is what frequency rules check against later.

What happens when a flow is snoozed?

Snoozing a flow closes it for a set time. Add a Snooze flow action (or a snooze button) to any step and set a duration; see Snooze a flow. The flow closes and reappears after the snooze period, but only if its auto-start conditions are true again at that point. The button can use any label ("Remind me later," "Ask me again later").

What happens to progress on reload or re-identify

Progress through a flow is stored on Userflow's servers against the user, not in the page. Every step's state is kept on the backend, so a user who is partway through a flow and reloads the page, or navigates to a different page in your app, picks the flow up at the step they had reached rather than starting over from step one.

Two consequences are worth knowing:

  • Calling userflow.identify() again does not restart the flow. Re-identifying the same user on a new page is normal and expected. It doesn't reset progress or start the flow over.

  • Once a flow has started, it stops looking at the URL. Auto-start conditions, including any URL condition, are what decide whether a flow begins. After that, each step goes wherever the step itself specifies. A flow in progress won't stop because the user moved to a page that wouldn't have started it.

One thing to watch: if a step points at a tooltip target, give your app enough time to render that element after the reload. If the element isn't there yet, the step can time out. To give it more time, raise Missing tooltip target tolerance in your theme. See Flow step timeouts.

How can a flow show again?

There are two ways a flow can show again:

  • Exit menu (per-theme). In your theme settings (Settings → Theme), you can set the X-button to show an exit menu with Show the close/restart menu instead of dismissing immediately. The exit menu appears only on steps after the first.

  • Frequency settings. By default a flow is "Only start once per user." To allow it to recur, change the frequency to start multiple/unlimited times. See How to start flows or checklists.

Why does my flow keep restarting after the user dismisses it?

This happens when frequency is set to start multiple/unlimited times with no guard. Add an event condition so a fresh session doesn't immediately re-trigger, for example: Flow started exactly 0 times in the last 1 hr where flow id is <flow id>.

Why won't my flow restart, even after I edited it?

The user already has a completed or dismissed session, and "Only start once per user" is preventing a repeat. Editing or republishing the flow does not reset history. To re-show it:

  • Delete that user's session for the flow (user profile → session → Delete session), or

  • Change the frequency setting, or

  • For testing, delete the user entirely to reset all history.