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

# Running an experiment

> Start, pause, resume, and stop an experiment, and what each transition does to the placement it runs on.

An experiment moves through a small set of states. This page covers every control on the detail page and the list, and exactly what each one does to the placement the experiment is attached to.

## The lifecycle

```mermaid theme={null}
flowchart LR
  Draft -->|Start| Running
  Running -->|Pause| Paused
  Paused -->|Resume| Running
  Running -->|Stop| Completed
  Paused -->|Stop| Completed
  Running -->|Declare winner| Completed
  Paused -->|Declare winner| Completed
```

* **Draft**: created, not started. The placement still serves its default flow.
* **Running**: live, enrolling users into variants.
* **Paused**: temporarily halted. The placement serves its default flow again, but assignments are remembered.
* **Completed**: ended, either with a declared winner or without one. This is a terminal state.

## Controls

Most controls live on the experiment **detail page** header. The action buttons change with the status:

| Status    | Buttons shown                  |
| --------- | ------------------------------ |
| Draft     | **Edit**, **Start Experiment** |
| Running   | **Pause**, **Stop**            |
| Paused    | **Resume**, **Stop**           |
| Completed | **Duplicate**                  |

The experiments **list** also has a `...` menu on each row with **Pause** (when running), **Resume** (when paused), and **Delete**.

## What each transition does

### Start (Draft to Running)

Starting begins bucketing. The experiment is marked **running** and bound to its placement as the active experiment. From this moment, qualifying users are assigned to variants and the placement serves variant flows instead of its default.

<Warning>
  Starting an experiment changes what the placement serves to live users. Make sure both variant flows are the versions you intend to test before you start.
</Warning>

### Pause and Resume

**Pause** stops enrollment without ending the test. The experiment is marked **paused**, and while it is paused the placement falls back to serving its **default flow**, the same as if no experiment were attached.

The assignments already made are **not** thrown away. They are remembered, so when you **Resume**, every user who was already bucketed returns to the same variant they had before. Pausing is safe and reversible; use it to freeze a test without losing your data or your buckets.

### Stop (Running or Paused to Completed)

**Stop** ends the experiment with **no winner**. The experiment becomes **Completed · No winner**, it is detached from the placement, and the placement reverts to serving its **default flow**. Stopping is irreversible: you cannot resume a stopped experiment or collect more data on it. Its results are kept for reference.

To end an experiment by promoting one variant to the placement default instead, use **Declare Winner**, covered in [Reading results](/dashboard/reading-results).

### Duplicate

**Duplicate** copies an experiment's structure (variants, traffic split, metric, confidence) into a brand new **draft** named `... (Copy)`. Start dates, the winner, and live results are not carried over. Use it to rerun a similar test.

### Delete

**Delete** removes an experiment entirely. Only **draft** experiments can be deleted. Once an experiment has started (running, paused, or completed) the backend keeps it so its history and results are preserved, and rejects the delete. Pause or stop a live test if you want it off the placement, but it stays in your list.

## What the placement serves in each state

| Experiment state                | What the placement serves                                |
| ------------------------------- | -------------------------------------------------------- |
| Draft                           | Default flow (experiment is not attached yet)            |
| Running                         | A variant flow per assigned user                         |
| Paused                          | Default flow (assignments are remembered for resume)     |
| Completed · No winner (stopped) | Default flow                                             |
| Completed · Winner (declared)   | The winning variant's flow, which is now the new default |

<Note>
  SDK clients cache resolved flows, and the backend caches placement configuration. After you start, pause, stop, or declare a winner, allow a short propagation window before every device reflects the change. Sticky assignments mean already-enrolled users keep their variant regardless. Assignment is keyed off a stable per-install user id that the SDK generates and persists; see [Variables and SDK context](/ios-sdk/variables-and-context) for how that id works and why a returning user stays in the same variant.
</Note>

## Common mistakes

* **Treating Stop as Pause.** Stop is final and clears the experiment off the placement. If you only want to take a breather, use **Pause**, which keeps assignments and lets you resume.
* **Expecting Stop to apply a winner.** Stopping reverts the placement to its original default flow. To promote a variant, use **Declare Winner** instead.
* **Trying to delete a live or finished experiment.** Only drafts are deletable. Stop a running test to take it off a placement; it remains in the list as a completed record.

## Related pages

* [Reading results](/dashboard/reading-results)
* [Experiments](/dashboard/experiments)
* [Creating an experiment](/dashboard/creating-experiments)
* [Placement analytics](/dashboard/placement-analytics)
* [Variables and SDK context (stable user id)](/ios-sdk/variables-and-context)
