# Understanding flows

### Key Concepts

Formsort uses a few foundational concepts that work together to help you build, manage, and optimize form flows. Here’s how they connect:

#### Flow

A **flow** is a full form experience, like a signup, onboarding, or lead capture journey. Think of it as the container for everything the user sees and interacts with. Each flow lives in the Studio and serves a distinct purpose.

**Example:**

* `signup-flow`
* `onboarding-flow`

<div align="left"><figure><img src="https://1036686854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJPnL__mOdr_mLZ8nwf%2Fuploads%2FUAKzPs0mn4Y1EWm3M0u7%2Fimage.png?alt=media&#x26;token=e528d902-695b-4ec6-97bd-288f0f200a37" alt=""><figcaption></figcaption></figure></div>

#### Variant

A **variant** is a version of a flow. Every flow begins with a **Main** variant, but you can duplicate and modify variants to test different user experiences.

Variants all aim to achieve the same goal but may include different steps, logic, or copy.

<div align="left"><figure><img src="https://1036686854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJPnL__mOdr_mLZ8nwf%2Fuploads%2FpVfGSjLiwgzG8amCiTiQ%2Fimage.png?alt=media&#x26;token=ff5c0e8a-027b-4977-ad4a-8a7777d22c43" alt=""><figcaption></figcaption></figure></div>

#### Group

**Groups** are optional, but useful for organizing complex flows. A group is a collection of **steps** within a variant, helping you logically separate sections of a form.

{% hint style="info" %}
Groups are not visible to responders—they’re for internal organization only.
{% endhint %}

<div align="left"><figure><img src="https://1036686854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJPnL__mOdr_mLZ8nwf%2Fuploads%2F4MoOOB6QiIDkqpfNiobM%2Fimage.png?alt=media&#x26;token=54766729-e3bc-408a-964a-8e0bcc3a5517" alt=""><figcaption></figcaption></figure></div>

#### Step

A **step** is a single "page" of your flow. It organizes **questions** into digestible sections, guiding responders through the form experience.

Steps live inside groups (or directly inside a variant if no groups are used).

<div align="left"><figure><img src="https://1036686854-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MJPnL__mOdr_mLZ8nwf%2Fuploads%2FpxggaOktnrkvl13f8rJb%2Fimage.png?alt=media&#x26;token=349adb72-aac2-418a-add8-18fd929401c0" alt=""><figcaption><p>A step with a question</p></figcaption></figure></div>

#### Question

**Questions** are the form fields that collect user input and stores them into **variables** —like name, email, or file uploads. You can drag-and-drop questions to reorder them, move them across steps, or display them side-by-side.

{% hint style="info" %}
Example: collect first name and last name in a single row.
{% endhint %}

#### Variable

A **variable** is a reference to the **responder's** answer for a specific **question** in your form, used to store and retrieve their responses within Formsort and your external systems. In addition to question variables, other types of variables exist, such as those provided externally, calculated inline, or retrieved through API lookups and system libraries — all of which are automatically saved as part of your form responses, and sent to your data integrations.

{% hint style="info" %}
Variables have a wide range of configuration options—check out the section [**Understanding variables**](https://docs.formsort.com/adding-questions-and-content#understanding-variables) below to explore them all in detail.
{% endhint %}

#### Responder

A **responder** is your end user—the person going through your flow and submitting answers. All session data and responses are tied to the responder.

#### Conditional logic

Conditional logic allows flows to adapt dynamically to responder inputs, enabling a personalized experience without the need to create multiple flows. It can be applied to control the visibility and behavior of **questions**, **steps**, **groups**, and redirects.&#x20;
