> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-feat-sdk-reference-docs.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...",
      "correlation_id": "txn_12345_xyz"
    },
    "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-feat-sdk-reference-docs/ON-pZCLvus2Xp7h0/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?fit=max&auto=format&n=ON-pZCLvus2Xp7h0&q=85&s=d6af35498f3556fb2111a3585354f5c2" 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-feat-sdk-reference-docs/ON-pZCLvus2Xp7h0/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=280&fit=max&auto=format&n=ON-pZCLvus2Xp7h0&q=85&s=5ba690e824aadbee5c0133eaf737c0f4 280w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/ON-pZCLvus2Xp7h0/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=560&fit=max&auto=format&n=ON-pZCLvus2Xp7h0&q=85&s=f21a38e7b88133e3ea5418140d143e01 560w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/ON-pZCLvus2Xp7h0/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=840&fit=max&auto=format&n=ON-pZCLvus2Xp7h0&q=85&s=3d7dd47f82d49f8f9711767dc688d563 840w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/ON-pZCLvus2Xp7h0/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=1100&fit=max&auto=format&n=ON-pZCLvus2Xp7h0&q=85&s=0f3c9fa95e8a8a46a5c08d3e1db40239 1100w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/ON-pZCLvus2Xp7h0/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=1650&fit=max&auto=format&n=ON-pZCLvus2Xp7h0&q=85&s=8e02cdfc751a438cfe1a9528e09c6276 1650w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/ON-pZCLvus2Xp7h0/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=2500&fit=max&auto=format&n=ON-pZCLvus2Xp7h0&q=85&s=57a28e464f3c180f756f13411cbf7aaf 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-feat-sdk-reference-docs/vhoOq7UxR6ZN5JHG/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?fit=max&auto=format&n=vhoOq7UxR6ZN5JHG&q=85&s=9cf94ac9315328be222ab3fdbc28c0da" 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-feat-sdk-reference-docs/vhoOq7UxR6ZN5JHG/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=280&fit=max&auto=format&n=vhoOq7UxR6ZN5JHG&q=85&s=7f703a81e9d0ecc02515ffc72e200e50 280w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/vhoOq7UxR6ZN5JHG/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=560&fit=max&auto=format&n=vhoOq7UxR6ZN5JHG&q=85&s=04b85cb8659fd556a39190a5da283d6d 560w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/vhoOq7UxR6ZN5JHG/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=840&fit=max&auto=format&n=vhoOq7UxR6ZN5JHG&q=85&s=7d985efcfd5ebd2bceacc68253b0ce3f 840w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/vhoOq7UxR6ZN5JHG/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=1100&fit=max&auto=format&n=vhoOq7UxR6ZN5JHG&q=85&s=098ad0cccc5e68e93f9a5887ab6ea276 1100w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/vhoOq7UxR6ZN5JHG/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=1650&fit=max&auto=format&n=vhoOq7UxR6ZN5JHG&q=85&s=468aadf6d90a142f1d5d8f4a35d487f8 1650w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/vhoOq7UxR6ZN5JHG/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=2500&fit=max&auto=format&n=vhoOq7UxR6ZN5JHG&q=85&s=94e16f0b236546e03aa05a970922a27f 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-feat-sdk-reference-docs/0tYOZc0OW-lAvvrU/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?fit=max&auto=format&n=0tYOZc0OW-lAvvrU&q=85&s=484e85849a9c46761e5058e0d3762966" 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-feat-sdk-reference-docs/0tYOZc0OW-lAvvrU/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=280&fit=max&auto=format&n=0tYOZc0OW-lAvvrU&q=85&s=307913f1b51565dc5da18578905a19fc 280w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/0tYOZc0OW-lAvvrU/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=560&fit=max&auto=format&n=0tYOZc0OW-lAvvrU&q=85&s=035f395d758d9a470e7d6be39dbaa32e 560w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/0tYOZc0OW-lAvvrU/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=840&fit=max&auto=format&n=0tYOZc0OW-lAvvrU&q=85&s=8327b1c80633543b791a11f1f76a2c54 840w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/0tYOZc0OW-lAvvrU/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=1100&fit=max&auto=format&n=0tYOZc0OW-lAvvrU&q=85&s=43eb2849b0f59ef63e3207ea7b4046f2 1100w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/0tYOZc0OW-lAvvrU/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=1650&fit=max&auto=format&n=0tYOZc0OW-lAvvrU&q=85&s=60f11b58f688143e6a5abc6053118773 1650w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/0tYOZc0OW-lAvvrU/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=2500&fit=max&auto=format&n=0tYOZc0OW-lAvvrU&q=85&s=bbce78f752664145f5a00f26fb9a02fd 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-feat-sdk-reference-docs/vhoOq7UxR6ZN5JHG/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?fit=max&auto=format&n=vhoOq7UxR6ZN5JHG&q=85&s=9bb47c3dd4711fad291dee33d1802821" 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-feat-sdk-reference-docs/vhoOq7UxR6ZN5JHG/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=280&fit=max&auto=format&n=vhoOq7UxR6ZN5JHG&q=85&s=4f04928639ae6e18e8f60afe3ac5bd36 280w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/vhoOq7UxR6ZN5JHG/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=560&fit=max&auto=format&n=vhoOq7UxR6ZN5JHG&q=85&s=b4350c3cb63ff206f501c849e5737926 560w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/vhoOq7UxR6ZN5JHG/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=840&fit=max&auto=format&n=vhoOq7UxR6ZN5JHG&q=85&s=239c41b0d708847ca31ddb34dc9b4f33 840w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/vhoOq7UxR6ZN5JHG/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=1100&fit=max&auto=format&n=vhoOq7UxR6ZN5JHG&q=85&s=d6efa2921a1ded772c907973295fa377 1100w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/vhoOq7UxR6ZN5JHG/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=1650&fit=max&auto=format&n=vhoOq7UxR6ZN5JHG&q=85&s=6e42314d2ecf8311fa546320258e45e0 1650w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/vhoOq7UxR6ZN5JHG/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=2500&fit=max&auto=format&n=vhoOq7UxR6ZN5JHG&q=85&s=fe6b218a10a6e0cf2b3ff997364f222f 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-feat-sdk-reference-docs/vVLrCzoor0V6dTvM/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?fit=max&auto=format&n=vVLrCzoor0V6dTvM&q=85&s=9a1c6098edb68a1aeb529faa174d175f" 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-feat-sdk-reference-docs/vVLrCzoor0V6dTvM/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=280&fit=max&auto=format&n=vVLrCzoor0V6dTvM&q=85&s=bee29dd297097abce02afbab85d97d74 280w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/vVLrCzoor0V6dTvM/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=560&fit=max&auto=format&n=vVLrCzoor0V6dTvM&q=85&s=418a9987708d657d6c437c3b300cb4e1 560w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/vVLrCzoor0V6dTvM/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=840&fit=max&auto=format&n=vVLrCzoor0V6dTvM&q=85&s=8bbd8f0b84e43bff80bcdb9f996bedba 840w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/vVLrCzoor0V6dTvM/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=1100&fit=max&auto=format&n=vVLrCzoor0V6dTvM&q=85&s=28e0817115bf7d0d64cd5b40d9dbddd1 1100w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/vVLrCzoor0V6dTvM/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=1650&fit=max&auto=format&n=vVLrCzoor0V6dTvM&q=85&s=e032f41d7259590397af67fb47adfbd1 1650w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/vVLrCzoor0V6dTvM/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=2500&fit=max&auto=format&n=vVLrCzoor0V6dTvM&q=85&s=b54eb8c6ab487bcfbdfa39d32e92b3d2 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-feat-sdk-reference-docs/ON-pZCLvus2Xp7h0/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?fit=max&auto=format&n=ON-pZCLvus2Xp7h0&q=85&s=4a6771b72981a4809a76af7477492ebb" 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-feat-sdk-reference-docs/ON-pZCLvus2Xp7h0/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=280&fit=max&auto=format&n=ON-pZCLvus2Xp7h0&q=85&s=88d82713fd2a4565819eff5a988fe7b7 280w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/ON-pZCLvus2Xp7h0/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=560&fit=max&auto=format&n=ON-pZCLvus2Xp7h0&q=85&s=3a3a6e640a8560a8b8a31b3c60543d7d 560w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/ON-pZCLvus2Xp7h0/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=840&fit=max&auto=format&n=ON-pZCLvus2Xp7h0&q=85&s=9f6bce66aedbae6a06490d954eaa1f10 840w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/ON-pZCLvus2Xp7h0/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=1100&fit=max&auto=format&n=ON-pZCLvus2Xp7h0&q=85&s=84b3716708762cf471de4700092ecf5f 1100w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/ON-pZCLvus2Xp7h0/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=1650&fit=max&auto=format&n=ON-pZCLvus2Xp7h0&q=85&s=fe05c944e80d8bc79f66c006fd378153 1650w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/ON-pZCLvus2Xp7h0/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=2500&fit=max&auto=format&n=ON-pZCLvus2Xp7h0&q=85&s=b619a4f84b3279755f758d491477d1c4 2500w" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/docs-dev-feat-sdk-reference-docs/cH8SproRs4WJoPzC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?fit=max&auto=format&n=cH8SproRs4WJoPzC&q=85&s=2ec54aa40fd67e85be41b1cdc74fb9c8" 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-feat-sdk-reference-docs/cH8SproRs4WJoPzC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=280&fit=max&auto=format&n=cH8SproRs4WJoPzC&q=85&s=baf6351c3fd02ab4e5e0d9183ec6131c 280w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/cH8SproRs4WJoPzC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=560&fit=max&auto=format&n=cH8SproRs4WJoPzC&q=85&s=b17638b31bbfab40954561ac2ec64d75 560w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/cH8SproRs4WJoPzC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=840&fit=max&auto=format&n=cH8SproRs4WJoPzC&q=85&s=5b3038963d40dd53f5a149b1b309feee 840w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/cH8SproRs4WJoPzC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=1100&fit=max&auto=format&n=cH8SproRs4WJoPzC&q=85&s=e514c6dce6311fcd47472119dbdba926 1100w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/cH8SproRs4WJoPzC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=1650&fit=max&auto=format&n=cH8SproRs4WJoPzC&q=85&s=08a84006861801813f82b22a03091682 1650w, https://mintcdn.com/docs-dev-feat-sdk-reference-docs/cH8SproRs4WJoPzC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=2500&fit=max&auto=format&n=cH8SproRs4WJoPzC&q=85&s=8e8ae0504888f4c5ce2a88a4acc027a1 2500w" />
</Frame>
