---
title: "Full list of expressions in the app editor"
slug: "full-list-of-expressions-in-the-app-editor"
updated: 2026-04-16T21:48:13Z
published: 2026-04-16T21:48:13Z
canonical: "support.tulip.co/full-list-of-expressions-in-the-app-editor"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://support.tulip.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Full list of expressions in the app editor

This article contains the full list of expressions that are available to use in the App Editor within Trigger.

[Using expressions](/r230/docs/technical-details-of-the-expression-editor) enables you to utilize your data in different ways or manipulate it into different forms.

          NOTE

          

Available expressions differ between features (e.g. App Editor, Analytics Editor, Automations/Functions Editor). To understand where each expression is available, see the [full list of expressions](https://support.tulip.co/docs/expressions) in Tulip.

## Expressions in the app editor

All examples are based on app Completions. So, when you use a MAXIMUM() or MINIMUM() function, for example, you are looking for the maximum or minimum value of a Variable across all completions of an app.

**ADD_TIME()** Increments a Datetime value by a specified amount and interval unit.

Ex. ADD_TIME(*datetime_variable,* 2, 'years')

**SUBTRACT_TIME()** Decrements a Datetime value by a specified amount and interval unit.

Ex. SUBTRACT_TIME(*datetime_variable,* 3, 'months')

### Typecasting expressions

**BADGE_ID_TO_USER()** Converts a badge ID to a User object

Ex. BADGE_ID_TO_USER(0000) = "John Doe" as a user object

**DATETIMETOTEXT()** Converts a Datetime value to a text value that is easily readable by a human

Ex. DATETIMETOTEXT(*datetime_variable*, "MMMM DD, YYYY", 'America/New_York')

This will convert a datetime to Eastern Standard Time and show it in traditional date formatting like "January 1, 2019".

**Note:** The last parameter, the time zone, must come from one of the [tz database names](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) listed here.

**FILETOTEXT**("url: File") => Text Converts File into a text string of the URL

Ex: FILETOTEXT("[http://www.africau.edu/images/default/sample.pdf](http://www.africau.edu/images/default/sample.pdf)")

**HEX_TO_INT()** Return the numeric representation of a given hexadecimal string. Ex. HEX_TO_INT('0xAB18') = '43800'

**INT_TO_HEX()** Return the hexadecimal representation of a given number. Ex. INT_TO_HEX('43800') = '0xAB18'

**INTERVAL_TO_SECONDS**(interval: Interval) => Number Returns the length of an Interval in seconds

EX. INTERVAL_TO_SECONDS(seconds_to_interval(30.0))

**LOWERCASE()** Converts a string to all lowercase

**MAP_TO_BOOLEAN_LIST**(*a:* {} array, *b*: text) => array Converts an Object Array to a base array for the given key

Ex. MAP_TO_BOOLEAN_LIST([{key: value}], ‘key’) = [value]

**MAP_TO_INTEGER_LIST**(*a:* {} array, *b*: text) => array Converts an object array to a base array for the given key

Ex. MAP_TO_INTEGER_LIST([{key: value}], ‘key’) = [value]

**MAP_TO_NUMBER_LIST**(*a:* {} array, *b*: text) => array Converts an object array to a base array for the given key

Ex. MAP_TO_NUMBER_LIST([{key: value}], ‘key’) = [value]

**MAP_TO_TEXT_LIST**(*a:* {} array, *b*: text) => array Converts an object array to a base array for the given key

Ex. MAP_TO_TEXT_LIST([{key: value}], ‘key’) = [value]

**SECONDS_TO_INTERVAL()** Converts seconds into an Interval.

SECONDS_TO_INTERVAL(seconds: Integer or Number) => Interval

Ex. SECONDS_TO_INTERVAL(20) => 0:00:20

**TEXTTOBOOLEAN()** Parses text into a Boolean.

"y", "yes", "t", "true" and "on" and any capitalized variants are recognized as true, and "n", "no", "f" "false" and "off" are recognized as false.

Ex. TEXTTOBOOLEAN("yes")

**TEXTTODATETIME()** Converts a text value into a Datetime value with the specified parameters. Commonly used if you have a Connector Function that shares a Datetime in text format and you need to convert it.

**TEXTTOIMAGEURL(url:Text)** => Image URL Converts a string to an image URL.

EX. TEXTTOIMAGEURL("[https://example.com/photo.jpg](https://example.com/photo.jpg)")

**TEXTTOINTEGER()** Parses text or Interval into an Integer.

Ex. TEXTTOINTEGER("123")

**TEXTTONUMBER()** Parses text or timestamp into a Number

Ex. TEXTTONUMBER("2.4")

**TOTEXT()** Parses anything into text.

Ex. TOTEXT(2)

**UPPERCASE()** Converts a string to all uppercase

**USER_ID_TO_USER**(id: Text) => User Converts a user id to a user object

Ex. User_id_to_user("abc") = User<abc></abc>

### Truncated expressions

**CEIL()** Rounds up to the nearest Integer

**FLOOR()** Rounds down to the nearest Integer

**ROUND()** Rounds a number to the specified number of decimal places. Maximum of 3 decimal places. Ex. 1 - ROUND(123.123456, 1) This will return 123.1 Ex. 2 - ROUND(123.12) This will return 123

**ROUNDDATETIME()** Truncates a Datetime value to a given unit, like month or day.

Ex. ROUNDDATETIME(*datetime_variable*, "Month", "America/New_York") This will convert a datetime to just the month in Eastern Standard Time.

**Note:** The last parameter, the time zone, must come from one of the [tz database names](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) listed here.

### Value return expressions

**ABS()** Return the absolute value of a number

**CONTAINS()** Returns whether a string contains a given substring Ex. CONTAINS("123ABC", "123") This would return "true"

**COS()** Returns the cosine of the given input

**ENCODE_URI**(component: Text) => Text Returns a URL-encoded string version of a URI. Ex. ENCODE_URI("[http://example.com/a=foo&b=a](http://example.com/a=foo&amp;b=a) test") = "[http://example.com/a=foo&b=a%20test](http://example.com/a=foo&amp;b=a%20test)"

**ENCODE_URI_COMPONENT**(component: Text) => Text Returns a URL-encoded string version of a URI component.

EX. ENCODE_URI_COMPONENT("a & b") = "a%20%26%20b"

**FIND()** Returns the position for where the first argument occurs within the second argument.

**IF()** Based on the first argument, returns the second argument if first argument is true, or third argument if first argument is false. Ex. IF(true, 1, 2)

**ISNULL()** Returns true if the argument is null, otherwise false.

**LEFT()** Returns a substring of a text value, beginning at the position specified by the second argument.

**LEN()** Returns the length of a text value. Also will return the number of items in an array.

**LINK()** Returns the first of the arguments that is not null.

Ex. LINK(weight, 70) This will return the value of *weight* if weight has a value

**MAX()** Returns the argument with the highest value Ex. MAX(var1, var2) This will return the value of var1 if it is greater than the value of var2

**MID()** Returns a substring of a text value, starting at the position specified by the second argument. The third argument specifies the length of the return.

**MIN()** Returns the argument with the lowest value Ex. MIN(var1, var2) This will return the value of var1 if it is less than the value of var2

**POW()** Return the first argument raised to the second argument Ex. POW(3,2) This will return 9

**RAND()** Generates a random decimal number between 0 and 1

**RANDBETWEEN()** Generates a random integer between two specified numbers Ex. RANDBETWEEN(5,10)

**RANDOMSTRING()** Returns a random 17-character string. Meant for [creating an ID for a new Table record.](/r230/docs/how-to-modify-tables-within-the-app-editor)

**RANDOM_COLOR()** Generates a random color

Ex. RANDOM_COLOR() = ##c537a5

**RGBA**(r: Integer, g:Integer, b:Integer, a:Integer) => Color Returns a color of the specified red, green, blue and alpha components

Ex. RGBA(255, 255, 0, 0.5) = ##ffff00 (50% opacity)

**RGB**(r: Integer, g:Integer, b:Integer) => Color Returns a color of the specified red, green, and blue components

Ex. RGB(255, 255, 0) = ##ffff00

**RIGHT()** Returns a substring of a text value, ending at the position specified by the second argument.

**SIN()** Returns the sine of the given input

**SPLIT()** Splits a text value into an Array by a specified delimiter.

**SQRT()** Return the square root of a number

**SUBSTITUTE()** Within a string given in the first argument, replace all examples of the second argument with the third argument Ex. SUBSTITUTE("A734", "7", "3") This will return "A334"

**TAN()** Returns the tangent of the given input

**TRIM()** Removes a substring (specified by the second argument) from the front and back of the first argument.

### Array expressions

**ARRAY_AVG()** Returns the average of all numbers in an array Ex. ARRAY_AVG([1,2,3]) This would return 2

**ARRAY_CONCAT()** Returns a single array with all elements from the arrays included in the arguments. Only works with arrays of the same type ie all text arrays. Ex. ARRAY_CONCAT([1,2],[3,4],[5,6]) This would return [1,2,3,4,5,6]

**ARRAYCONTAINS()** Determine if a value is in an Array Ex. ARRAYCONTAINS([1,2,3], 1) This will return "true"

**ARRAY_INDEX_OF()** Returns the index of the first occurrence of the given value in the given array. If not found, returns “-1”. Ex. ARRAY_INDEX_OF([1,2,3], 2) This will return 1

**ARRAY_MAX()** Returns the minimum from a given array Ex. ARRAY_MAX([1,2,3]) This would return 3

**ARRAY_MIN()** Returns the minimum from a given array Ex. ARRAY_MIN([1,2,3]) This would return 1

**ARRAY_STDEV_POPULATION()** Returns the standard deviation of the population of a given numeric array Ex. ARRAY_STDEV_POPULATION([1,2,3]) This would return 0.816496580927726

**ARRAY_STDEV_SAMPLE()** Returns the standard deviation of the sample of a given numeric array Ex. ARRAY_STDEV_SAMPLE([1,2,3]) This would return 1

**ARRAY_VALUE_AT_INDEX()** Returns the value at the given index in the given list. If the index is out of bounds, returns null. Ex. ARRAY_VALUE_AT_INDEX([1,2,3], 0) This would return 1

**REGEX_MATCH()** Returns an array of regular expression matches of a text value. Matches based on the given regular Expression and modifiers. This method is based on the [match JavaScript method](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match) and has 2 "modes".

When this method is given 2 arguments, it is equivalent to the following JavaScript expression:

```
text.match(new RegExp(regex))
```

When the optional parameter modifiers is provided, this method is equivalent to the following expression in JavaScript:

```
text.match(new RegExp(regex, modifiers))
```

Modifiers are [flags](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/RegExp#flags) that can be used to modify the behavior of the regex search.

**REGEX_REPLACE()** Returns an array of regular expression matches of a text value. Matches based on the given regular Expression and modifiers. This method is based on the [replace JavaScript method](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace).

When the function is given 3 arguments, it is equivalent to the following JavaScript expression:

```
text.replace(new RegExp(regex), replacement)
```

When the optional parameter modifiers is provided, this method is equivalent to the following expression in JavaScript:

```
text.replace(new RegExp(regex, modifiers), replacement)
```

Modifiers are [flags](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/RegExp#flags) that can be used to modify the behavior of the regex search.

When writing regex inside a string, you must escape the backslashes (\) because JavaScript treats each backslash as an escape character in string literals.

```
regex_replace('Hello There', '(\\w+)\\s(\\w+)', '$2 $1')
```

This expression would output "There Hello".

---

Did you find what you were looking for?

You can also head to [community.tulip.co](https://community.tulip.co/?utm_source=intercom&amp;utm_medium=article-link&amp;utm_campaign=all) to post your question or see if others have solved a similar topic!

**App Editor**

The web interface used for building applications. Where you design a user interface, add logic, and connect your applications to **Tables**. ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screen%20Shot%202022-09-13%20at%207.50.23%20AM.png)

**Trigger**

**Triggers** are groups of logic that are tied to an app event, such as step open, timer, widget interaction, etc. App builders can add triggers to **widgets**, **machines**, **devices**, **apps**, and **steps**.

**Triggers** can contain **actions**, **transitions**, and **conditions**.

**App Completion**

**App Completions**are a mechanism to store immutable data from a Tulip app. When an app is completed, all **Variable's**current values will be stored in the app completions tab.****This completion data can be analyzed in **Analytics.**

By default, after a Completion users will be brought back to the **Begin Screen**of your application. This behavior can be adjusted with other **Transition**types.

**Variable**

**Variables**are a location to store app information. Variables have a specific type that must match the contents they can store.

Variables are only accessible within a single application and are cleared when the app is restarted or completed.

**Datetime**

**Datetimes**are a Tulip Datatype. Datetimes represent a time in the ISO8601 format.

*ex. 2022-08-31T19:56:16+00:00*

**Number**

**Number**is a Tulip Datatype. Numbers can be any positive or negative number. Numbers support decimals.

*ex. -5, 15, 47, 155, 15.2, -12.73*

**Interval**

**Interval**is a Tulip Datatype. Intervals represent pieces of time, represented in seconds. Intervals can be added or subtracted from **Datetime**variables.

**Object**

**Objects**are a Tulip Datatype. Objects represent an arbitrary grouping of attributes. Leveraging objects can simplify the process of working with complex data architectures. Often **Connector** **Functions** will return **Arrays** of **Objects**

*ex. My car object has 5 attributes, Color, Make, Model, # of wheels, # of seats.*

**Array**

**Arrays**are a Tulip Datatype. Arrays are a list of other variables. Every element in an array must be the same type.

Arrays are very useful when managing multiple values that represent the same information.

*ex. The measurements of 10 quality checks can be stored in an Array of Numbers, as opposed to 10 Number variables.*

**Boolean**

**Boolean's**are a Tulip Datatype. Booleans can have True/False (Yes/No) values.

**Connector Function**

**Connector Functions** are individual operations to interact with an HTTP or SQL Datasources. Connector Functions can have inputs and outputs, and can be called from: Triggers, Functions, Automations, and AI Agents.

Once pulled, data can be used throughout your applications.

**Integer**

**Integers**are a Tulip Datatype. Integers can have any whole number.

*ex. -5, 15, 47, 155. **NOT** 15.2, -12.73*

**Expression**

A configured code snippet that returns a calculated value based on certain inputs. **Expressions**have access to all of the variables, Table Records, and any other data available to an application.
