Skip to main content
A flow is a versioned set of screens and logic that you build in the Flow Editor. The Flows page is where you create flows, filter them by status and type, open them in the editor, and delete them. Publishing and attaching a flow to a placement happen inside the editor, not on this list.

Open the Flows page

In the dashboard sidebar, click Flows. The page is titled All Flows and lists every flow in the currently selected app. If you have more than one app, switch apps first (the app switcher is in the sidebar). Flows are scoped to a single app, so the list only shows flows that belong to the app you have selected.
TODO: screenshot of the All Flows page (header, filter bar, and flows table).

Create a flow

1

Click New Flow

Click the New Flow button in the page header. While it works the button reads Creating….
2

A starter flow is created

FlowPilot creates a flow named Untitled Flow of type onboarding and gives it a starter schema: one welcome screen, a navigation bar with a progress indicator and close button, and a footer with a Continue button. The flow is created in the app you currently have selected.
3

The editor opens

You are taken straight to the editor at /editor/{flowId}. On this first visit a template picker appears so you can swap the welcome screen for a pre-built layout or keep it and start blank. See Flow templates.
4

Rename and set the type

The default name and type are placeholders. Rename the flow and change its type (onboarding, paywall, survey, or tutorial) from the editor. See Editor overview.
New Flow always starts an onboarding flow named Untitled Flow. There is no type or name picker at creation time. You set the real name and type once the editor opens.

Filter the list

The filter bar above the table has three controls.
  • Search: the Search flows by name box filters by a case-insensitive match on the flow name. Typing is debounced, so results update a moment after you stop.
  • Status tabs: All, Published, and Drafts.
    • All: every flow.
    • Published: only flows that have at least one published version.
    • Drafts: only flows that have no published version yet.
  • Type: a dropdown with All Types, Onboarding, Paywall, Survey, and Tutorial.
There is no Archived status. A flow is either a draft (no published version) or published. To take a flow out of circulation you delete it.

Open a flow

Click a flow’s name, or the pencil Edit icon in its row, to open it in the editor at /editor/{flowId}. The Last Modified column shows how recently the flow was last updated, as a relative time (for example “Today”, “3 days ago”).

Row actions

Each row has two actions:
  • Edit (pencil icon): opens the flow in the editor.
  • Delete (in the More actions ... menu): permanently removes the flow after a confirmation dialog. See Delete a flow.
The flows list does not have Publish, Duplicate, or Archive row actions. You publish a flow from inside the editor (see Publishing). Flow duplication exists in the API but is not yet surfaced as a button in the dashboard.
TODO: re-check for a Duplicate action in the flows UI when it ships. The useDuplicateFlow hook exists in hooks/use-flows.ts but is not wired to any button as of this writing.

Drafts, published versions, and the version model

This model is the most important thing to understand on this page, because it controls what your users actually see.
  • Every flow has exactly one draft version. The draft is mutable. When you edit a flow in the editor, your changes are autosaved to the draft.
  • Publishing creates a new immutable published version with an incrementing version number (v1, v2, and so on). A published version is a frozen snapshot. It is never edited in place.
  • A flow’s status in the list is derived from whether it has any published version: a flow with at least one published version shows under Published, a flow with none shows under Drafts.
Publishing does not automatically change what your app serves. Placements and experiments reference a flow by a specific flow_version_id (an exact published version), not by “the latest version of this flow”. After you publish, you attach that version to a placement to route traffic to it.
Edit in editor ──> draft (autosaved)

        ▼  Publish (from the editor)
   published v1 (immutable)

        ▼  Attach to a placement (Replace current flow)
   placement.default_flow_version_id = v1  ──> SDK now serves v1
To roll out a change to a live flow:
1

Edit the draft

Open the flow and make your changes. They save to the draft automatically.
2

Publish

Publish from the editor. This creates the next immutable version (for example v2).
3

Attach the new version

Point the placement at the new version using Attach to placement in the editor (choose Replace current flow). Until you do this, the placement keeps serving the previously attached version. See Creating placements.
There is no version rollback button. Versions are immutable, so “rolling back” means attaching an earlier published version to the placement again, or publishing a new version with the old content. You can review which version a placement served over time in its flow history (see Placement analytics).

Delete a flow

In a flow’s More actions ... menu, choose Delete. A confirmation dialog titled Delete this flow? appears with this warning:
Every draft and published version is removed. Placements still referencing this flow will fall back to their empty state until you reassign them.
Confirm to delete. The dashboard does not stop you from deleting a flow that a placement still points at. If you delete such a flow, that placement serves nothing (its empty state) until you attach a different flow version.

Common mistakes

  • Expecting edits to go live without publishing. Editing only changes the draft. Until you publish and attach the new version to a placement, your users keep seeing the previously attached version.
  • Assuming publishing repoints placements automatically. It does not. A placement keeps serving its attached flow_version_id until you explicitly attach a newer version.
  • Looking for an Archived tab. There is none. The only statuses are draft and published. Use delete to retire a flow.
  • Deleting a flow a placement still uses. Nothing blocks the delete, but the placement falls back to its empty state. Reassign the placement to another flow first.
  • Building under the wrong app. Flows are app-scoped. Confirm the app switcher shows the right app before you create a flow.

Troubleshooting

SymptomCauseFix
A flow you just created is missing from the listYou are viewing a different app, or a Status / Type filter is excluding itSwitch to the correct app and reset the filters to All / All Types
Your published changes are not reaching the appThe placement still references the old versionAttach the new published version to the placement (Replace current flow)
A new flow shows under Drafts even though you edited itIt has no published version yetPublish it from the editor
A placement shows nothing after you deleted a flowThe placement still referenced the deleted flowAttach a different flow version to the placement