AltScore
Forms Builder

Form Nodes

Every form is a graph of nodes connected on a canvas. Structure nodes define the entry point and group fields into screens; message nodes display content; data collection nodes create form fields and save their answers to variables. This page lists every node and its configuration, as it exists in the builder today. For how pages, channels, and publishing work, see the Forms Builder overview.

Each data collection node saves to a variable with an automatic type suffix:

NodeVariable SuffixData Type
Text Input_responsestring (number when bound to a numeric variable)
Email Input_emailstring
Phone Input_phonestring
Date Picker_datestring
Location Input_locationstring
File Upload_filestring
Password Input_passwordstring
Opt-In Checkbox_opt_inboolean
Checkbox Group_checkboxarray
Radio Buttons_radiostring

Structure

Start

The entry point of the form. It has no configuration — just a single outgoing connection to the first node. Every form needs exactly one Start node.

Page Start

Opens a page: a group of nodes rendered together as a single screen with one submit action. Carries the screen's presentation.

OptionDescription
titleScreen title
innerTitleInner title shown inside the screen body
descriptionDescription text under the title
imageUrlOptional header image for the screen

Page End

Closes a page and defines how the customer submits it.

OptionDescription
buttonTextLabel of the submit button for the page
messageMessage shown with the page footer
isTerminalMarks the page as the end of the form

Messages

Message

Displays one or more text messages without collecting data.

OptionDescription
messagesList of text messages to display

Send Image

Displays an image, optionally with a title and a continue button.

OptionDescription
imageUrlURL of the image
altTextAlternative text for the image
titleOptional title shown with the image
buttonTextOptional label for the continue button
width / heightImage dimensions
aspectRatioAspect ratio of the image
scaleTypecontain or cover

Interactive Options

Presents a set of options and branches the form: each option creates its own outgoing connection on the canvas, and the customer's choice decides the path. It controls navigation only — it does not save the selection as data (use Radio Buttons for that).

OptionDescription
headerOptional header text
textMain body text of the prompt
footerOptional footer text
buttonTitleLabel of the button that opens the options
interactiveTypebutton or list presentation
OptionsEach option has a label and its own outgoing connection

Data Collection

All data collection nodes share a Save to Variable section where you bind the answer to a form variable (the type suffix from the table above is appended automatically).

Text Input

Free-text question. If the bound variable's data type is number, the field becomes numeric: WhatsApp renders it with input type number (numeric keyboard and validation) and the web renderer validates that the value is a valid number.

OptionDescription
messagesQuestion text shown above the field
selectedVariableVariable that stores the answer (_response)
selectedVariableTypeData type of the variable; number turns the field numeric

Email Input

Email question with email-specific validation on both surfaces.

OptionDescription
messagesQuestion text
selectedVariableVariable that stores the answer (_email)
isMainEmailMark this as the borrower's main email
isPointOfContactMark this address as a point of contact

Phone Input

Phone number question.

OptionDescription
messagesQuestion text
countryCodeDefault country code
selectedVariableVariable that stores the answer (_phone)
isMainPhoneMark this as the borrower's main phone
isPointOfContactMark this number as a point of contact

Date Picker

Native date selector with optional range constraints.

OptionDescription
messagesQuestion text
minDateEarliest selectable date
maxDateLatest selectable date
selectedVariableVariable that stores the answer (_date)

Location Input

Collects an address as text, with flags to integrate it into the borrower's profile.

OptionDescription
messagesQuestion text
selectedVariableVariable that stores the answer (_location)
saveAsAddressSave the value directly as a borrower address
isMainAddressMark this as the borrower's main address

File Upload

Photo/file upload. On WhatsApp it renders the native photo picker and requires a server round-trip (data exchange) before the flow advances.

OptionDescription
messagesInstruction text
numberOfFilesNumber of files the customer must upload (min and max)
selectedVariableVariable that stores the result (_file)

Password Input

Masked text input for sensitive values.

OptionDescription
messagesQuestion text
selectedVariableVariable that stores the answer (_password)

Opt-In Checkbox

A consent checkbox that stores true/false. On the web the value is seeded to false, so the variable is always present in the response even if the customer never touches the checkbox.

The checkbox label works in one of two exclusive modes:

  • Static: a single label, used on both WhatsApp and web.
  • Per-state (web only): two labels — checkedLabel shown while checked, uncheckedLabel while unchecked — and the static label is not shown. These per-state labels only exist on the web; WhatsApp's native Opt-In has a single label, so it uses the checked text (the builder mirrors checkedLabel into label for this).

Switching back to static mode clears the per-state labels; the two modes are never combined.

OptionDescription
messagesOpt-in message shown above the checkbox
urlOptional URL linking to the full terms/policy
labelStatic checkbox label (static mode; on WhatsApp, always the label used)
checkedLabelWeb-only label shown while the checkbox is checked
uncheckedLabelWeb-only label shown while the checkbox is unchecked
selectedVariableVariable that stores the answer (_opt_in, boolean)

Checkbox Group

Multi-select list — the answer is an array of the selected option IDs. Up to 20 options.

OptionDescription
labelGroup title above the options (max 30 characters)
descriptionHelp text below the label (max 300 characters)
requiredWhether at least one selection is mandatory
minSelectedItemsMinimum number of options the customer must select
maxSelectedItemsMaximum number of options the customer can select
OptionsUp to 20; each has a title (max 30), an optional description (max 300), and an enabled state
selectedVariableVariable that stores the answer (_checkbox, array)

The web renderer enforces required, minSelectedItems, and maxSelectedItems before letting the customer advance.

Radio Buttons

Single-select list — the answer is one option ID as a string. Up to 20 options, and each option can carry its own description as help text under the title.

OptionDescription
labelGroup title above the options (max 30 characters)
descriptionHelp text below the label (max 300 characters)
requiredWhether a selection is mandatory
OptionsUp to 20; each has a title (max 30), an optional per-option description (max 300), and an enabled state
selectedVariableVariable that stores the answer (_radio, string)

Unlike Interactive Options, Checkbox Group and Radio Buttons save the customer's selection as data instead of branching the flow.

On this page