> ## Documentation Index
> Fetch the complete documentation index at: https://docs-staging-chore-rate-limits-autoupdate-0.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Learn how to use variables to access and transform user data in Forms and Flows.

# Variables and helper functions

Variables allow you to access data contained in Forms and Flows to create custom business logic and automations.

Some basic considerations to using variables are:

* Variables are surrounded by curly brackets `{{ variable }}`.
* If a variable doesn't exist or can't be resolved, it has the same effect as an `undefined` variable.
* You can use nullish operators to handle `null` or `undefined` variables, for example:`{{fields.foo ?? fields.bar}}`.

## Available variables

You can use different types of variables to reference and transform data you gather from customers with Forms and Flows.

| Variable            | Syntax            | Where         | Description                                                      |
| ------------------- | ----------------- | ------------- | ---------------------------------------------------------------- |
| Context             | `{{context.*}}`   | Forms / Flows | Reference context data of the current transaction                |
| Form fields         | `{{fields.*}}`    | Forms / Flows | Reference data from your form fields and hidden fields           |
| Shared variables    | `{{vars.*}}`      | Forms / Flows | Reference data stored as shared variables                        |
| Flow actions output | `{{actions.*}}`   | Flows         | Reference data from the output response of previous flow actions |
| Helper functions    | `{{functions.*}}` | Forms / Flows | Helper functions to transform data                               |

### Context variables

Forms and flows automatically inherit context variables from the current transaction. You can access the following context variables:

* The `user` object, with access to the following properties:

  * `user.user_id`
  * `user.username`
  * `user.name`
  * `user.given_name`
  * `user.family_name`
  * `user.nickname`
  * `user.email`
  * `user.email_verified`
  * `user.phone_number`
  * `user.phone_verified`
  * `user.picture`
  * `user.user_metadata`
  * `user.app_metadata`
  * `user.created_at`
  * `user.updated_at`
  * `user.last_password_reset`
  * `user.identities`
* The `organization` object, with access to the following properties:

  * `organization.id`
  * `organization.name`
  * `organization.display_name`
  * `organization.metadata`
* The `client` object, with access to the following properties:

  * `client.client_id`
  * `client.name`
* The `tenant` object, with access to the following property:

  * `tenant.name`
* The `transaction` object, with access to the following property:

  * `transaction.state`
  * `transaction.correlation_id`
* The `custom_domain` object, with access to the following property:

  * `custom_domain.domain`
  * `custom_domain.domain_metadata`

<Accordion title="Example of context object">
  ```json lines expandable theme={null}
  {
    "user": {
      "user_id": "auth0|658409...",
      "name": "ana@travel0.com",
      "nickname": "ana",
      "email": "ana@travel0.com",
      "email_verified": true,
      "picture": "https://s.gravatar.com/avatar/8eb1b522f6...",
      "user_metadata": {},
      "app_metadata": {},
      "created_at": "2023-12-21T09:46:40.487Z",
      "updated_at": "2024-05-07T10:44:26.271Z",
      "last_password_reset": "2023-12-21T09:49:08.932Z",
      "identities": [
        {
          "user_id": "6584...",
          "isSocial": false,
          "provider": "auth0",
          "connection": "Username-Password-Authentication"
        }
      ]
    },
    "client": {
      "client_id": "xpeg5...",
      "name": "My App"
    },
    "tenant": {
      "name": "tenant-testing"
    },
    "transaction": {
      "state": "hKFo2SBId2M0..."
    },
    "custom_domain": {
      "domain": "example.com",
      "domain_metadata": {
        "key": "value"
      }
    }
  }
  ```
</Accordion>

For example:  `{{context.user.user_id}}` references the `user_id` of the `user` object.

<Frame>
  <img src="https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=31dc77205b490be15c321ba0920fcdf8" alt="Dashboard > Forms > Flows" data-og-width="1141" width="1141" data-og-height="219" height="219" data-path="docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=280&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=cd48c2f21e904d42710acaf436050dbd 280w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=560&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=83886e911feb47b9f1745e83532dcf2c 560w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=840&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=fe9df02aa0ae5a4476fb7c3ef29246d5 840w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=1100&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=2da0a4b6b0fc0577b908bc0c183ab3f8 1100w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=1650&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=7a0b2aa2546ec918c7f93125715dce38 1650w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=2500&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=b1e9f9e3fe5bb212fd9335fc3c3b299e 2500w" />
</Frame>

### Form fields variables

Field variables contain data collected from the user from input fields in the form and data from hidden fields. The data of each field varies depending on the field type. For example: `{{fields.first_name}}` references the input value of a field with the ID `first_name`.

<Frame>
  <img src="https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/LUxUj-Vx8jp0TpsZ/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?fit=max&auto=format&n=LUxUj-Vx8jp0TpsZ&q=85&s=85fc688c80cddf91848501a1d0d43e62" alt="Dashboard > Actions > Forms > Form" data-og-width="1404" width="1404" data-og-height="497" height="497" data-path="docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/LUxUj-Vx8jp0TpsZ/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=280&fit=max&auto=format&n=LUxUj-Vx8jp0TpsZ&q=85&s=5229af029025083cca9f950c8d5c440a 280w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/LUxUj-Vx8jp0TpsZ/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=560&fit=max&auto=format&n=LUxUj-Vx8jp0TpsZ&q=85&s=1ad5fdea74f0ca516c48b79697d46b13 560w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/LUxUj-Vx8jp0TpsZ/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=840&fit=max&auto=format&n=LUxUj-Vx8jp0TpsZ&q=85&s=bc8782a25bac75516ba7dbd7dfe63cb9 840w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/LUxUj-Vx8jp0TpsZ/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=1100&fit=max&auto=format&n=LUxUj-Vx8jp0TpsZ&q=85&s=e0a069a17c0febc9ef81151e0dfc2f21 1100w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/LUxUj-Vx8jp0TpsZ/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=1650&fit=max&auto=format&n=LUxUj-Vx8jp0TpsZ&q=85&s=cadc69c57b7170ff005c0bc17de88a1c 1650w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/LUxUj-Vx8jp0TpsZ/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=2500&fit=max&auto=format&n=LUxUj-Vx8jp0TpsZ&q=85&s=28c122d2e73d804372ee057c9eb7a2a0 2500w" />
</Frame>

### Flow output actions variables

When a flow action is executed, it generates an output object response that can be referenced in subsequent actions. For example: `{{actions.generate_otp.code}}` references the output code of the action with ID `generate_otp`.

<Frame>
  <img src="https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/9ET4GWN2sVah-rVR/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?fit=max&auto=format&n=9ET4GWN2sVah-rVR&q=85&s=053dbf9c3e103e8d5cdd476c7fcbebf3" alt="Dashboard > Actions > Forms > Flows" data-og-width="1404" width="1404" data-og-height="253" height="253" data-path="docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/9ET4GWN2sVah-rVR/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=280&fit=max&auto=format&n=9ET4GWN2sVah-rVR&q=85&s=fbdcefd413fdb528f5b38564db717b74 280w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/9ET4GWN2sVah-rVR/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=560&fit=max&auto=format&n=9ET4GWN2sVah-rVR&q=85&s=4975d7448d09d19f7093949f2f8659c7 560w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/9ET4GWN2sVah-rVR/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=840&fit=max&auto=format&n=9ET4GWN2sVah-rVR&q=85&s=983220ff43698ca4b681f642be8c1397 840w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/9ET4GWN2sVah-rVR/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=1100&fit=max&auto=format&n=9ET4GWN2sVah-rVR&q=85&s=9e2a8a7da8ed24845cd62b2e9008b947 1100w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/9ET4GWN2sVah-rVR/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=1650&fit=max&auto=format&n=9ET4GWN2sVah-rVR&q=85&s=fd372ec3b7f9c83b6edbfbebd96824ca 1650w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/9ET4GWN2sVah-rVR/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=2500&fit=max&auto=format&n=9ET4GWN2sVah-rVR&q=85&s=26dd8593a9d56c4749a323b96bbb7cb4 2500w" />
</Frame>

### Shared variables

You can store variables to be shared with subsequent flows or even with form components in the same transaction. Shared variables are ephemeral and are associated with a specific form journey. Their values cannot be accessed outside of that journey. For example: `{{vars.external_id}}` references the value of a shared variable with ID `external_id`.

<Frame>
  <img src="https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/LUxUj-Vx8jp0TpsZ/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?fit=max&auto=format&n=LUxUj-Vx8jp0TpsZ&q=85&s=b69ed3c1e186d3115efc1f0b71260426" alt="Dashboard > Actions > Forms > Flows" data-og-width="1215" width="1215" data-og-height="162" height="162" data-path="docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/LUxUj-Vx8jp0TpsZ/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=280&fit=max&auto=format&n=LUxUj-Vx8jp0TpsZ&q=85&s=31d4307d7a6b5bb1b3d28e8baf8fa4ff 280w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/LUxUj-Vx8jp0TpsZ/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=560&fit=max&auto=format&n=LUxUj-Vx8jp0TpsZ&q=85&s=c9b7d74b391f921a40a027772e685000 560w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/LUxUj-Vx8jp0TpsZ/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=840&fit=max&auto=format&n=LUxUj-Vx8jp0TpsZ&q=85&s=a948d0629b4dd8055cee7cd44138629b 840w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/LUxUj-Vx8jp0TpsZ/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=1100&fit=max&auto=format&n=LUxUj-Vx8jp0TpsZ&q=85&s=5151b0db7330365eb601cf5eccef3faf 1100w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/LUxUj-Vx8jp0TpsZ/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=1650&fit=max&auto=format&n=LUxUj-Vx8jp0TpsZ&q=85&s=b57e9766e633bf25416247cb15fd4275 1650w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/LUxUj-Vx8jp0TpsZ/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=2500&fit=max&auto=format&n=LUxUj-Vx8jp0TpsZ&q=85&s=8d1170cc61384612d86907bf8a9d0d16 2500w" />
</Frame>

<Warning>
  Shared variables:

  * are internal (server-side) and not exposed to the browser (client-side).
  * can be resolved and exposed to the browser if you referenced a shared variable in the form component.
  * might have sensitive information, so take care when you access shared variable to avoid any unnecessary or unintentional exposure.
</Warning>

### Helper functions

Helper functions let you transform data and perform simple operations. For example: `{{functions.toString(fields.privacy_policies)}}` transform the value of the field with ID `privacy_policies` using the `toString()` function.

<Frame>
  <img src="https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/uIK4WHBmDj93FeuL/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?fit=max&auto=format&n=uIK4WHBmDj93FeuL&q=85&s=0c729515db9ec922e923287ecc4a6790" alt="Dashboard > Actions > Forms > Flows" data-og-width="1404" width="1404" data-og-height="290" height="290" data-path="docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/uIK4WHBmDj93FeuL/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=280&fit=max&auto=format&n=uIK4WHBmDj93FeuL&q=85&s=488afa26001238d7453c789ce841fea2 280w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/uIK4WHBmDj93FeuL/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=560&fit=max&auto=format&n=uIK4WHBmDj93FeuL&q=85&s=27deb36475fb6ec0d2221eb5092c7c41 560w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/uIK4WHBmDj93FeuL/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=840&fit=max&auto=format&n=uIK4WHBmDj93FeuL&q=85&s=a82284286f236d60bbd7d68278c8a76e 840w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/uIK4WHBmDj93FeuL/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=1100&fit=max&auto=format&n=uIK4WHBmDj93FeuL&q=85&s=21b2aa68ca073a1ce146c0ea2465e84f 1100w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/uIK4WHBmDj93FeuL/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=1650&fit=max&auto=format&n=uIK4WHBmDj93FeuL&q=85&s=91c177e1c673b699f4c734ee066a3177 1650w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/uIK4WHBmDj93FeuL/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=2500&fit=max&auto=format&n=uIK4WHBmDj93FeuL&q=85&s=caf15ac0d1d80e4a4c7f0fd31305462d 2500w" />
</Frame>

The available helper functions are:

| Function                                 | Description                                                                                                                                                                                                                                                              | Example                                                                                                          |
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- |
| `toArray(value)`                         | Converts value to an array.                                                                                                                                                                                                                                              | `{{ functions.toArray('abc') }} // ['abc']`                                                                      |
| `toBoolean(value)`                       | Converts value to a boolean value.                                                                                                                                                                                                                                       | `{{ functions.toBoolean(1) }} // true&lt;br /&gt;&lt;br /&gt;\{\{ functions.toBoolean(0) }} // false`            |
| `length(value)`                          | Returns the length of the parameter value.                                                                                                                                                                                                                               | `{{ functions.length('auth0') }} // 5`                                                                           |
| `mask(value)`                            | Masks a value to avoid be exposed in Executions.                                                                                                                                                                                                                         | `{{ functions.mask('my_awesome_secret') }} // ███`                                                               |
| `toNumber(value)`                        | Converts value to a number.                                                                                                                                                                                                                                              | `{{ functions.toNumber('123') }} // 123`                                                                         |
| `random(min, max, [boolean])`            | Returns a random number between the inclusive min and max.                                                                                                                                                                                                               | `{{ functions.random(0, 6) }} // 4 &lt;br /&gt;&lt;br /&gt;\{\{ functions.random(0, 6, true) }} // 3.8523497...` |
| `slice(value, start, end)`               | Returns a section of a value array or string between the start and end indexes.                                                                                                                                                                                          | `{{ functions.slice( 'example', 3, 5) }} // 'mp'`                                                                |
| `toString(value)`                        | Converts value to a string.                                                                                                                                                                                                                                              | `{{ functions.toString(123) }} // '123'`                                                                         |
| `substring(value, start, end)`           | Returns a section of a value between the start and end indexes. Read about the [differences of slice and substring functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring#differences_between_substring_and_slice) | `{{ functions.substring( 'example’', 3, 5) }} // 'mp'`                                                           |
| `toTimestamp()`                          | Returns the current UNIX timestamp.                                                                                                                                                                                                                                      | `{{ functions.toTimestamp() }} // 1628761483`                                                                    |
| `toTimestamp(date)`                      | Returns the provided date in UNIX time.                                                                                                                                                                                                                                  | `{{ functions.toTimestamp('2021-04-30T10:02:50.876Z') }} // 1619776970`                                          |
| `toTimestamp(date)`                      | Returns the provided date in UNIX time.                                                                                                                                                                                                                                  | `{{ functions.toTimestamp('2021-04-30T10:02:50.876Z') }} // 1619776970`                                          |
| `toLowerCase(value)`                     | Returns a new string transformed to lowercase.                                                                                                                                                                                                                           | `{{ functions.toLowerCase('JohnDoe 1234') }} // johndoe 1234`                                                    |
| `toUpperCase(value)`                     | Returns a new string transformed to uppercase.                                                                                                                                                                                                                           | `{{ functions.toUpperCase('JohnDoe 1234') }} // JOHNDOE 1234`                                                    |
| `replaceAll(value, string, replacement)` | Returns a new string with all matches of a pattern replaced by a replacement.                                                                                                                                                                                            | `{{ functions.replaceAll('2021-04-30', '-', '/') }} // 2021/04/30`                                               |
| `replace(value, string, replacement)`    | Returns a new string with all matches of a pattern replaced by a replacement. If pattern is a string, only the first occurence will be replaced.                                                                                                                         | `{{ functions.replace('2021-04-30', '-', '/') }} // 2021/04-30`                                                  |
| `split(value, separator, limit?)`        | Returns an ordered list of substrings divided by the separator.                                                                                                                                                                                                          | `{{ functions.split('2021-04-30', '-') }} // ['2021', '04', '30']`                                               |
| `now()`                                  | Returns the current date in ISO 8601 format.                                                                                                                                                                                                                             | `{{ functions.now() }} // 2021-04-30T10:31:28.576Z`                                                              |
| `includes(collection, item, fromIndex?)` | Returns whether an array includes a certain value among its entries.                                                                                                                                                                                                     | `{{ functions.includes(['auth0', 'identity', 'authentication'], 'identity') }} // true`                          |
| `indexOf(collection, item, fromIndex?)`  | Returns the first index at which a given element can be found in the array, or -1 if it is not present.                                                                                                                                                                  | `{{ functions.indexOf(['auth0', 'identity', 'authentication'], 'identity') }} // 1`                              |
| `merge(base, value)`                     | Returns a merged array, object or concatenates a string depending on the base data type.                                                                                                                                                                                 | `{{ functions.merge(['auth0', 'identity'], ['authentication']) }} // ['auth0', 'identity', 'authentication']`    |
| `md5(value)`                             | Returns a MD5 hashed value.                                                                                                                                                                                                                                              | `{{ functions.md5('auth0') }} // 7bbb597...`                                                                     |
| `sha1(value)`                            | Returns a SHA1 hashed value.                                                                                                                                                                                                                                             | `{{ functions.sha1('auth0') }} // b4ec5339...`                                                                   |
| `sha256(value)`                          | Returns a SHA256 hashed value.                                                                                                                                                                                                                                           | `{{ functions.sha256('auth0') }} // d9082bdc...`                                                                 |
| `sha512(value)`                          | Returns a SHA512 hashed value.                                                                                                                                                                                                                                           | `{{ functions.sha512('auth0') }} // c0d588069d...`                                                               |
| `uuid()`                                 | Returns a random v4 UUID.                                                                                                                                                                                                                                                | `{{ functions.uuid() }} // 36b8f84d-df4e-4d49-b662-bcde71a8764`                                                  |

## Variables best practices

### Use meaningful IDs

When you add a Form field or a Flow action, the ID is automatically generated.

Update the ID to a more descriptive value so you can identify the information it contains. For example, if you create a Form field that stores the user’s first name, update the ID to `first_name`.

### Be mindful when updating existing IDs

If a variable is already in use and you need to modify the ID, identify where you have referenced it and update the ID accordingly to avoid undefined or empty values.

### Check Flow executions

If you see an unexpected variable value, use the [**Executions**](/docs/customize/forms/flows/flow-execution-and-debugger) view to troubleshoot the variable.

### Use the autocomplete menu

The autocomplete menu helps you locate and properly reference existing variables.

<Frame>
  <img src="https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=9423f82eee9b59ef8018ddcf37531daa" alt="Dashboard > Actions > Forms > Flows" data-og-width="1361" width="1361" data-og-height="502" height="502" data-path="docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=280&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=59967d27c0049189055280d6ea9e7fdc 280w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=560&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=e5d35a0884ba20880115401e1b1f6e2a 560w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=840&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=28541df6c6df036a6a52a8384f93a768 840w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=1100&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=6e1b4ee1bde63e5af3477c4682dd268a 1100w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=1650&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=24d72736a38e2be96d581cb64eddfd21 1650w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=2500&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=4c5bed305bcccfe0440e9d2918507a38 2500w" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=7c165fa24aaec1b0e0813efabb6fe13e" alt="Dashboard > Actions > Forms > Form" data-og-width="1394" width="1394" data-og-height="630" height="630" data-path="docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=280&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=bf6c7ff514768490aab1f4cadcf59463 280w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=560&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=98d5ca4cb9162c4ea442f108229496c2 560w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=840&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=73c79433cedef397d5326b7fdb45db11 840w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=1100&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=891e0e18a95d1a240892490e8f579885 1100w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=1650&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=1d9b586187e52758a85358f983e6a818 1650w, https://mintcdn.com/docs-staging-chore-rate-limits-autoupdate-0/J4jnk8JbEVhByDnI/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=2500&fit=max&auto=format&n=J4jnk8JbEVhByDnI&q=85&s=350dcfce9420e1f44f8722cdac40a025 2500w" />
</Frame>
