> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-fix-ss-log-app-metadata-user-metadata-clarification.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-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=988e9282d4140238138011feb57ad75f" 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-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=280&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=aa28b4e47dc72c2b5e9664e7415f3fcf 280w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=560&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=e6e8d2901135d51a034da04afa774837 560w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=840&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=c10557c5f4e797e567ab028f4c30915d 840w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=1100&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=b381414395d52615120d37d693c61c3b 1100w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=1650&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=f68569512bff44e2d35d79fab0067793 1650w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=2500&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=7f1a983b3e485441be9d3658743d6c70 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-fix-ss-log-app-metadata-user-metadata-clarification/CeGb4CwYcXY6uZft/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?fit=max&auto=format&n=CeGb4CwYcXY6uZft&q=85&s=c66caed5a47631704984fae66cdd83d0" 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-fix-ss-log-app-metadata-user-metadata-clarification/CeGb4CwYcXY6uZft/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=280&fit=max&auto=format&n=CeGb4CwYcXY6uZft&q=85&s=cf7f0eb384fdfb3b21045bacb391971b 280w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/CeGb4CwYcXY6uZft/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=560&fit=max&auto=format&n=CeGb4CwYcXY6uZft&q=85&s=56cd2553c77df592f68d39357217bbe7 560w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/CeGb4CwYcXY6uZft/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=840&fit=max&auto=format&n=CeGb4CwYcXY6uZft&q=85&s=187379f10bd21ba230c449edb5621084 840w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/CeGb4CwYcXY6uZft/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=1100&fit=max&auto=format&n=CeGb4CwYcXY6uZft&q=85&s=53d3e5f56ab94790a10f6e8b71f8f57f 1100w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/CeGb4CwYcXY6uZft/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=1650&fit=max&auto=format&n=CeGb4CwYcXY6uZft&q=85&s=85b1862e5824c60f9e972a8c4006e9a2 1650w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/CeGb4CwYcXY6uZft/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=2500&fit=max&auto=format&n=CeGb4CwYcXY6uZft&q=85&s=fb55da1a57c8fe0f619f96cc4af46678 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-fix-ss-log-app-metadata-user-metadata-clarification/kea7N-eir4Zjm6iz/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?fit=max&auto=format&n=kea7N-eir4Zjm6iz&q=85&s=b6c147cf01f5d36be966454fac84e0be" 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-fix-ss-log-app-metadata-user-metadata-clarification/kea7N-eir4Zjm6iz/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=280&fit=max&auto=format&n=kea7N-eir4Zjm6iz&q=85&s=a5b1cdbcef2f00f58aaba2ce2fc39452 280w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/kea7N-eir4Zjm6iz/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=560&fit=max&auto=format&n=kea7N-eir4Zjm6iz&q=85&s=f95884fcc63e4f9ed716c126a9ef2978 560w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/kea7N-eir4Zjm6iz/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=840&fit=max&auto=format&n=kea7N-eir4Zjm6iz&q=85&s=29f3430d9fcc77dcd09189134e7e40e0 840w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/kea7N-eir4Zjm6iz/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=1100&fit=max&auto=format&n=kea7N-eir4Zjm6iz&q=85&s=7bbdc331f40f1d1b4b68626a6eb06190 1100w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/kea7N-eir4Zjm6iz/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=1650&fit=max&auto=format&n=kea7N-eir4Zjm6iz&q=85&s=57703b5aae9b5d9a0b59449b07deb382 1650w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/kea7N-eir4Zjm6iz/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=2500&fit=max&auto=format&n=kea7N-eir4Zjm6iz&q=85&s=f7d2685b75a129ac447b316f77ef78c4 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-fix-ss-log-app-metadata-user-metadata-clarification/CeGb4CwYcXY6uZft/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?fit=max&auto=format&n=CeGb4CwYcXY6uZft&q=85&s=aa6b8cd1ed33eea1edd31187fbac8d7f" 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-fix-ss-log-app-metadata-user-metadata-clarification/CeGb4CwYcXY6uZft/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=280&fit=max&auto=format&n=CeGb4CwYcXY6uZft&q=85&s=17dcf013b1573433fc46feeccb28725c 280w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/CeGb4CwYcXY6uZft/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=560&fit=max&auto=format&n=CeGb4CwYcXY6uZft&q=85&s=5b30da8f695a5e47ff6fa057ed326251 560w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/CeGb4CwYcXY6uZft/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=840&fit=max&auto=format&n=CeGb4CwYcXY6uZft&q=85&s=3f6169b714a6198e4969fa015cf0bab6 840w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/CeGb4CwYcXY6uZft/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=1100&fit=max&auto=format&n=CeGb4CwYcXY6uZft&q=85&s=c859168376ecb276c6a4ece79caf292c 1100w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/CeGb4CwYcXY6uZft/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=1650&fit=max&auto=format&n=CeGb4CwYcXY6uZft&q=85&s=9d269abfa7b700c8151bceb809e5a6d1 1650w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/CeGb4CwYcXY6uZft/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=2500&fit=max&auto=format&n=CeGb4CwYcXY6uZft&q=85&s=68e2669bf7d5e6b1742b9db32f2ae7f6 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-fix-ss-log-app-metadata-user-metadata-clarification/_-ecZoC-zidTtQ_x/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?fit=max&auto=format&n=_-ecZoC-zidTtQ_x&q=85&s=47960e12e36e6a096630a2438673e21f" 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-fix-ss-log-app-metadata-user-metadata-clarification/_-ecZoC-zidTtQ_x/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=280&fit=max&auto=format&n=_-ecZoC-zidTtQ_x&q=85&s=548259f506d293575f5362f2c399f0d7 280w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/_-ecZoC-zidTtQ_x/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=560&fit=max&auto=format&n=_-ecZoC-zidTtQ_x&q=85&s=1de34ac6bd584871fd304577894cdbbd 560w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/_-ecZoC-zidTtQ_x/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=840&fit=max&auto=format&n=_-ecZoC-zidTtQ_x&q=85&s=97ec080f446b4bd1e01d4b0025ee780c 840w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/_-ecZoC-zidTtQ_x/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=1100&fit=max&auto=format&n=_-ecZoC-zidTtQ_x&q=85&s=642309ab602c29848ef4cebfb5c33a78 1100w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/_-ecZoC-zidTtQ_x/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=1650&fit=max&auto=format&n=_-ecZoC-zidTtQ_x&q=85&s=e506b7927fab0c959f6fe9b7dfabe27c 1650w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/_-ecZoC-zidTtQ_x/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=2500&fit=max&auto=format&n=_-ecZoC-zidTtQ_x&q=85&s=5e71756ace5c311caa344c697456c564 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-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=db1f64c9cf747325d29a951ffd42e17e" 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-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=280&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=ee74a2869ae15ad4dc54f3e4e538e26b 280w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=560&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=d9c83d0cccfbdb4d8c890b513448ccbb 560w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=840&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=9ef6f417389c7afb9c032002cbcf5797 840w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=1100&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=8c92d010050fc8e5afb928b76fbb3656 1100w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=1650&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=8b78a1caebeb22cf52e6fa06af514705 1650w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=2500&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=e0ac717451cc0c906635a603ffc7685b 2500w" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=04910ebd6c93b8d3676931ac29fd15e5" 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-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=280&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=a6bc588fab8df97fc4979f11b4638801 280w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=560&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=770fb53d9c0b78e6f802227b9dfe0cc4 560w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=840&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=12b36dc570cf6f1ce3838b9d9829f40a 840w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=1100&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=01c2bded2f1fa154c5248d95c2ca8f69 1100w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=1650&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=4cd9e718c2aef9de73ae27f5d090f78f 1650w, https://mintcdn.com/docs-dev-fix-ss-log-app-metadata-user-metadata-clarification/7E_Iu1vhF4mliqIC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=2500&fit=max&auto=format&n=7E_Iu1vhF4mliqIC&q=85&s=7ac8ef66d2a7c557445ba41938fb97f1 2500w" />
</Frame>
