> ## Documentation Index
> Fetch the complete documentation index at: https://docs-staging-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-staging-feat-sdk-reference-docs/9vX9KFZO3QwQJOMH/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?fit=max&auto=format&n=9vX9KFZO3QwQJOMH&q=85&s=16d3d8faf9f0076985e8250e150116e6" 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-feat-sdk-reference-docs/9vX9KFZO3QwQJOMH/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=280&fit=max&auto=format&n=9vX9KFZO3QwQJOMH&q=85&s=c17ca0105cf5ef7afc63904e1dda5199 280w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/9vX9KFZO3QwQJOMH/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=560&fit=max&auto=format&n=9vX9KFZO3QwQJOMH&q=85&s=4604905ad32d1f0be3458a707e632eca 560w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/9vX9KFZO3QwQJOMH/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=840&fit=max&auto=format&n=9vX9KFZO3QwQJOMH&q=85&s=21b8c0b4526523cee150fcaa51ed22a8 840w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/9vX9KFZO3QwQJOMH/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=1100&fit=max&auto=format&n=9vX9KFZO3QwQJOMH&q=85&s=8acd7553f50414ff5603431c3bf7ee4c 1100w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/9vX9KFZO3QwQJOMH/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=1650&fit=max&auto=format&n=9vX9KFZO3QwQJOMH&q=85&s=86c5d3b165f63aeed60e21468629aea5 1650w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/9vX9KFZO3QwQJOMH/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=2500&fit=max&auto=format&n=9vX9KFZO3QwQJOMH&q=85&s=9cb0f5b31c71a16719ea36820b5205d7 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-feat-sdk-reference-docs/jWAKKM631THF40NN/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?fit=max&auto=format&n=jWAKKM631THF40NN&q=85&s=b27896eba319ce5e6a8a6297856b2e24" 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-feat-sdk-reference-docs/jWAKKM631THF40NN/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=280&fit=max&auto=format&n=jWAKKM631THF40NN&q=85&s=ac577ccc9aa5347a5752320b18595316 280w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/jWAKKM631THF40NN/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=560&fit=max&auto=format&n=jWAKKM631THF40NN&q=85&s=cb8c8d101a8f8356387c3d6eedac3e15 560w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/jWAKKM631THF40NN/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=840&fit=max&auto=format&n=jWAKKM631THF40NN&q=85&s=c69121d7a3efcabb88ac57d6f9f42d97 840w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/jWAKKM631THF40NN/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=1100&fit=max&auto=format&n=jWAKKM631THF40NN&q=85&s=5005996ada7f854523cadcf61227efa7 1100w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/jWAKKM631THF40NN/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=1650&fit=max&auto=format&n=jWAKKM631THF40NN&q=85&s=7d5806242cc3f63a0b54e4898d07831e 1650w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/jWAKKM631THF40NN/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=2500&fit=max&auto=format&n=jWAKKM631THF40NN&q=85&s=beb6a9144dae733c6ac8613a4c33ad71 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-feat-sdk-reference-docs/7XeQ3Zd4LUFArOyz/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?fit=max&auto=format&n=7XeQ3Zd4LUFArOyz&q=85&s=82cf33da3b0fbfbc4c4e8329c02d951c" 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-feat-sdk-reference-docs/7XeQ3Zd4LUFArOyz/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=280&fit=max&auto=format&n=7XeQ3Zd4LUFArOyz&q=85&s=b2b54851c367adfb3b6dfc4982034d0d 280w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/7XeQ3Zd4LUFArOyz/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=560&fit=max&auto=format&n=7XeQ3Zd4LUFArOyz&q=85&s=9972acadb1a0ceb1c09e88d72529016d 560w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/7XeQ3Zd4LUFArOyz/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=840&fit=max&auto=format&n=7XeQ3Zd4LUFArOyz&q=85&s=f25768d2493297172033e5381eda80bc 840w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/7XeQ3Zd4LUFArOyz/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=1100&fit=max&auto=format&n=7XeQ3Zd4LUFArOyz&q=85&s=b941590ccfd31df37a5fd58ff91cea95 1100w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/7XeQ3Zd4LUFArOyz/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=1650&fit=max&auto=format&n=7XeQ3Zd4LUFArOyz&q=85&s=c67cb44277468dd5c18bd45097c0be87 1650w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/7XeQ3Zd4LUFArOyz/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=2500&fit=max&auto=format&n=7XeQ3Zd4LUFArOyz&q=85&s=5447822216ad50ab4a95027812667153 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-feat-sdk-reference-docs/jWAKKM631THF40NN/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?fit=max&auto=format&n=jWAKKM631THF40NN&q=85&s=ab0b3b503414cb1bcea574217d1f10b5" 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-feat-sdk-reference-docs/jWAKKM631THF40NN/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=280&fit=max&auto=format&n=jWAKKM631THF40NN&q=85&s=9411d48aaf10476d35c21de63687b5d2 280w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/jWAKKM631THF40NN/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=560&fit=max&auto=format&n=jWAKKM631THF40NN&q=85&s=a2e6ff74f97c31ea0f1f68ae99ebd560 560w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/jWAKKM631THF40NN/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=840&fit=max&auto=format&n=jWAKKM631THF40NN&q=85&s=7309c33d4179e47f1ac33c91560adc51 840w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/jWAKKM631THF40NN/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=1100&fit=max&auto=format&n=jWAKKM631THF40NN&q=85&s=d6c2226681c3f8c5d1131d8269e85013 1100w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/jWAKKM631THF40NN/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=1650&fit=max&auto=format&n=jWAKKM631THF40NN&q=85&s=dc705f2f4c9d839a031daa233370f27d 1650w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/jWAKKM631THF40NN/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=2500&fit=max&auto=format&n=jWAKKM631THF40NN&q=85&s=81964080b4a2195ca233eae1f1ae1bb7 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-feat-sdk-reference-docs/po5ocnRNTrslIk5C/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?fit=max&auto=format&n=po5ocnRNTrslIk5C&q=85&s=349c0135ed1a1d3b344d31f10c970a32" 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-feat-sdk-reference-docs/po5ocnRNTrslIk5C/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=280&fit=max&auto=format&n=po5ocnRNTrslIk5C&q=85&s=fe2199b4df9c96a8223b87df871f0b91 280w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/po5ocnRNTrslIk5C/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=560&fit=max&auto=format&n=po5ocnRNTrslIk5C&q=85&s=92253171517b806bf738d69a54db4046 560w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/po5ocnRNTrslIk5C/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=840&fit=max&auto=format&n=po5ocnRNTrslIk5C&q=85&s=fd0b8960c8eaa5667a5093fa58436ddd 840w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/po5ocnRNTrslIk5C/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=1100&fit=max&auto=format&n=po5ocnRNTrslIk5C&q=85&s=5b2c1afd197caf15224fd3b09caf27a6 1100w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/po5ocnRNTrslIk5C/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=1650&fit=max&auto=format&n=po5ocnRNTrslIk5C&q=85&s=2a1690672f4c22ff13077f9c6c19ec86 1650w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/po5ocnRNTrslIk5C/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=2500&fit=max&auto=format&n=po5ocnRNTrslIk5C&q=85&s=7ce6fd7a976b6bf67ff82c0041b90953 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-feat-sdk-reference-docs/9vX9KFZO3QwQJOMH/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?fit=max&auto=format&n=9vX9KFZO3QwQJOMH&q=85&s=efc72aea64cc4bb5f92278bcb851c564" 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-feat-sdk-reference-docs/9vX9KFZO3QwQJOMH/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=280&fit=max&auto=format&n=9vX9KFZO3QwQJOMH&q=85&s=d423a538ca5ec98ebd712bc2b8bd947d 280w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/9vX9KFZO3QwQJOMH/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=560&fit=max&auto=format&n=9vX9KFZO3QwQJOMH&q=85&s=3188c9d6c6eb178d8d97851ce7ea4e99 560w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/9vX9KFZO3QwQJOMH/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=840&fit=max&auto=format&n=9vX9KFZO3QwQJOMH&q=85&s=d05e01098e6a4fcda6e6d1f632d34d33 840w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/9vX9KFZO3QwQJOMH/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=1100&fit=max&auto=format&n=9vX9KFZO3QwQJOMH&q=85&s=343d6e30c3d18a436bd3f59b30170487 1100w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/9vX9KFZO3QwQJOMH/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=1650&fit=max&auto=format&n=9vX9KFZO3QwQJOMH&q=85&s=73aa31e00a0332c19e0ba92275e97cf3 1650w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/9vX9KFZO3QwQJOMH/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=2500&fit=max&auto=format&n=9vX9KFZO3QwQJOMH&q=85&s=54536f8d8df3459fd5fbe954aacad72a 2500w" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/docs-staging-feat-sdk-reference-docs/OMbaL5tGpZJgvr5N/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?fit=max&auto=format&n=OMbaL5tGpZJgvr5N&q=85&s=c14ec673500d8b1ab692002fd82d45ba" 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-feat-sdk-reference-docs/OMbaL5tGpZJgvr5N/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=280&fit=max&auto=format&n=OMbaL5tGpZJgvr5N&q=85&s=b65ae4384b23d727be19b9a31918b5cc 280w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/OMbaL5tGpZJgvr5N/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=560&fit=max&auto=format&n=OMbaL5tGpZJgvr5N&q=85&s=5d88d78d9c81c0c3760c37d27d341c14 560w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/OMbaL5tGpZJgvr5N/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=840&fit=max&auto=format&n=OMbaL5tGpZJgvr5N&q=85&s=03071000a23ccf759e38340e530ff035 840w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/OMbaL5tGpZJgvr5N/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=1100&fit=max&auto=format&n=OMbaL5tGpZJgvr5N&q=85&s=64e4b1a835b2f767b30b016845944277 1100w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/OMbaL5tGpZJgvr5N/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=1650&fit=max&auto=format&n=OMbaL5tGpZJgvr5N&q=85&s=44b5e37ef8439bf37ad957eb20de82ce 1650w, https://mintcdn.com/docs-staging-feat-sdk-reference-docs/OMbaL5tGpZJgvr5N/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=2500&fit=max&auto=format&n=OMbaL5tGpZJgvr5N&q=85&s=ce38fe9d49b657db906f8f1d9e9cb379 2500w" />
</Frame>
