> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getflowpilot.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Managing flows

> Create, filter, open, and delete flows, and understand the draft and published version model that controls what your app serves.

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.

<Note>TODO: screenshot of the All Flows page (header, filter bar, and flows table).</Note>

## Create a flow

<Steps>
  <Step title="Click New Flow">
    Click the **New Flow** button in the page header. While it works the button reads **Creating...**.
  </Step>

  <Step title="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.
  </Step>

  <Step title="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](/dashboard/flow-templates).
  </Step>

  <Step title="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](/editor/index).
  </Step>
</Steps>

<Note>
  **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.
</Note>

## 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**.

<Note>
  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.
</Note>

## 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](#delete-a-flow).

<Note>
  The flows list does not have **Publish**, **Duplicate**, or **Archive** row actions. You publish a flow from inside the editor (see [Publishing](/editor/publishing)). Flow duplication exists in the API but is not yet surfaced as a button in the dashboard.
</Note>

## 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.

```text theme={null}
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:

<Steps>
  <Step title="Edit the draft">
    Open the flow and make your changes. They save to the draft automatically.
  </Step>

  <Step title="Publish">
    Publish from the editor. This creates the next immutable version (for example `v2`).
  </Step>

  <Step title="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](/dashboard/creating-placements).
  </Step>
</Steps>

<Note>
  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](/dashboard/placement-analytics)).
</Note>

## 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

| Symptom                                                     | Cause                                                                      | Fix                                                                          |
| ----------------------------------------------------------- | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| A flow you just created is missing from the list            | You are viewing a different app, or a Status / Type filter is excluding it | Switch to the correct app and reset the filters to **All** / **All Types**   |
| Your published changes are not reaching the app             | The placement still references the old version                             | Attach the new published version to the placement (**Replace current flow**) |
| A new flow shows under **Drafts** even though you edited it | It has no published version yet                                            | Publish it from the editor                                                   |
| A placement shows nothing after you deleted a flow          | The placement still referenced the deleted flow                            | Attach a different flow version to the placement                             |

## Related pages

* [Flow templates](/dashboard/flow-templates)
* [Editor overview](/editor/index)
* [Publishing](/editor/publishing)
* [Creating placements](/dashboard/creating-placements)
* [Placement analytics](/dashboard/placement-analytics)
