> ## Documentation Index
> Fetch the complete documentation index at: https://docs-staging-feat-docs-5612-expanded-grant-support-ea.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-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=75a6c36d34c8e75231b520a473dbd7bc" 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-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=280&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=be228929b9ba1d19304e9c3e21e9d83a 280w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=560&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=2dc1e8f18265561c65417b52d3da3c09 560w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=840&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=ba243b7b30885f85f3f35120434d131b 840w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=1100&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=c38ac67873bf683bd5d0af782c8fb0ec 1100w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=1650&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=ac3456351e84d8fbe601f5698a988874 1650w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/3B8DRhXO2wGqeqSFb8KbQv/0a61cdbbb7f1d290950a2ddb9857aac3/Contex-variable.png?w=2500&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=dd433bcfbde5d48539b0605d5b1b515b 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-docs-5612-expanded-grant-support-ea/2N1i-wBTudjTqOBd/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?fit=max&auto=format&n=2N1i-wBTudjTqOBd&q=85&s=1470a65fafa34b2ceafb04f3597402ca" 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-docs-5612-expanded-grant-support-ea/2N1i-wBTudjTqOBd/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=280&fit=max&auto=format&n=2N1i-wBTudjTqOBd&q=85&s=832da5be890c7d7478b0d4012471468f 280w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/2N1i-wBTudjTqOBd/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=560&fit=max&auto=format&n=2N1i-wBTudjTqOBd&q=85&s=92ea0e64b53dec9bda8d5855b6b488f3 560w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/2N1i-wBTudjTqOBd/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=840&fit=max&auto=format&n=2N1i-wBTudjTqOBd&q=85&s=bead0fa6fc1e17631f54ad57214e3e9d 840w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/2N1i-wBTudjTqOBd/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=1100&fit=max&auto=format&n=2N1i-wBTudjTqOBd&q=85&s=9ae82db3282943d935232ae83258b896 1100w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/2N1i-wBTudjTqOBd/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=1650&fit=max&auto=format&n=2N1i-wBTudjTqOBd&q=85&s=e1b45854267342267d028a13f3f59766 1650w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/2N1i-wBTudjTqOBd/docs/images/cdy7uua7fh8z/4D42A6ww4XvFxweoxh04Rd/016c2ed9d25bc2267ed3ed31bf8b2bf6/form-fields-variable.png?w=2500&fit=max&auto=format&n=2N1i-wBTudjTqOBd&q=85&s=1bf26e68cabe29bf7d2f0db664e0bd3c 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-docs-5612-expanded-grant-support-ea/9hfF-AyYi6DR5vLX/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?fit=max&auto=format&n=9hfF-AyYi6DR5vLX&q=85&s=26ba595375bd5fbf5739a05f748031d3" 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-docs-5612-expanded-grant-support-ea/9hfF-AyYi6DR5vLX/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=280&fit=max&auto=format&n=9hfF-AyYi6DR5vLX&q=85&s=5d58e56acf0b997b1c5a9ccc0048619b 280w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/9hfF-AyYi6DR5vLX/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=560&fit=max&auto=format&n=9hfF-AyYi6DR5vLX&q=85&s=a2e79e99c0a9612e97cc6d4671506434 560w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/9hfF-AyYi6DR5vLX/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=840&fit=max&auto=format&n=9hfF-AyYi6DR5vLX&q=85&s=220103d852f0a7376337c31d54108c82 840w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/9hfF-AyYi6DR5vLX/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=1100&fit=max&auto=format&n=9hfF-AyYi6DR5vLX&q=85&s=625d39b21613748966673b9ac9ad67f6 1100w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/9hfF-AyYi6DR5vLX/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=1650&fit=max&auto=format&n=9hfF-AyYi6DR5vLX&q=85&s=bd9df42b68de8af840fff1111cb034f9 1650w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/9hfF-AyYi6DR5vLX/docs/images/cdy7uua7fh8z/6jYtEdYqSGXm3DDv0mxQ0o/2d48012629745e07137bf6ba42f4d829/flow-output-variable.png?w=2500&fit=max&auto=format&n=9hfF-AyYi6DR5vLX&q=85&s=2b10c005eab25e6ecd000c966a9cfbb3 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-docs-5612-expanded-grant-support-ea/2N1i-wBTudjTqOBd/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?fit=max&auto=format&n=2N1i-wBTudjTqOBd&q=85&s=67d0bc3be3dbfc7c6f59106b811a02a5" 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-docs-5612-expanded-grant-support-ea/2N1i-wBTudjTqOBd/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=280&fit=max&auto=format&n=2N1i-wBTudjTqOBd&q=85&s=96588876b42e1ed64163ceeca643da85 280w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/2N1i-wBTudjTqOBd/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=560&fit=max&auto=format&n=2N1i-wBTudjTqOBd&q=85&s=0035fc51f2ca58397fe54c6a7a859721 560w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/2N1i-wBTudjTqOBd/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=840&fit=max&auto=format&n=2N1i-wBTudjTqOBd&q=85&s=c190ba645c72c72f5336cad6afc4fdff 840w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/2N1i-wBTudjTqOBd/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=1100&fit=max&auto=format&n=2N1i-wBTudjTqOBd&q=85&s=c1c2d90c31a80fe3b7fe91b748621591 1100w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/2N1i-wBTudjTqOBd/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=1650&fit=max&auto=format&n=2N1i-wBTudjTqOBd&q=85&s=0e8cb255301754a73dd9454e1bbfc03c 1650w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/2N1i-wBTudjTqOBd/docs/images/cdy7uua7fh8z/4571ExRTHL0KZKJKX9pNwj/abb631b8608a6356b0e5b3784cf8b02f/flow-shared-variable.png?w=2500&fit=max&auto=format&n=2N1i-wBTudjTqOBd&q=85&s=374910d646b59b1feb07eb7776792cb2 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-docs-5612-expanded-grant-support-ea/xVUgBmlPWQs-srLo/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?fit=max&auto=format&n=xVUgBmlPWQs-srLo&q=85&s=dd35b89f829760ab7bc7eb3d2b6c8071" 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-docs-5612-expanded-grant-support-ea/xVUgBmlPWQs-srLo/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=280&fit=max&auto=format&n=xVUgBmlPWQs-srLo&q=85&s=b6151df664ace29b7d29939e69ef2c87 280w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/xVUgBmlPWQs-srLo/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=560&fit=max&auto=format&n=xVUgBmlPWQs-srLo&q=85&s=01a038c1c79ba0f41755b9850a5a699a 560w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/xVUgBmlPWQs-srLo/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=840&fit=max&auto=format&n=xVUgBmlPWQs-srLo&q=85&s=fd3f44ab9f9fa476c57772b13e2b423e 840w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/xVUgBmlPWQs-srLo/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=1100&fit=max&auto=format&n=xVUgBmlPWQs-srLo&q=85&s=c9ec9ab714dc3d9b00287e78756afa51 1100w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/xVUgBmlPWQs-srLo/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=1650&fit=max&auto=format&n=xVUgBmlPWQs-srLo&q=85&s=d7b4f246450a832184f499aabb681ca7 1650w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/xVUgBmlPWQs-srLo/docs/images/cdy7uua7fh8z/1gyox33XJEtdkT43NppblT/0e878cc5ae2bde11b4207e105bbac6c5/flow-helper-functions.png?w=2500&fit=max&auto=format&n=xVUgBmlPWQs-srLo&q=85&s=b03e0dc2eb7437424ac220924fd48f5f 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-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=faa6083815002dc1569e40b29ceb03be" 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-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=280&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=307f67dc6e9943041966ed7db39f0959 280w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=560&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=644ce06940292ff88d048f7f589c180a 560w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=840&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=3f29159a2a7475ac6624eb457f27b8af 840w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=1100&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=4a2aff876e3f08bf2a7a6a685c77c1ec 1100w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=1650&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=46609f02f7b59c351867517417d839c3 1650w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/3SKnDuaMzSImxZtDDAoZaz/9ea800fad29ef71d1ded3c72b87660a4/Autocomplete-flows.png?w=2500&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=00bac9b8cec73348f9e556d3354ef734 2500w" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=709037b035ebea6d6e1196d17c30fde4" 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-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=280&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=4f742fb9d2760eaf3ecd53870ef167d5 280w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=560&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=051a0a3e60568aaf35f9e8ab84a9ea47 560w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=840&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=aef4c098ac2bab0dbbcc7b699d76777e 840w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=1100&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=d40ab58b367550d979c52414af0745e4 1100w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=1650&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=0be10bc4fe9bbc1cdab57ae6a894aab4 1650w, https://mintcdn.com/docs-staging-feat-docs-5612-expanded-grant-support-ea/fOyWaRq4jbbrpajC/docs/images/cdy7uua7fh8z/2kjRKozVgrd2a7UJXOANaN/ee5452d7210cd2f13b0e97763f11c82a/Autocomplete-forms.png?w=2500&fit=max&auto=format&n=fOyWaRq4jbbrpajC&q=85&s=8657df3da859ee023ee7cf3c03cf41d5 2500w" />
</Frame>
