> For the complete documentation index, see [llms.txt](https://docs.informationhub.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.informationhub.io/project/forms/question-types.md).

# Question Types

Each question on a form corresponds to a column in the linked table. When someone submits the form, their answer is stored in that column. The available question types cover the most common data formats used in field research and data collection.

## Text types

### Short (single-line text)

A single-line text input. Use this for short answers such as names, codes, or brief notes. You can set minimum and maximum character counts, and minimum and maximum word counts, in the question's expanded configuration panel.

### Paragraph (multi-line text)

A multi-line text area for longer responses - notes, descriptions, or observations that need more space than a single line. You can set a maximum character count.

### JSON

A text area that accepts JSON-formatted data. The input is validated against JSON syntax before the form can be submitted. Use this when you need to collect structured or nested data in a single field.

## Numeric types

### Number

A numeric input field. Accepts integers or decimal values. You can set minimum and maximum values in the question properties to restrict the range of accepted answers.

## Choice types

### Dropdown

A selection field where the person picks one option from a predefined list. Options are managed in the form builder. If you enable **Allow new items**, respondents can also type a custom value that is not in the list.

### Multi-Radio

A radio button list where the respondent chooses exactly one option. Use this when you want the choices to be visible all at once rather than hidden in a dropdown.

### Multi-Checkbox

A checkbox list where the respondent can select any number of options. Use this for "select all that apply" questions.

### Yes / No

A simple boolean toggle. Use this for true/false or yes/no questions - for example, "Was the specimen collected?"

## Date and time types

### Date

A date picker. The respondent selects a date from a calendar. Useful for recording observation dates, collection dates, or deadlines.

### Time

A time picker. The respondent selects a time of day. Useful when you need to record when an event occurred.

## Location type

### Location

Captures GPS coordinates (latitude and longitude). When filling in a Location question:

* An **interactive map** is displayed - tap or click anywhere on the map to place a marker. The latitude and longitude fields update automatically.
* Click **Use Current Position** to use the device's GPS to place the marker at your current location.
* Toggle **Edit coordinates** to switch to manual entry mode, where you can type the latitude and longitude values directly.

On mobile, Location questions can also be presented as an icon button that opens a full-screen location modal. Click **Done** to confirm the coordinates, or **Close** to cancel.

A Location question links to a single column in the table. The stored value is a comma-separated `latitude,longitude` string (e.g. `62.0355,129.6753`). To store latitude and longitude separately, use two **Number** questions instead.

## Media and file types

### File Upload

A file upload field. Respondents can attach images, videos, audio recordings, or general files. Uploaded files are stored in your project's **Storage** - make sure your project has storage configured before using this question type.

When filling in a File Upload question, the following buttons appear:

| Button      | What it does                                             |
| ----------- | -------------------------------------------------------- |
| File icon   | Opens the device's native file picker to select any file |
| Camera icon | Opens the device camera to take a photo                  |
| Video icon  | Opens a video recording modal                            |
| Mic icon    | Records an audio clip using the device microphone        |
| "more"      | Opens the general upload modal with all options          |

After a file is uploaded:

* Each uploaded file appears in the list with a clickable link or thumbnail. Clicking it opens the file in a new tab.
* An **external link** icon opens the file in a new tab when you are online.
* A **trash** icon removes that specific file from the upload.
* The **Clear** button (danger) removes all uploaded files for the question at once.

In the form builder, File Upload questions have a **File Path** configuration (visible when creating the linked column). This sets where uploaded files are stored in your project's Storage. You can use dynamic path templates to organise files automatically - see [Super: Programmatic Access](/tutorial/super.md) for details.

### QR Code

Opens the device camera to scan a QR code or barcode. The scanned value is stored as text in the linked column. The camera preview opens automatically and reads codes without requiring a button press.

QR Code questions are useful for:

* Tracking plant or sample specimens tagged with QR code labels
* Scanning equipment serial numbers
* Recording batch or lot codes in field data collection

{% hint style="info" %}
QR Code questions require camera permission on the device. The code is read automatically when the camera detects it - no shutter button is needed.
{% endhint %}

## Auto-filled types

### User Info

Automatically fills in details about the logged-in user (such as their name or user ID). Respondents cannot edit this field - it is filled in by the platform. Use it to record who submitted each response.

### Device Info

Automatically fills in metadata about the device being used (such as device type or browser). Respondents cannot edit this field. Useful for audit trails and diagnosing submission issues.

## Display types

### Markdown

A display-only content block - not a question and not stored in the table. Use it to add instructions, headings, or formatted text between questions. Supports standard Markdown formatting.

## Lookup type

### Lookup

Lets the respondent search for and select a record from another table in your project. There are two modes:

* **Search mode** - a type-ahead search field opens. The respondent starts typing and matching records from the linked table appear. Click a result to select it.
* **Direct entry mode** - the respondent types the exact primary key value of the record they want to link.

When setting up a Lookup question in the form builder, you choose which table to look up from, which column holds the stored value (the key), and which column is displayed to the respondent.

## Structured data types

### Tabular

Lets the respondent enter multiple rows of structured data - like a small table within the form. Each row has a set of column inputs defined in the form builder. Use **Add Row** to add more rows and **Remove** to delete a row.

Tabular columns support **Dropdown** type inputs, so individual cells within a tabular question can present a predefined choice list to the respondent.

***

## Question properties

Every question has a set of properties that control how it behaves. These are set in the form builder when editing a question.

### Required

Makes the question mandatory. The form cannot be submitted without a valid answer to a required question. Required fields are marked with a visual indicator when the form is filled in.

### Hidden

Hides the question from the person filling in the form. The question is not visible, but it is still part of the form and its value is still submitted. Use Hidden questions for:

* **Metadata fields** you want to collect automatically without prompting the respondent - for example, a default value set to today's date, or a fixed site identifier.
* **URL-prefilled values** - combine Hidden with a **URL Query Param Key** so the field is silently populated from the link the respondent opened (e.g. `?site=plot-42`).
* **Locked auto-values** - combine Hidden with **Locked** and a **Default value** to create a fully automated field the respondent never sees or changes.

{% hint style="warning" %}
Hidden fields are hidden in the form UI, but their values are still part of every submission. Do not use Hidden to store sensitive information you do not want in your table.
{% endhint %}

### Locked

Prevents respondents from changing the pre-filled value. A locked question is visible but not editable. Use it when you want to display a value (such as the observer's name) without letting the respondent modify it.

### Expanded configuration panel

Click the **cog icon** on a question card to open its expanded configuration panel:

* **URL Query Param Key** - if you enter a key here, the field is pre-filled automatically when the form URL includes a matching query parameter. For example, if you set the key to `site`, then opening the form at `.../form/abc?site=Site+Alpha` will pre-fill this question with `Site Alpha`. Works with both visible and Hidden questions.
* **Default value** - a value pre-filled when the form loads. The respondent can change it unless the question is also Locked.
* **Icon Type** / **Icon Text** - only relevant when using the Icons and Text form layout.


---

# 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.informationhub.io/project/forms/question-types.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.
