> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-docs-free-tenant-inactivity-policy.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Learn how to use variables in Forms for Actions.

# 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:

  * `custome_domain.domain`
  * `custome_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-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=259d780100336b3c82f499305c27e506" 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-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=280&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=7feb5e864502e91a8550b8973065e4c0 280w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=560&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=5e151d28e095d919cb4e2e69c3624857 560w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=840&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=869aacdebf55fe2bce4b47503954cf68 840w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=1100&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=614b4cb2dfde067b1983513a510675b5 1100w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=1650&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=976e6e841f574a8e91accb63e48f2213 1650w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=2500&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=b039ef74dbbf73cad25006dfb1f4734f 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-dev-docs-free-tenant-inactivity-policy/go3o9wCDiSW4TyLM/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?fit=max&auto=format&n=go3o9wCDiSW4TyLM&q=85&s=0c853ddd652f65a95bcf81c1c373abdf" 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-dev-docs-free-tenant-inactivity-policy/go3o9wCDiSW4TyLM/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=280&fit=max&auto=format&n=go3o9wCDiSW4TyLM&q=85&s=4b78869aeab8aa80b81e19659f268f88 280w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/go3o9wCDiSW4TyLM/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=560&fit=max&auto=format&n=go3o9wCDiSW4TyLM&q=85&s=4104e9fa9fefa16535363fb319694e92 560w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/go3o9wCDiSW4TyLM/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=840&fit=max&auto=format&n=go3o9wCDiSW4TyLM&q=85&s=ce0ba29120a099a9557bcc61a9eb6ada 840w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/go3o9wCDiSW4TyLM/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=1100&fit=max&auto=format&n=go3o9wCDiSW4TyLM&q=85&s=a546e97462d467f5fe33101a904773c6 1100w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/go3o9wCDiSW4TyLM/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=1650&fit=max&auto=format&n=go3o9wCDiSW4TyLM&q=85&s=d4069c96bcd27b4929bbd50525a3d207 1650w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/go3o9wCDiSW4TyLM/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=2500&fit=max&auto=format&n=go3o9wCDiSW4TyLM&q=85&s=1f33d213e492d414fd50053f4432d199 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-dev-docs-free-tenant-inactivity-policy/EMBRM6bYnT1287YM/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?fit=max&auto=format&n=EMBRM6bYnT1287YM&q=85&s=faa8b65da9b3a7dc9c09bb0f49e745a6" 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-dev-docs-free-tenant-inactivity-policy/EMBRM6bYnT1287YM/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=280&fit=max&auto=format&n=EMBRM6bYnT1287YM&q=85&s=29092a99ea3be1bdd5ce3e1431f59d8e 280w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/EMBRM6bYnT1287YM/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=560&fit=max&auto=format&n=EMBRM6bYnT1287YM&q=85&s=7dc9febe9517aa668f7adc2a4648dd81 560w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/EMBRM6bYnT1287YM/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=840&fit=max&auto=format&n=EMBRM6bYnT1287YM&q=85&s=211fc800b9b076067bb6638eb50c0d13 840w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/EMBRM6bYnT1287YM/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=1100&fit=max&auto=format&n=EMBRM6bYnT1287YM&q=85&s=4af6f29873907c56a8a09fbe199cd6f7 1100w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/EMBRM6bYnT1287YM/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=1650&fit=max&auto=format&n=EMBRM6bYnT1287YM&q=85&s=fdb57adac35fcbc536fe6011640ab281 1650w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/EMBRM6bYnT1287YM/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=2500&fit=max&auto=format&n=EMBRM6bYnT1287YM&q=85&s=27344954400fced738bcd5fb89d78b23 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-dev-docs-free-tenant-inactivity-policy/go3o9wCDiSW4TyLM/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?fit=max&auto=format&n=go3o9wCDiSW4TyLM&q=85&s=42b029bf89091880f798ca281a548001" 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-dev-docs-free-tenant-inactivity-policy/go3o9wCDiSW4TyLM/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=280&fit=max&auto=format&n=go3o9wCDiSW4TyLM&q=85&s=ba0b5ea754d2155ec0fcca49c0fd0ed5 280w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/go3o9wCDiSW4TyLM/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=560&fit=max&auto=format&n=go3o9wCDiSW4TyLM&q=85&s=eff05d9ed8f410658cd58ba83704fb34 560w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/go3o9wCDiSW4TyLM/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=840&fit=max&auto=format&n=go3o9wCDiSW4TyLM&q=85&s=ff7ed813f96e5a2b18cbd2a163043510 840w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/go3o9wCDiSW4TyLM/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=1100&fit=max&auto=format&n=go3o9wCDiSW4TyLM&q=85&s=cc028dcb161ada0cd080791ee6a91713 1100w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/go3o9wCDiSW4TyLM/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=1650&fit=max&auto=format&n=go3o9wCDiSW4TyLM&q=85&s=15d0fedfcbab886de675dcdde73e4ca9 1650w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/go3o9wCDiSW4TyLM/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=2500&fit=max&auto=format&n=go3o9wCDiSW4TyLM&q=85&s=02903cc33778b83ace5bc43832b24ffa 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-dev-docs-free-tenant-inactivity-policy/2Ak17d_u3ODX3TIy/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?fit=max&auto=format&n=2Ak17d_u3ODX3TIy&q=85&s=f3a81b4caeb61e121ddf40b4fe2a6612" 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-dev-docs-free-tenant-inactivity-policy/2Ak17d_u3ODX3TIy/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=280&fit=max&auto=format&n=2Ak17d_u3ODX3TIy&q=85&s=02c032bcf85cb8b4127d02dfb97f42af 280w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/2Ak17d_u3ODX3TIy/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=560&fit=max&auto=format&n=2Ak17d_u3ODX3TIy&q=85&s=7124431eb3e06ef5d5af10cdc08d0901 560w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/2Ak17d_u3ODX3TIy/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=840&fit=max&auto=format&n=2Ak17d_u3ODX3TIy&q=85&s=3f7e22d8470df9bac9ef1dbdc9c48602 840w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/2Ak17d_u3ODX3TIy/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=1100&fit=max&auto=format&n=2Ak17d_u3ODX3TIy&q=85&s=c6fef1e055ee5ed1bf8d2c3449779bb8 1100w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/2Ak17d_u3ODX3TIy/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=1650&fit=max&auto=format&n=2Ak17d_u3ODX3TIy&q=85&s=536dd9946866ba5c67e97ed8689ceb11 1650w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/2Ak17d_u3ODX3TIy/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=2500&fit=max&auto=format&n=2Ak17d_u3ODX3TIy&q=85&s=ee4212a58c2a98c91dcb51e62cf565a8 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-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=8578fe998afc9d843df4766cd74b9257" 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-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=280&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=37e30cbc769df0bcf0631847d122b0fc 280w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=560&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=72468babe805a976a1bae32c13071a20 560w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=840&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=fbba2f1c0f56d8d957348f30c68d8d56 840w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=1100&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=5d3c7ac138b2dcc50ed0b64979080003 1100w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=1650&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=e30fcf4c0f8d656088684992929674fc 1650w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=2500&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=b8a177e0f7f9b4630cdecafd285b372e 2500w" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=815f5f135f712544e8de6c5d0b090746" 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-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=280&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=e806f5b2b176b1a15d57d04b083c359a 280w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=560&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=917a470d2fc5960ad1a7b798666ed888 560w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=840&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=f1d10b89fa24079676815b7d075ecd88 840w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=1100&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=8a794900ab1318c880998a1442de0ca2 1100w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=1650&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=b013d34a9b336aadf2879f02d5e566eb 1650w, https://mintcdn.com/docs-dev-docs-free-tenant-inactivity-policy/F28HqXaq-fHcjHSN/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=2500&fit=max&auto=format&n=F28HqXaq-fHcjHSN&q=85&s=fdb294747e9eeeab678afd629256395e 2500w" />
</Frame>
