Skip to main content
Understanding a handful of concepts makes the rest of Feedal click immediately. This page covers each building block, what it does, and how they connect.

The data model


Form

A Form is the top-level container. It has a name, a slug (used in its public URL), and always has exactly one active Draft and zero or more Published Versions. You manage forms from the dashboard home. Opening a form takes you into the Studio, where you edit its draft.
The form’s public URL is yourdomain.com/v2/{slug}. The slug is set when you create the form and can be changed in Settings.

Node

A Node is a single step in a form. Nodes are the building blocks you arrange in the Studio. There are four node types:
TypePurposeHas outgoing edges?
welcomeOpening screen before questions startYes
questionCollects an answer from the respondentYes
statementInformational screen, no answer requiredYes
endClosing screen or redirect — terminates the sessionNo
A form must have at least one welcome node (the entry node) and at least one end node (the fallback end node). Every other node sits between them. Question nodes have a question type — short text, multiple choice, rating, and so on. See Question types for the full list.

Graph

The Form Graph is the complete description of a form’s structure: all its nodes and all the edges connecting them. It is stored as a single JSON document and versioned atomically — when you publish, the entire graph is snapshotted. The graph has two special pointers:
  • entry_node_id — which node respondents see first
  • fallback_end_node_id — where respondents land if no conditional edge matches

Edge

An Edge is a directed connection from one node to another. Edges define the flow — they tell the engine “after this node, go to that node”. Every node can have multiple outgoing edges. Edges are evaluated in priority order (lowest number first). The first edge whose condition is satisfied (or which has no condition) is followed.
One outgoing edge with no condition acts as the default route — it always matches and is typically placed last (highest priority number).

Condition

A Condition is an optional rule attached to an edge. When an edge has a condition, it is only followed if the condition evaluates to true based on the respondent’s answers. Conditions are built from rule groups:
Condition
└── groups (evaluated with AND or OR between them)
    └── rules (each rule: variable · operator · value)
A variable is typically a node ID — it refers to the answer the respondent gave to that question. Operators include equals, contains, greater_than, between, is_answered, is_skipped, and more. See Conditional branching for the full condition builder reference.

Version

A Version is an immutable, published snapshot of the form graph. When you click Publish, Feedal freezes the current draft into a new version. Respondents always fill out a specific version — this means historical responses remain accurate even after you update the form.
DraftPublished Version
MutableYes — edits happen hereNo — never changes
Respondents see itNo (preview only)Yes
One per formYesOne per publish
Responses attachedNoYes
Publishing does not replace the draft. After publishing, the draft continues to exist and you can keep editing it independently.

Session

A Session represents one respondent’s visit to a published form. It is created the moment someone opens the form URL and tracks:
  • Which version they are filling out
  • Their current position in the graph
  • The path of nodes they have visited (traversal_path)
  • Status: in_progress, completed, or abandoned
  • Metadata: IP address, user agent, referrer, source channel, device type, location
Sessions can be browsed and inspected individually in the Responses tab of the Results hub.

Node Response

A Node Response (or simply a Response) is a single answer recorded within a session — one per question the respondent answered. It stores:
  • The node it belongs to
  • The answer value (type depends on the question type)
  • Time spent on this question
  • Score awarded (if scoring is enabled)
Screen nodes (welcome, statement, end) do not produce Node Responses — only question nodes do.

Next steps

Quick start

Build and share your first form in 5 minutes.

Studio overview

Learn how the three-tab Studio is organized.

Question types

Explore all 18 question types.

Conditional branching

Build logic that adapts to each respondent’s answers.