> ## Documentation Index
> Fetch the complete documentation index at: https://docs-dev-feat-acul-js-sdk-1-7-0-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-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=253dd6391f4382661fc27f0af0edbbb3" 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-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=280&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=88e5acd0d24dd83e2366b9f0d2bd12f1 280w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=560&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=cd0a0b63720d089c798feb542173f0dd 560w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=840&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=5de3469e14ce7d0b305214e5a9a4d18d 840w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=1100&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=720626f4057178836ffea446bd82bbe2 1100w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=1650&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=b8afd4a729157ce8127182f71c234150 1650w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=2500&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=917a299d715b7990c84205c2bf8c64c2 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-acul-js-sdk-1-7-0-docs/XQuhlrIKC-3VZAZm/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?fit=max&auto=format&n=XQuhlrIKC-3VZAZm&q=85&s=c8f93833a704676340ee88e237bf1bb1" 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-acul-js-sdk-1-7-0-docs/XQuhlrIKC-3VZAZm/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=280&fit=max&auto=format&n=XQuhlrIKC-3VZAZm&q=85&s=a203e9dc514b753a6134a73b0d997347 280w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/XQuhlrIKC-3VZAZm/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=560&fit=max&auto=format&n=XQuhlrIKC-3VZAZm&q=85&s=c38859dc07e98457ca2b00c41067a51f 560w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/XQuhlrIKC-3VZAZm/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=840&fit=max&auto=format&n=XQuhlrIKC-3VZAZm&q=85&s=7e5eff36b44eb9c63a943e18335cc06d 840w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/XQuhlrIKC-3VZAZm/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=1100&fit=max&auto=format&n=XQuhlrIKC-3VZAZm&q=85&s=a7f204f2e9aba18a1dcb959bdf615a10 1100w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/XQuhlrIKC-3VZAZm/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=1650&fit=max&auto=format&n=XQuhlrIKC-3VZAZm&q=85&s=e0abbaf8bc7a1d7faa5d0b2215e345ed 1650w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/XQuhlrIKC-3VZAZm/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=2500&fit=max&auto=format&n=XQuhlrIKC-3VZAZm&q=85&s=f963c74ebbb758babd3dc8534919ce90 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-acul-js-sdk-1-7-0-docs/3oGMpKyqHph8tSxl/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?fit=max&auto=format&n=3oGMpKyqHph8tSxl&q=85&s=1997825e1ec28e3b02a841a543dc91f5" 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-acul-js-sdk-1-7-0-docs/3oGMpKyqHph8tSxl/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=280&fit=max&auto=format&n=3oGMpKyqHph8tSxl&q=85&s=42c2be5e88cfd52a42dd1b4d38875683 280w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/3oGMpKyqHph8tSxl/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=560&fit=max&auto=format&n=3oGMpKyqHph8tSxl&q=85&s=0bfadb641d53cf976aadf8988dc5d523 560w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/3oGMpKyqHph8tSxl/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=840&fit=max&auto=format&n=3oGMpKyqHph8tSxl&q=85&s=c7d10aa7d55c668b6235601a53a9f2a5 840w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/3oGMpKyqHph8tSxl/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=1100&fit=max&auto=format&n=3oGMpKyqHph8tSxl&q=85&s=96afd8c47d6a616dc000e3c32cb541bc 1100w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/3oGMpKyqHph8tSxl/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=1650&fit=max&auto=format&n=3oGMpKyqHph8tSxl&q=85&s=72927fe97d2d1459b3fdd5c98541cf66 1650w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/3oGMpKyqHph8tSxl/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=2500&fit=max&auto=format&n=3oGMpKyqHph8tSxl&q=85&s=e7e8ff0f623a5aafcc421d5e53e2a059 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-acul-js-sdk-1-7-0-docs/XQuhlrIKC-3VZAZm/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?fit=max&auto=format&n=XQuhlrIKC-3VZAZm&q=85&s=f8e07ddd73d3db146695d39e37b89efa" 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-acul-js-sdk-1-7-0-docs/XQuhlrIKC-3VZAZm/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=280&fit=max&auto=format&n=XQuhlrIKC-3VZAZm&q=85&s=115661ee921e290f80d1eef5abfeae1e 280w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/XQuhlrIKC-3VZAZm/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=560&fit=max&auto=format&n=XQuhlrIKC-3VZAZm&q=85&s=bca877ca286cbe54e2a134fdbd60c195 560w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/XQuhlrIKC-3VZAZm/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=840&fit=max&auto=format&n=XQuhlrIKC-3VZAZm&q=85&s=c50b95bdd27dec053591f9efec6b821b 840w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/XQuhlrIKC-3VZAZm/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=1100&fit=max&auto=format&n=XQuhlrIKC-3VZAZm&q=85&s=104fb9f0750a4151163889cdea6cc13b 1100w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/XQuhlrIKC-3VZAZm/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=1650&fit=max&auto=format&n=XQuhlrIKC-3VZAZm&q=85&s=1cc964bed275a7299f5d8725c211c2cb 1650w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/XQuhlrIKC-3VZAZm/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=2500&fit=max&auto=format&n=XQuhlrIKC-3VZAZm&q=85&s=ac741e7fc3be980e29447fbc02c4debd 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-acul-js-sdk-1-7-0-docs/oljSqUkY2AUuVAWT/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?fit=max&auto=format&n=oljSqUkY2AUuVAWT&q=85&s=fe77f6de6b7f886fbcb1047153473c35" 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-acul-js-sdk-1-7-0-docs/oljSqUkY2AUuVAWT/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=280&fit=max&auto=format&n=oljSqUkY2AUuVAWT&q=85&s=5984273ccbe20936b040f2d02c989b55 280w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/oljSqUkY2AUuVAWT/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=560&fit=max&auto=format&n=oljSqUkY2AUuVAWT&q=85&s=668481ad5c632392ef88f8b39819fdb9 560w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/oljSqUkY2AUuVAWT/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=840&fit=max&auto=format&n=oljSqUkY2AUuVAWT&q=85&s=002199f2f6b150702f50bb3d8e0c04b2 840w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/oljSqUkY2AUuVAWT/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=1100&fit=max&auto=format&n=oljSqUkY2AUuVAWT&q=85&s=add3c9c0fe3dfb884fe1053ed7ce3aa2 1100w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/oljSqUkY2AUuVAWT/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=1650&fit=max&auto=format&n=oljSqUkY2AUuVAWT&q=85&s=dd917f5f4384335fb09bf0539ca84c62 1650w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/oljSqUkY2AUuVAWT/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=2500&fit=max&auto=format&n=oljSqUkY2AUuVAWT&q=85&s=0dd5cae7e426ff4930e1d73cf5cc7142 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-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=8e1a38374986bf2be95fac7653f3fda6" 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-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=280&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=9ad846643889125680bc6dffb4846d8c 280w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=560&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=43f0e0ac318345f7fd414a58531e7ab3 560w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=840&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=cbd10e3b90af92d4126e9b0d167f9e02 840w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=1100&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=6ed67f924ae959647cdb4f65ce4bb0c4 1100w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=1650&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=827072aaae539cc6190d5d42367e51e3 1650w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=2500&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=bfc99b8e992a233dff804e05ea93757e 2500w" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=81c0e9f4f936a2e0079c7c3053016428" 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-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=280&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=b4610ad021de12ecc29bf202fc153dfe 280w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=560&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=3a0e116be4796634e06fa4b2eafcc269 560w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=840&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=c92fb883e3b6d8c19b18b65394641b36 840w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=1100&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=62f5196c090592e7949381f33f71e9c8 1100w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=1650&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=f9da888881c42f7c221b7e6fcb602265 1650w, https://mintcdn.com/docs-dev-feat-acul-js-sdk-1-7-0-docs/nZ9_aKfwdq1VQnO5/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=2500&fit=max&auto=format&n=nZ9_aKfwdq1VQnO5&q=85&s=c9c97482a91a8f428bd8dfc723332ec6 2500w" />
</Frame>
