Supplied lets you transform and compute values using formulas. Formulas can combine numbers, text, variables (fields from your data), and functions such as IF() and DATEVALUE().
Use formulas to:
- clean up uploaded data
- extract structured values from free text (e.g., country/city from addresses)
- create conditional rules
build computed fields for reporting and exports
Quick start
1) Use fields as variables
To reference a field from your uploaded data, wrap the field name in curly braces:
- {Rapporteerbare Eigenaar: Adres}
- {BirthDate}
- {Gross Earnings Q1}
✅ Variable names are case-sensitive and can contain spaces.
❌ You can’t use { or } inside variable names.
2) Write formulas using operators and functions
Examples:
- Add numbers
{Amount} + 10 - Multiply
{Units} * {Price} - Combine text
{First name} & " " & {Last name} - Conditional logic
IF({Country} = "NL", "Netherlands", "Other")
Supported data types
Supplied formulas work with:
- Numbers: 123, 10.3 (decimal separator is always a dot)
- Text: "hello" or 'hello'
- Booleans: TRUE, FALSE (case-insensitive; shown as uppercase)
Operators
Numeric operators
These require numeric values (or text that can be converted to a number):
- + addition
- - subtraction
- * multiplication
- / division
Examples:
- {A} + 3
- {Price} * {Quantity}
✅ "42" + 3 becomes 45 (string coerced to number)
❌ "abc" + 3 → type error
Note: unary operators are not supported (so -1 is not valid).
Text concatenation
Use & to join values as text:
- {Street} & " " & {HouseNumber}
- CONCAT({First}, " ", {Last})
Rules:
- numbers and booleans convert to strings automatically
- null becomes an empty string
Comparisons
Comparisons return TRUE or FALSE:
- =, !=, <, <=, >, >=
- <> is also accepted (same as !=)
Examples:
- {A} = 10
- {Country} != "NL"
- {Amount} >= 100
Order of operations (precedence)
- Parentheses and function calls: ( ... )
- * and /
- + and -
- &
- Comparisons: =, !=, <>, <, <=, >, >=
Tip: Use parentheses when in doubt.
Example:
- {A} + {B} * 2 evaluates as {A} + ({B} * 2)
Built-in functions
Function names are case-insensitive (they will be formatted to uppercase).
IF(condition, then, else)
Use: conditional output
Arguments: exactly 3
IF({Country} = "NL", "Dutch", "Non-Dutch")
Truthiness rules in conditions:
- Boolean: used as-is
- Number: 0 → FALSE, non-zero → TRUE
- String: only "TRUE"/"FALSE" (any case) are treated as booleans
Short-circuiting: only the selected branch is evaluated.
Example (safe):
IF(TRUE, 1, 1/0)
→ returns 1 and does not throw a division error.
NOT(value)
Use: negate boolean
Arguments: 1
NOT({IsActive})
AND(arg1, arg2, …)
Use: all conditions must be true
Arguments: at least 1
AND({Country} = "NL", {Amount} > 0)
OR(arg1, arg2, …)
Use: any condition can be true
Arguments: at least 1
OR({Country} = "NL", {Country} = "BE")
CONCAT(arg1, arg2, …)
Use: join text values
Arguments: at least 2
CONCAT({First name}, " ", {Last name})
DATEVALUE(text, format?)
Use: parse a date string and return an ISO date (YYYY-MM-DD)
Arguments: 1 or 2
Basic
DATEVALUE("2024-01-15")
→ "2024-01-15"
With explicit input format
DATEVALUE("15/01/2024", "DD/MM/YYYY")
→ "2024-01-15"
Auto-detection
If no format is given, Supplied will try to detect the format automatically.
⚠️ Ambiguous dates throw an error:
DATEVALUE("11/12/2024")
→ error (ambiguous)
✅ Best practice: always provide a format when your input is not ISO.
Supported format examples:
- "DD/MM/YYYY"
- "MM-DD-YYYY"
- "DD MMM YYYY"
- "YYYY.MM.DD"
COUNTRYCODE(address)
Use: detect country code from a free-form address
Arguments: 1
Returns: ISO 3166-1 alpha-2 country code (uppercase), or empty string
COUNTRYCODE({Rapporteerbare Eigenaar: Adres})
COUNTRY(address)
Use: detect the country name (English) from an address
Arguments: 1
COUNTRY({Rapporteerbare Eigenaar: Adres})
CITY(address)
Use: attempt to extract a city name from an address
Arguments: 1
CITY({Rapporteerbare Eigenaar: Adres})
Returns the city name, or empty string if it can’t be confidently extracted.
Examples you can copy
Extract NL postcode from address (simple)
If your address field contains a full address string:
REGEXEXTRACT({Rapporteerbare Eigenaar: Adres}, "([0-9]{4}\s?[A-Z]{2})")
Note: REGEXEXTRACT is only available if your UI layer exposes it. If not, use COUNTRYCODE() / CITY().
Conditional label based on entity type
IF({Rapporteerbare Eigenaar: Type Identiteit} = "individual", "Natural person", "Entity")
Build a full name
CONCAT({Rapporteerbare Eigenaar: Voornaam}, " ", {Rapporteerbare Eigenaar: Achternaam})
Convert payout totals (string → number coercion)
{Uitbetaling Q1} + {Uitbetaling Q2} + {Uitbetaling Q3} + {Uitbetaling Q4}
Common issues and how to fix them
“Unknown variable”
You referenced a field name that isn’t available.
✅ Fix:
- check spelling and capitalization
- make sure the field exists in the mapping screen
- variable names are case-sensitive
“Wrong number of arguments”
You used a function with the wrong number of inputs.
Examples:
- IF() must have exactly 3 args
- NOT() must have exactly 1 arg
- CONCAT() must have at least 2 args
- DATEVALUE() must have 1 or 2 args
“Type mismatch”
You tried to do math with a non-numeric value.
Example:
- "abc" * 3 → error
✅ Fix:
- ensure numeric fields are numeric
- avoid text that cannot be converted to a number
“Division by zero”
Example:
- {A} / 0
✅ Fix:
IF({B} = 0, 0, {A} / {B})
Tips and best practices
- Prefer ISO dates (YYYY-MM-DD) to avoid ambiguity.
- Use DATEVALUE(text, format) when importing dates from spreadsheets.
- Use & or CONCAT() to build strings safely.
- Use parentheses to make formulas easier to read.
- Keep field names consistent to reduce “unknown variable” errors.
What Supplied does (and does not) do
✅ Safe evaluation: no arbitrary code execution
✅ Works the same in browser and backend
✅ Clear validation errors with highlights and hints
❌ No unary minus (so -1 is not supported; use 0 - 1)
❌ No exponent notation (e.g. 1e6)