Unqork documentation is available in two workspaces: UnqorkAI for the latest AI-first platform, and legacy Unqork for previous versions. Use the drop-down near the logo to switch.

Unqork Formulas

Prev Next

Unqork Formulas are functions added to Unqork's formula engine that do not exist in standard Excel. Use them for date manipulation, data parsing, encoding, regex operations, number formatting, and working with arrays and objects.

For the full list of all supported formulas, see Formulas.

Date & Time

DATEFORMAT

Formats a date value into a readable string.

Syntax: DATEFORMAT(date, format)

Argument

Description

date

A date string or field reference containing a date. Does not accept Unix timestamps.

format

A format string using Moment.js tokens. See Moment.js Formulas.

Example:

=DATEFORMAT(submittedDate, "MM/DD/YYYY")

Returns 03/25/2026 when submittedDate is 2026-03-25.

DATEADD

Adds a specified amount of time to a date.

Syntax: DATEADD(date, amount, unit)

Argument

Description

date

A date string or field reference.

amount

A number indicating how much time to add. Use a negative number to subtract.

unit

The unit of time: "days", "weeks", "months", "years", "hours", "minutes", "seconds".

Example:

=DATEADD(startDate, 30, "days")
=DATEADD(expiryDate, -1, "years")

MOMENT

Parses a date string using a specified input format and returns a date value. Use MOMENT() when you need to parse a date stored in a non-standard format before passing it to other formulas.

Syntax: MOMENT(date, inputFormat)

Argument

Description

date

A date string to parse.

inputFormat

The format of the input date string, using Moment.js tokens.

Example:

=MOMENT("03/25/2026", "MM/DD/YYYY")

Returns a date value representing March 25, 2026.

See Moment.js Formulas for format token reference.

Text & Strings

SPLIT

Splits a string into an array using a delimiter.

Syntax: SPLIT(string, delimiter)

Example:

=SPLIT("red,green,blue", ",")

Returns ["red", "green", "blue"].

HTML2TEXT

Strips HTML tags from a string, returning plain text.

Syntax: HTML2TEXT(html)

Example:

=HTML2TEXT("<b>Hello</b> World")

Returns Hello World.

WORDWRAP

Wraps a string at a specified character width, returning the wrapped text as a single string.

Syntax: WORDWRAP(string, width)

WORDWRAPARRAY

Wraps a string at a specified character width, returning each line as an element in an array.

Syntax: WORDWRAPARRAY(string, width)

STRINGIFY

Converts a value to its string representation.

Syntax: STRINGIFY(value)

Example:

=STRINGIFY(fieldValue)

Useful when passing a non-text value to a field that expects a string.

NUMBERS

Filters the provided arguments and returns only the numeric values as an array.

Syntax: NUMBERS(value1, value2, ...)

PHONENUMBER

Formats a phone number string according to a locale.

Syntax: PHONENUMBER(number, locale)

Example:

=PHONENUMBER(phoneField, "US")

SPELLNUMBER

Converts a number to its spelled-out English representation.

Syntax: SPELLNUMBER(number)

Example:

=SPELLNUMBER(1250)

Returns one thousand two hundred fifty.

ALPHARANGE

Returns an array of consecutive letters between a start and end letter.

Syntax: ALPHARANGE(start, end)

Example:

=ALPHARANGE("A", "E")

Returns ["A", "B", "C", "D", "E"].

Numbers

NUMERAL

Formats a number using Numeral.js format strings.

Syntax: NUMERAL(number, format)

Format

"0,0"

1,235

"0,0.00"

1,234,567.89

"0%"

100%

"$0,0.00"

$1,234,567.89

"0.0a"

1.2m (abbreviates millions, billions, and so on)

Example:

=NUMERAL(totalAmount, "0,0.00")

Regex

REGEXMATCH

Returns true if a string matches a regular expression pattern, false if it does not.

Syntax: REGEXMATCH(string, pattern)

Example:

=REGEXMATCH(zipCode, "^\d{5}$")

Returns true for a valid 5-digit zip code. See Regular Expression Patterns.

REGEXEXTRACT

Extracts the first match of a regular expression pattern from a string.

Syntax: REGEXEXTRACT(string, pattern)

Example:

=REGEXEXTRACT(referenceNumber, "[0-9]+")

Returns the first sequence of digits found in the string.

REGEXREPLACE

Replaces matches of a regular expression pattern in a string with a replacement value.

Syntax: REGEXREPLACE(string, pattern, replacement)

Example:

=REGEXREPLACE(phoneField, "[^0-9]", "")

Strips all non-numeric characters from a phone number field.

Encoding & Parsing

BASE64/TOBASE64

Encodes a string to Base64 format. BASE64 and TOBASE64 are equivalent.

Syntax: BASE64(string) or TOBASE64(string)

Example:

=BASE64("hello")

Returns aGVsbG8=.

FROMBASE64

Decodes a Base64-encoded string back to plain text.

Syntax: FROMBASE64(string)

Example:

=FROMBASE64("aGVsbG8=")

Returns hello.

JSONPARSE

Parses a JSON string and returns the resulting object or array.

Syntax: JSONPARSE(string)

URLPARSE

Parses a URL string and returns an object containing its parts: protocol, host, hostname, port, pathname, search, query, hash, and href.

Syntax: URLPARSE(url)

Example:

=URLPARSE("https://example.com/path?foo=bar")

Returns an object. Use GET to access individual parts:

=GET(URLPARSE(urlField), "hostname")

Returns example.com.

LINKHEADERPARSE

Parses an HTTP Link header string and returns the links as a structured object.

Syntax: LINKHEADERPARSE(header)

Arrays & Collections

COUNTUNIQUE

Returns the count of unique values across the provided arguments.

Syntax: COUNTUNIQUE(value1, value2, ...)

Example:

=COUNTUNIQUE(status1, status2, status3, status4)

UNIQUE

Returns an array of unique values from the provided arguments.

Syntax: UNIQUE(value1, value2, ...)

COUNTIN

Counts how many times a value displays in a collection.

Syntax: COUNTIN(collection, value)

FLATTEN

Flattens a nested array into a single-level array.

Syntax: FLATTEN(array)

GROUPBY

Groups an array of objects by a specified key, returning an object where each key maps to an array of matching items.

Syntax: GROUPBY(array, key)

Example:

=GROUPBY(submissionsArray, "status")

Returns { "Active": [...], "Closed": [...] }.

JOIN

Joins all elements of an array into a single string using a separator.

Syntax: JOIN(array, separator)

Example:

=JOIN(nameArray, ", ")

Returns "Alice, Bob, Carol" when nameArray is ["Alice", "Bob", "Carol"].

JOINKEYVALUE

Joins key-value pairs from a flat object into a formatted string. The object must have parallel keys that share a common label prefix and value prefix—for example, label1/value1, label2/value2. The function matches keys by prefix and joins each label-value pair with a separator.

Syntax: JOINKEYVALUE(object, labelPrefix, valuePrefix, [keyValueSeparator], [pairSeparator])

Argument

Description

object

A flat object with parallel label and value keys sharing a common prefix.

labelPrefix

The prefix identifying label keys. Defaults to "label".

valuePrefix

The prefix identifying value keys. Defaults to "value".

keyValueSeparator

Optional. The string placed between each label and value. Defaults to ": ".

pairSeparator

Optional. The string placed between each pair. Defaults to "; ".

Example:

Given a field containing { "label1": "Status", "value1": "Active", "label2": "Type", "value2": "Request" }:

=JOINKEYVALUE(myField, "label", "value")

Returns "Status: Active; Type: Request".

JOINKEYVALUEARRAY

Applies JOINKEYVALUE across an array of flat objects, returning an array of objects where each key is a specified field value from the source item.

Syntax: JOINKEYVALUEARRAY(array, displayKey, [labelPrefix], [valuePrefix], [keyValueSeparator], [pairSeparator])

Argument

Description

array

An array of flat objects with parallel label and value keys.

displayKey

The field in each object to use as the key in the output.

labelPrefix

Optional. Defaults to "label".

valuePrefix

Optional. Defaults to "value".

keyValueSeparator

Optional. Defaults to ": ".

pairSeparator

Optional. Defaults to "; ".

Example:

Given a field containing [{ "id": "row1", "label1": "Status", "value1": "Active" }, { "id": "row2", "label1": "Type", "value1": "Request" }]:

=JOINKEYVALUEARRAY(myField, "id", "label", "value")

Returns [{ "row1": "Status: Active" }, { "row2": "Type: Request" }].

LABELVALUEARRAY

Takes two parallel arrays and zips them into an array of { label, value } objects. Commonly used for building drop-down option lists from separate label and value arrays.

Syntax: LABELVALUEARRAY(labelArray, valueArray, [labelKey], [valueKey])

Argument

Description

labelArray

An array of label values.

valueArray

An array of corresponding values.

labelKey

Optional. The key name for the label field. Defaults to "label".

valueKey

Optional. The key name for the value field. Defaults to "value".

Example:

=LABELVALUEARRAY(["Red", "Blue", "Green"], ["red", "blue", "green"])

Returns [{ "label": "Red", "value": "red" }, { "label": "Blue", "value": "blue" }, { "label": "Green", "value": "green" }].

KEYSARRAY

Takes a 2D array of values and an array of key names, and builds an array of objects by mapping each key name to a column in the 2D array.

Syntax: KEYSARRAY(dataArray, keysArray)

Argument

Description

dataArray

A 2D array where each inner array is a column of values.

keysArray

An array of key names corresponding to each column.

Example:

=KEYSARRAY([["Alice", "Bob"], [25, 30]], ["name", "age"])

Returns [{ "name": "Alice", "age": 25 }, { "name": "Bob", "age": 30 }].

INITIAL

Returns the first N elements of an array.

Syntax: INITIAL(array, count)

Argument

Description

array

The source array.

count

The number of elements to return from the beginning.

Example:

=INITIAL(myArray, 3)

Returns the first 3 elements of myArray.

REST

Returns all elements of an array starting from a specified index.

Syntax: REST(array, startIndex)

Argument

Description

array

The source array.

startIndex

The index to begin from. Use 1 to return all elements except the first.

Example:

=REST(myArray, 1)

Returns all elements of myArray except the first.

ARGS2ARRAY

Converts individual arguments into an array.

Syntax: ARGS2ARRAY(value1, value2, ...)

Object Access

GET

Returns the value of a specified key from an object.

Syntax: GET(object, key)

Example:

=GET(URLPARSE(urlField), "hostname")
=GET(currentUser, "email")

Utilities

LODASH

Provides access to Lodash utility functions. Pass the Lodash method name as the first argument, followed by the value to operate on.

Syntax: LODASH(method, value)

Common methods:

Method

Description

Example

"capitalize"

Capitalizes the first letter

LODASH("capitalize", "hello world") → Hello world

"toLower"

Converts to lowercase

LODASH("toLower", "HELLO") → hello

"toUpper"

Converts to uppercase

LODASH("toUpper", "hello") → HELLO

"trim"

Removes leading/trailing whitespace

LODASH("trim", " hello ") → hello

"camelCase"

Converts to camelCase

LODASH("camelCase", "my field") → myField

"snakeCase"

Converts to snake_case

LODASH("snakeCase", "My Field") → my_field

"kebabCase"

Converts to kebab-case

LODASH("kebabCase", "My Field") → my-field

For the full list of Lodash methods, see the Lodash documentation.

REFERENCE

References a value from in the module's submission data.

Syntax: REFERENCE(path)

ISBINARY

Returns true if a value is a binary string.

Syntax: ISBINARY(value)

INTERVAL

Converts a number of seconds into an ISO 8601 duration string.

Syntax: INTERVAL(seconds)

Argument

Description

seconds

A number of seconds to convert into a duration.

Example:

=INTERVAL(3661)

Returns PT1H1M1S (1 hour, 1 minute, 1 second).


Changelog

Date

Change

—

Initial publication.