Building Tests6 min read

Test Lifecycle

Draft, running, paused, completed, archived — what each state means, which transitions are allowed, and when you can edit, delete, duplicate, or restore.

Test Lifecycle

Every test in Otter A/B moves through five states — draft, running, paused, completed, archived — and a handful of well-defined actions move it between them. This page is the complete reference.

The lifecycle exists to protect the integrity of your results. Drafts are fully editable because they have no visitor data; everything else is progressively locked because real conversions are riding on the configuration. Most of the rules below come down to one principle: once visitors are involved, you can't silently change the experiment.

The five states

Draft

draft

Not yet visible to visitors. The only state where every wizard field can be edited.

  • Edit anything: variants, goals, targeting, URL match, traffic split.
  • Delete is allowed — drafts can be removed entirely.
  • No visitor data exists yet.
  • Restore-version is available to roll back to a prior snapshot.

Running

running

Live. The SDK is assigning visitors to variants and recording conversions.

  • Wizard fields are locked. Test name and collaborators can still change.
  • Pause to freeze new assignment; Complete to mark the test finished.
  • Cannot be deleted — duplicate or archive instead.

Paused

paused

No new assignments. Already-assigned visitors keep seeing their variant; conversions still count.

  • Reversible — Resume sends you back to running.
  • Use Pause when you need to investigate something without losing data.
  • Complete from here to end the experiment cleanly.

Completed

completed

Experiment is over. Results are frozen — no new assignments, no new conversions.

  • Resume is allowed unless the scheduled end date has passed.
  • Archive moves it out of the main list once you no longer need quick access.

Archived

archived

Hidden from the main list for tidiness. Data is preserved.

  • Still readable — switch the list filter to Archived or All.
  • Can be duplicated to spin up a new draft from the configuration.
  • Not deletable from the dashboard.

Allowed transitions

Anything not listed here is blocked by the model. Attempting an invalid transition raises a clear error and leaves the test in its current state.

FromActionToNotes
DraftStartRunningRuns a readiness check: at least 2 variants, exactly 1 control, at least 1 goal, exactly 1 primary goal, and a connected GA4 property if any goal is a GA4 event. Rejected with a clear message if anything is missing.
RunningPausePausedStops new assignments; existing visitors keep their variant.
RunningCompleteCompletedRecords ended_at; freezes assignment and conversions.
PausedResumeRunningResumes new assignments and conversion tracking.
PausedCompleteCompletedEnds the test cleanly without resuming first.
CompletedResumeRunningBlocked if the scheduled end date has passed — update it first.
CompletedArchiveArchivedHides the test from the default list. One-way from the UI, but data is preserved.
AnyDuplicateDraft (new)Creates a fresh draft with the same configuration. No data carried over.
DraftRestore versionDraftReplaces the current draft config with a prior snapshot. Drafts only.

Automated transitions

The table above covers the manual actions you trigger from the dashboard. Tests can also transition automatically: a draft with a future start time moves to running when that time arrives, a running test with a future end time moves to completed when that time arrives, and a running test with stop conditions moves to completed when a condition trips. See the Scheduled Start & End and Stop Conditions sections for the full rules, and the Activity Log for how each transition is recorded.

Practical rules of thumb

Finalize everything before Start. Wizard fields lock the moment a test leaves draft. The five minutes you spend triple-checking the goal config save you a rerun later.

Pause when in doubt — Complete when done. Pause is the no-regrets state for “something seems off, let me investigate.” Complete signals the experiment is over and freezes the result.

Use Duplicate, not Edit, when the test needs to change. If you discover mid-test that the goal is wrong or a variant has a bug, complete the test, duplicate it into a new draft, fix the issue, and start fresh. Mid-flight edits would invalidate the collected data anyway.

Archive for tidiness, not deletion. Archived tests still exist and can be referenced or duplicated. There's no way to permanently delete a test that has collected real data, by design.

Frequently asked questions

Quick answers to the questions teams ask most about this part of Otter A/B.