LogoLogo
Back to studio
  • 🧠Core Concepts
    • Introduction to Formsort
    • Formsort quickstart guides
      • Add content and collect answers
      • Capture demographic data
      • Add informational content
      • Template your variables
      • Add conditional logic
      • Using conditional logic with Calculated and API variables
      • Add a scheduling option
      • End the flow
      • Review your variable schema
      • Set up integrations
    • How data works in Formsort
      • Responder UUIDs
    • Understanding flows
    • Versioning in Formsort (Deploying)
      • Variant revisions
      • Managing revisions
  • ✨Creating Flows
    • Building a new flow
      • Groups
      • Steps
      • Copy-pasting form content
  • Adding questions and content
    • Questions
      • Select
      • Text
      • Address
      • Comparison
      • Confirmation
      • Date
      • Date & time
      • Email address
      • File upload
      • Grid choice
      • Iframe
      • Image upload
      • Number
      • Payment
      • Phone number
      • Postal code
      • Question group
      • Region
      • Signature
      • SSN
      • Yes/No
    • Content
      • Statement
      • Image
      • Next button
      • Video
      • Divider
      • Map
  • Controlling the flow with conditions and logic
    • Advanced logic
  • Variable templating
  • Redirects and endings
  • Field validation
  • Flow and variant management
  • Content library
  • 🧬JSON Form Definition
  • JSON schemas
  • Validating flow schemas
  • Events subscriptions
  • Flow content data format
  • 🎨Styling
    • Customizing appearance
      • Content area & form layout
      • Buttons
      • Typography
      • UI states
      • Color and dimension variables
      • Question containers
      • Inputs and dropdowns
      • Checkmarks
      • Tables
      • Sliders
      • Divider lines
      • Progress bar
      • Comparison cards
      • Animations and transitions
  • CSS & Advanced Styling
    • Custom CSS overrides
    • Step styling
    • CSS reference
  • 🔁Form Behavior Settings
    • Variant settings
      • Form behavior for returning users
      • Group ranking API
    • Navigation sidebar
  • ⚙️Response Data Collection & Management
    • Schema (variables)
      • Variables from questions
      • Externally provided variables
      • Calculated variables
      • API lookups
      • System Library variables
      • Orphaned variables
  • Saving & retrieving responses
  • Importing Data
    • URL parameters
    • POST body
    • Embed query parameters
  • 📊Analytics and Attribution
    • Built-in analytics
    • Split testing
  • 🚀Publishing and Deployment
    • Live preview overview
    • Environments
      • Loading different environments
    • Embedding
      • Web-embed API
        • React-embed
      • Adding authentication
      • Embedding forms in iOS and Android
      • Setting up a dev environment
    • Pre-deployment checklist
  • 📁Workspace Management
    • Accounts
      • Roles and permissions
    • Custom domains
    • Workspace domain detection
  • 🛠️Formsort Admin API
    • Admin API
  • 🔌Integrations
    • Form answers and events
      • Analytics events
      • Signed requests
      • Event payload shape
      • Submission frequencies
      • Runtime error reporting
    • Integration reference
      • Amplitude
        • Amplitude cross domain tracking
      • BigQuery
      • FullStory
      • Google Analytics
        • Updating from Universal Analytics to GA4
      • Google Cloud Storage
      • Google Sheets
      • Google Tag Manager (GTM)
        • JavaScript triggered by flow events
      • Hubspot
      • Jornaya
      • Optimizely
      • PostgreSQL
      • Redshift
      • Rudderstack
      • S3
      • Salesforce
      • Segment
        • Segment Setup
        • Segment cross domain tracking
      • Stripe
      • TrustedForm
      • Webhooks
        • Zapier
Powered by GitBook
On this page
  • Variables (Answers)
  • Naming variables
  • Variable data types
  • General variable settings
  • Readable description
  • Data classification
  • Keep in URL if present on load
  • Storing answers in cookies
  • Don't send to analytics

Was this helpful?

  1. Response Data Collection & Management

Schema (variables)

Use and classify answers and other data once it has been collected.

PreviousNavigation sidebarNextVariables from questions

Last updated 23 hours ago

Was this helpful?

Variables (Answers)

Variables in Formsort allow you to use and classify answers and other data once it has been collected. Every question in your form is associated with a variable where the responder's answers are stored. These variables are referred to as variables from questions.

  • Externally provided

  • API lookups

  • Calculated inline

  • System library

Naming variables

You should update variable names to something that captures the semantic meaning of the information collected. For example, first_name is a better-named variable than just name since you may end up collecting multiple names in a flow.

Renaming

It's safe to rename variables within Formsort. References like templated strings or logical conditions will update automatically.

Note that if you are sending data externally (through integrations or analytics), you will want to take care with renaming, since you may have downstream dependencies that depend on an answer name taking a specific value. For example, you may have configured an email service to use user_first_name within an email template, which Formsort cannot "see", so if you changed the variable name to first_name that email template would break.

Variable data types

Formsort uses standard JavaScript data types for all variables, including answers collected from responders.

Type
Examples

string

"Olivia", "Some\multi-line\string"

number

5, 3.14

boolean

true, false

object

{ city: "Brooklyn", state: "New York" }

Answer values can also appear as arrays, particularly when:

  • You're using repeated questions

  • A select question allows multiple selections

You do not need to manually assign a data type for answers collected from questions. The appropriate type will be automatically inferred based on the question type that sets the variable.

Subtypes

In addition to standard JavaScript data types, Formsort variables can have a subtype—a higher-level classification that provides additional semantic meaning. These subtypes are used internally by Formsort to apply special handling or formatting logic.

Subtype
Base Type
Example
Note

email

string

"hello@formsort.com"

Validated as proper email format

date

string

"2019-01-11"

Always formatted as ISO 8601

datetime

string

"2019-01-01T01:30:00.000Z"

Also ISO 8601 format, with time

These subtypes help ensure consistency across flows and enable certain features, such as validation, formatting, and classification for integrations.


General variable settings

The settings found here are general to all type of variables (from questions, API variables, external variables, etc), and can be found in the editing menu of any of them.

Readable description

It's helpful to keep your answer variable names short and succinct, since you'll be using them throughout the flow. A variable like current_interest_rate_pct is perfect: it describes unambiguously what is stored there.

However, if you're making a dashboard which consumes form data, current_interest_rate_pct might not be enough for your colleagues to understand outside of the context of a particular flow. Neither would the label of the question, which might be something intended for responders, like What is your current interest rate, {{first_name}}?

For that reason, it's possible to set a Readable description on answer variable names. You can set these to text like "Borrower's current self-reported interest rate" more suitable for downstream consumers.

Data classification

Data classification provides a mechanism for associating a variable with functional concept that may be used in or have implications for downstream integrations.

For example, setting a data classification for responder_email on an answer variable will enable the following behavior:

  1. The answer will be treated as PII, and by default not sent to third-party integrations.

  2. When the answer is collected for the first time, the EmailCollected event will be fired.

Available data classifications

Semantic meaning

Type (subtype)

Description

responder_email

string (email)

The responder's email

responder_first_name

string

The responder's first name

responder_last_name

string

The responder's last name

responder_marketing_consent

boolean

Whether the responder consents to marketing messages

responder_phone

string (phone)

The responder's phone number

responder_dob

string (date)

The responder's date of birth

responder_mailing_address

object (address)

The responder's mailing address

responder_other_pii

any

Generic personally-identifying information

We'd love to expand this list to the most meaningful data classifications, so chat us if you'd like us to add more.

Keep in URL if present on load

If you would like instead for an answer to remain in the URL, enable Keep in URL if present on load. This might be helpful if you are matching up campaigns on a URL string, and want to keep things like the utm_source consistent across pages.

Anything in the URL will most likely be recorded by any analytics scripts you include in the integrations, so avoid using this setting for personally-identifying information.

Storing answers in cookies

Another option is to store answers in cookies. In cases where you are collecting more sensitive information, this might be a better option, since you might not want to pass sensitive information unencrypted via URL. In order to do so, you can enable the Read/Write in Cookie option.

Configuring a domain is required to store answers in cookies.

Don't send to analytics

Un-checking this box will prevent the answer variable from being published in the payload. By default, this box is checked.

Additionally, the following types of variables return values that are also stored in variables, though their resolution mechanism differs:

See for an approach on keeping your downstream dependencies safe by requiring forms to implement particular schemas.

See for an approach on keeping your downstream dependencies safe by requiring forms to implement particular schemas.

payloads can be set to include the descriptions, allowing downstream systems to access the descriptions when generating dashboards, reports, etc.

When a flow is loaded in Formsort, any URL parameters that match any answers defined in the flow will be placed into the answers and removed from the URL. To learn more about that, read about getting data in from .

This feature is disabled by default, as , , , and can all be configured to send all data during an analytic event (see for more information). Use caution when sending all data, and use "Don't send to analytics" on a specific answer variable to protect user privacy, or prevent unnecessary data from being sent to a third party.

⚙️
💡
Publishing schemas
Publishing schemas
Webhook
URL parameters
Amplitude
Google Analytics
Google Tag Manager
Segment
analytics events