# Creating Forms in Baserow - Fields, Branding, and Logic

> Add conditional logic, pre-fill answers via link parameters, and brand the page with a logo - Baserow forms turn any table into a data-collection page.

Source: https://opennix.org/en/docs/baserow/view-types/guide-to-creating-forms-in-baserow/


Form view turns a table into a form that collects data from people outside your workspace: every submission creates a new row, and fields are validated automatically. This article covers creating a form, choosing which fields appear, adding conditional logic, branding the page, and pre-filling fields through link parameters.

## What is form view

Form view builds a web form automatically from a table's fields - there's no need to build one from scratch. When someone submits it, their answers create a new row in the table.

Forms fit customer feedback collection, lead generation, event registration, questionnaire responses, applications and orders, and contact forms - any scenario where outside people need to submit structured data.

## Form view compared to other types

| Feature | Form | Grid | Gallery |
|---|---|---|---|
| Best for | Data collection | Data management | Visual browsing |
| Data entry mode | One record at a time | Bulk editing | Limited |
| Automatic field validation | Yes | Manual | Manual |
| Conditional logic | Yes | No | No |
| Pre-filling via a link | Yes | No | No |
| Branding (logo and cover) | Yes | No | Cover image only |

## Create a form

1. Click the **view dropdown** in the table's upper-left corner.
2. Choose **Form** from the view type options.
3. Enter a **name** for the form.
4. Click **Create view**.

![Creating a form view in Baserow](/images/baserow/view-types/baserow-form-view-create-dialog.webp)

Every compatible table field appears on the form automatically. Incompatible field types (formula, created on, count, UUID, rollup, last modified, lookup) are excluded automatically, since their values are calculated or generated rather than entered by hand.

## Configure form fields

### Add or remove fields

**[Create a new field](/docs/baserow/fields/adding-a-field/):** click **+ Create new field** in the sidebar to add one that doesn't exist in the table yet. It shows up on both the form and the table.

**Add fields:** select fields in the left sidebar to include them on the form. Click **Add all** to include every compatible field at once.

**Remove fields:** click the eye icon next to a field to hide it from the form. Hidden fields don't appear to respondents but stay in the table.

### Configure an individual field

Click any field to open its settings:

- **Field label** - how the field's name shows up on the form, e.g. change "email" to "Your email address";
- **Description** - helper text under the label that guides respondents;
- **Required toggle** - respondents can't submit the form without filling in a required field.

### Field-specific options

**Single and multiple select fields** display as radio buttons (single) or checkboxes (multiple) on the form, and you can pick which options show.

**Link-to-table fields** can be set to single selection (a dropdown) or multiple (a dropdown with a "+" button to add more values).

### Reorder fields

Click and drag fields by the **handle** (⋮⋮) to reorder them directly in the form editor.

## Brand your form

Add visual elements so the form matches your organization's look.

### Header and description

Click the **header area** at the top of the form to add:

- **Title** - the form's main heading;
- **Description** - explanatory text about the form's purpose.

### Logo and cover image

**Logo:** click **Add a logo** and upload an image - it appears in the form's header.

**Cover image:** click **Add a cover image** in the gray area at the top and upload a banner - it appears above the form.

![Form with a logo and cover image](/images/baserow/view-types/baserow-form-view-branding.webp)

Replace or remove either image at any time by clicking it.

### Submit button text

Click the pencil icon next to the submit button to change its text - for example, swap "Submit" for "Register now" or "Send feedback."

## Form conditions (conditional logic)

Show or hide fields based on values entered elsewhere in the form - conditional logic makes the form dynamic, adapting to a respondent's answers.

Conditions are defined much like ordinary [Baserow filters](/docs/baserow/views/filters-in-baserow/): when a condition is met, the fields it targets appear; when it isn't, they stay hidden.

![Configuring form conditions](/images/baserow/view-types/baserow-form-view-conditions.png)

For the syntax behind more complex conditions, see [Advanced filtering](/docs/baserow/views/advanced-filtering/).

## Configure what happens after submission

### A thank-you message

Customize the message shown on the confirmation page - this is the default behavior. Enter your text in the **Show a message** box.

Use `{row_id}` in the message to display the new record's ID - for example: "Thanks! Your submission #{row_id} has been received."

### Redirect to a URL

Send respondents to a specific page after they submit - enter the address in the **Redirect to URL** field. This replaces the default thank-you page.

Include `{row_id}` in the redirect URL to pass the record's ID: `https://example.com/thank-you?id={row_id}`.

## Share your form and preview it

### Send out the form link

Click **Share form** in the toolbar to get a link - send it to anyone outside your workspace, and they can submit the form without a Baserow account.

### Preview before sending it out

Click **Preview** in the toolbar to see the form the way a respondent will - it opens in a new tab. Test every field, condition, and post-submission behavior before sending the form to real users.

## Pre-fill form fields

Pre-fill a form with data using link parameters - handy when part of the answer is already known, like a referral source or a campaign code.

### Basic pre-fill syntax

Add a parameter to the form's link in this format: `?prefill_<field_name>=value`. Spaces in the field name become `+`.

**Example:** pre-fill a name field with `?prefill_Name=John+Smith`.

### Pre-fill several fields at once

Separate pre-filled fields with `&`: `?prefill_Name=John+Smith&prefill_Email=john@example.com`.

### Field-specific pre-fill formats

- **Single select:** the value shown in the dropdown - `?prefill_single+select=Business`;
- **Multiple select:** comma-separated values - `?prefill_multi+select=Marketing,Sales,Support`;
- **Rating:** a number of filled-in stars - `?prefill_rating=4`;
- **Link-to-table:** the value shown in the dropdown - `?prefill_link+row=Engineering`;
- **Date:** a date in the field's own format (YYYY-MM-DD, DD/MM/YYYY, or MM/DD/YYYY) - `?prefill_Start+Date=2024-01-15`.

### Hide fields via a parameter

Hide a specific field with `?hide_<field_name>`. Example: `?hide_Internal+Notes`.

## View form submissions

Submissions automatically create new rows in the table. View them in any table view, though [grid view](/docs/baserow/view-types/guide-to-grid-view/) gives the most complete access to all the data.

New submissions land at the bottom of grid view unless active filters hide them, active sorts move them elsewhere, or the table has a specific row order set. Updates appear instantly, so several team members can watch submissions come in at once.

## Why use form view

Form view bridges your internal database and external data collection. Unlike other view types built for browsing or managing data that already exists, form view focuses entirely on creating new records from outside submissions.

**No manual form building:** the form automatically includes every compatible table field. Add, remove, or reorder fields without starting over.

**Built-in validation:** required fields, field types, and conditional logic keep data quality up - the form only accepts properly formatted values based on your field settings.

**Instant database updates:** submissions immediately create new rows, visible in [grid view](/docs/baserow/view-types/guide-to-grid-view/) and every other view.

## Frequently asked questions

**Which field types work in a form?** Compatible: text, number, rating, boolean, date, URL, email, file, single select, multiple select, phone number, link-to-table, collaborator, duration, password. Incompatible: formula, created on, count, UUID, rollup, last modified, lookup - their values are calculated automatically.

**How do I stop duplicate submissions?** Forms don't block duplicates automatically. Use form conditions to warn respondents, or review submissions manually in grid view.

**Can respondents upload files through a form?** Yes. File fields in the table become file-upload fields on the form, and uploads attach to the row that gets created.

**How do I test a form without creating real data?** Use preview to see the form, but any submission creates a real row. Build a test table for form testing, or manually delete test submissions from your production table afterward.

**How do I pre-fill form fields via a link?** Add a parameter in the format `?prefill_<field_name>=value` to the form's address and send the recipient a personalized link.

**Can a form have more than one button?** No, a Baserow form supports only a single submit button and doesn't let you add extra custom buttons directly. For more complex, multi-action logic, build a separate form or duplicate the existing one.

## What's next

Form view closes the loop on view types: review the responses it collects in [grid view](/docs/baserow/view-types/guide-to-grid-view/) or [gallery view](/docs/baserow/view-types/guide-to-gallery-view/). For a refresher on every view type and when to use each, go back to [Baserow views overview](/docs/baserow/views/overview-of-baserow-views/).

