Create calculated fields and conditional logic using simple formulas. Write calculations to compute values, show or hide fields, and control your forms.
Formulas can calculate values to display, or enable/disable things.
Show or hide fields and sections, determine what forms are included. When the result is true, the field appears. When false, it stays hidden.
Example 1:
age >= 18 and has_consentExample 2:
physical_address.state == 'CA'Include California-specific form section
Returns:
True or false—controls whether the field is shown
Compute and display values. Use these to calculate totals, averages, ratings—any value you want to show.
Example 1:
premium = base_rate * multiplierExample 2:
if(length(description) > 50, 'Long', 'Short')Categorize by description length
Returns:
Numbers, text, dates—any value to display to the user
A field or section appears when its condition evaluates to true. Here's what counts as true:
Comparisons
amount > 1000True when the comparison succeeds
Text Matching
status == 'approved'True when text matches exactly
Checkbox Fields
agreed_to_termsTrue when the box is checked
Combined with AND
age >= 65 and residentTrue when both are true
Combined with OR
has_auto or has_homeTrue when at least one is true
Reversed with NOT
not opted_outTrue when the value is false
Positive Numbers
total_countTrue when number is greater than zero
Text With Value
middle_nameTrue when text has any value
Date Provided
date_of_birthTrue when date has a value
The building blocks of your formulas.
+Add
a + b-Subtract
a - b*Multiply
price * quantity/Divide
total / count%Remainder
year % 4 == 0^Power
base ^ 2==Equal
status == 'done'!=Not Equal
type != 'exclude'>Greater Than
score > 80<Less Than
age < 65>=Greater or Equal
amount >= 100<=Less or Equal
years <= 5inContains
'red' in colorsandBoth must be true
age > 18 and has_consentorAt least one true
type == 'A' or type == 'B'notReverse condition
not exempt? :Conditional
score > 90 ? 'A' : 'B'When comparing values, always use two equals signs (==).
Wrong—This sets a value:
status = 'approved'This assigns 'approved' to status instead of checking if it matches
Correct—This compares values:
status == 'approved'This checks if status equals 'approved'
Ready-to-use functions for common calculations. No need to build these from scratch.
round(number, decimals)Round to specific decimals
round(price, 2)
roundTo(number, places)Round to decimal places
roundTo(total, 2)
floor(number)Round down to whole number
floor(amount)
ceil(number)Round up to whole number
ceil(rating)
trunc(number)Remove decimal part
trunc(3.9) → 3
abs(number)Absolute value (positive)
abs(profit_loss)
sign(number)Sign: -1, 0, or 1
sign(balance)
max(a, b, ...)Largest of all values
max(score1, score2, score3)
min(a, b, ...)Smallest of all values
min(price, 100, cost)
pow(base, exp)Raise to power
pow(length, 2)
sqrt(number)Square root
sqrt(area)
cbrt(number)Cube root
cbrt(volume)
hypot(a, b)Distance formula (√a²+b²)
hypot(width, height)
ln(number)Natural logarithm
ln(revenue)
log10(number)Base-10 logarithm
log10(value)
exp(number)Exponential (e^x)
exp(rate * time)
random(max)Random number 0 to max
random(100)
if(condition, yes, no)Choose based on condition
if(score > 90, 'A', 'B')
not(value)Reverse true/false
not(opted_out)
length(text)Count characters or items
length(description)
indexOf(text, search)Find position of text
indexOf(email, '@')
indexOf(item, list)Find item in list (-1 if not)
indexOf('red', colors)
join(list, separator)Combine list into text
join(tags, ', ')
Start with these frequently-used examples. Each one shows a practical business calculation.
Use standard math operators
price * quantityMultiply two fields
(subtotal + tax) * 1.1Calculate with markup
revenue - expensesSimple subtraction
radius ^ 2 * PICircle area (πr²)
Test values against each other
amount > 1000Is amount over 1000?
status == 'approved'Does status equal approved?
score >= 90Is score 90 or higher?
'urgent' in tagsIs 'urgent' in the tags list?
Make decisions based on your data
amount > 1000 ? 'High' : 'Low'Categorize by amount
rating >= 4 ? 'Premium' : 'Standard'Classify by rating
if(year % 4 == 0, 'Leap Year', 'Common Year')Check for leap year
Ready-to-use calculations
round(total, 2)Round to 2 decimals
max(value1, value2, value3)Find the largest
abs(profit_loss)Absolute value
trunc(price)Remove decimals
Check if items exist in lists
'approved' in statusesIs status in list?
length(items) > 0List has items?
indexOf('red', colors) >= 0Find item position
Your data model can organize fields as objects (groups of related data) or lists (groups of items). Access them using dot notation.
Group related fields together. Use dot notation to access nested values.
Data Model Structure:
applicant
├── firstName
├── lastName
└── emailAccess in formulas:
applicant.firstNameExample usage:
if(applicant.firstName == 'John', 'Hello John', 'Welcome')Collect multiple items. Use functions to count, search, or work with the list.
Data Model Structure:
beneficiaries
└── (list of names)Count items:
length(beneficiaries)Check if list has items:
length(beneficiaries) > 0Get a specific item:
beneficiaries[0]Gets first item (positions start at 0)
Get the fourth item:
beneficiaries[3]Position 3 gets the fourth item
Use nested data to build meaningful conditions and calculations.
Scenario: Show a question only if the primary applicant is under 65
applicant.age < 65Scenario: Calculate total coverage from all properties in a list
properties.coverage_primary + properties.coverage_secondaryScenario: Require additional info when there are multiple beneficiaries
length(beneficiaries) > 1See how formulas solve common business problems.
Calculate total premium with base rate, adjustments, and tax
Fields used:
Formula:
(base_rate * adjustment_factor) * (1 + tax_rate)Categorize applicants by risk score
Fields used:
Formula:
if(risk_score >= 80, 'High Risk', if(risk_score >= 50, 'Medium Risk', 'Low Risk'))Check if customer qualifies for multi-line discount
Fields used:
Formula:
(has_auto and has_home) or (has_auto and has_life) or (has_home and has_life)Apply age bracket pricing multiplier
Fields used:
Formula:
base_price * if(age < 25, 1.5, if(age < 65, 1.0, 1.2))Sum all coverage amounts
Fields used:
Formula:
property_coverage + liability_coverage + contents_coverageCalculate agent commission with tiered rates
Fields used:
Formula:
premium_amount * if(premium_amount > 10000, 0.15, if(premium_amount > 5000, 0.12, 0.10))Check if application is in a valid status
Fields used:
Formula:
'approved' in statuses or 'pending' in statusesCalculate area from radius using π
Fields used:
Formula:
PI * radius ^ 2Determine if a year is a leap year
Fields used:
Formula:
year % 4 == 0Expert advice to write better formulas faster.
Reference any field by its name - no special syntax needed. Just type the field name exactly as it appears in your data model.
total = price * quantityWhen comparing to or returning text, wrap it in single quotes. Numbers don't need quotes.
status == 'active' or amount > 1000 ? 'High' : 'Low'Use parentheses to control which calculations happen first.
(base + bonus) * tax_rateUse 'and'/'or' to test multiple conditions together. Parentheses help group complex logic.
(age >= 65 or disabled) and residentUse the 'in' operator to check if a value exists in a list. Returns true if found.
'urgent' in tags or 'approved' in statusesThe % operator gives the remainder. Great for detecting even/odd or finding multiples.
year % 4 == 0 (leap year) or value % 2 == 0 (even number)Both do conditionals. Use if() for clarity, use ? : for simple inline choices.
if(score > 90, 'A', 'B') vs score > 90 ? 'A' : 'B'round() rounds to nearest, floor() always down, ceil() always up, trunc() chops decimals.
floor(3.9) = 3, ceil(3.1) = 4, trunc(3.9) = 3Start creating calculated fields in your forms. The formula editor will guide you every step of the way.
Go to Dashboard