> For the complete documentation index, see [llms.txt](https://docs.heisenware.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.heisenware.com/app-builder/build-frontend/widgets/input-widgets.md).

# Input widgets

Input widgets capture data from your users and their devices, handling everything from a single signature to a multi-field form. Collected data flows directly into your backend logic for processing, storage, or analysis.

{% hint style="info" %}

#### Widget versatility and categorization

The platform groups widgets by their primary purpose, though many serve multiple roles. For example, a [form](/app-builder/build-frontend/widgets/input-widgets/form.md) (an [input widgets](/app-builder/build-frontend/widgets/input-widgets.md)) can display data, and a [data grid](/app-builder/build-frontend/widgets/display-widgets/data-grid.md) (a [display widgets](/app-builder/build-frontend/widgets/display-widgets.md)) can capture input. Check the properties of each widget to see its full capabilities.
{% endhint %}

## Available input widgets

The toolbar contains the following input widgets, each featuring distinct configuration and data properties:

* [**Barcode / QR**](/app-builder/build-frontend/widgets/input-widgets/barcode-qr.md): Scans and decodes barcode and QR code formats using the device camera.
* [**Upload**](/app-builder/build-frontend/widgets/input-widgets/upload.md): Lets users upload files directly from their device.
* [**Form**](/app-builder/build-frontend/widgets/input-widgets/form.md): Builds complex data-entry layouts with varied field types, field grouping, and validation rules.
* [**Photo**](/app-builder/build-frontend/widgets/input-widgets/photo.md): Captures images using the device camera.
* [**Signature**](/app-builder/build-frontend/widgets/input-widgets/signature.md): Captures handwritten signatures as image strings.

## Data binding

Input widgets exchange data with backend logic using the [Backend Builder](/app-builder/build-backend.md).

### How to link

Link a widget by dragging logic onto it:

1. Drag a [function](/app-builder/build-backend/functions.md) component (input or output) or a [modifier](/app-builder/build-backend/extension-nodes/modifier.md) onto the widget.
2. Select the target widget property inside the configuration menu.

### Interaction types

* **Widget to function input**: The widget transmits user entries into a function input property.
* **Function output or modifier to widget**: A function output or modifier transmits data to update the widget. For example, linking a function output to the `clear` property of a [form](/app-builder/build-frontend/widgets/input-widgets/form.md) resets the form automatically when the flow executes that function.

## Configuration

Widget properties control behavior, appearance, and backend data exchange. Configure properties using two methods:

* **Static configuration**: Define the property inside the settings panel. The value remains fixed.
* **Data binding**: Drive the property from backend logic at runtime to update the widget live as data flows through the App.

{% hint style="info" %}

#### Property configuration methods

Not every property supports both methods. Some properties exist exclusively inside the settings panel, others require data binding, and many support both. Individual widget pages list bindable properties in data binding tables and settings panel fields under configuration.
{% endhint %}

## Automatic data isolation

The platform isolates data for every input widget per user and session automatically.

* **Default isolation**: Data never mixes if different users interact with the same form.
* **Session persistence**: Data remains tied to the specific user session as it moves through a flow.
* **User references**: Reference the active user ID in backend logic using the `$USER` variable. This variable returns the user email address in authenticated Apps or a unique session string in public Apps.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.heisenware.com/app-builder/build-frontend/widgets/input-widgets.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
