> ## Documentation Index
> Fetch the complete documentation index at: https://filla.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Prefilling fields via URL

> Pass field values in your form URL to pre-populate fields before respondents interact with them.

## What URL prefilling does

You can pass field values as query parameters in your form URL. When the form loads, those values are automatically filled into the corresponding fields. Respondents can still change the values unless the fields are set to read-only.

This is useful for:

* Personalizing forms sent to known contacts (pre-fill their name and email)
* Tracking which campaign or source a respondent came from
* Pre-selecting a product, plan, or option based on where the respondent came from
* Passing internal IDs from your system into the form

## URL format

Add query parameters to your form URL using the `prefill_` prefix followed by the **Airtable field name** (exactly as it appears in your base):

```
https://app.filla.io/forms/{formId}?prefill_Name=Jane+Smith&prefill_Email=jane@example.com
```

Filla reads the `prefill_*` parameters from the URL, strips the `prefill_` prefix, and looks up a field in the connected table whose **name** matches the remainder. The matched fields are pre-populated when the form loads.

<Warning>
  **Only field names work, not field IDs.** `prefill_fldXXXXXXXXXXXXXX=value` will be silently ignored. Always use the human-readable field name from your Airtable table — for example `prefill_Email`, not `prefill_fldAbc123Xyz`. If your field name contains spaces, URL-encode them (`prefill_Full+Name=Jane`).
</Warning>

## Pre-fill tab in the Share view

The **Pre-fill** tab in the Share view (accessible from the Share tab in the form editor) provides a ready-to-use Airtable formula for generating per-record edit links:

```
"<formUrl>/" & RECORD_ID()
```

This formula creates a unique URL for each record in your Airtable table. Paste it into a formula field in Airtable to generate edit links for every record.

Click the **Copy formula** button to copy the formula to your clipboard.

## Supported field types for prefilling

| Field type                  | Notes                                           |
| --------------------------- | ----------------------------------------------- |
| Single line text            | Value used as-is                                |
| Multiline text              | Value used as-is                                |
| Email                       | Value used as-is                                |
| URL                         | Value used as-is                                |
| Number / Currency / Percent | Pass a numeric value                            |
| Single select               | Pass the exact option name (case-sensitive)     |
| Date                        | Pass in `YYYY-MM-DD` format                     |
| Checkbox                    | Pass `true` or `false`                          |
| Linked record               | Pass the Airtable record ID (starts with `rec`) |

## Example

Pre-fill a contact form with a name and email from a CRM link:

```
https://app.filla.io/forms/frmXyz?prefill_Name=Jane+Smith&prefill_Email=jane@example.com
```

The respondent opens the form and sees their name and email already filled in.

## Prefilling read-only fields

By default, respondents can change pre-filled values. If you want to lock a value so the respondent cannot edit it (for example, an internal tracking ID, a plan tier, or a referral source):

1. Open the field in the form editor
2. In the right-side panel, enable **Read-only**
3. Share the form with the value in the URL: `?prefill_<FieldName>=value`

That's it. A read-only field picks up its value from the URL parameter directly — no special syntax, no default value configuration required. The URL prefill writes into the field, the read-only toggle prevents the respondent from changing it.

<Note>
  You do **not** need to set a Default value of `{{prefill_FieldName}}` or similar — that syntax doesn't exist. URL parameters are already read straight into the field. Default values are a separate mechanism for filling fields when no URL parameter is present (see [Default values and prefilling](/docs/field-settings/default-values-and-prefilling)).
</Note>

### Auto-stamping today's date (no URL required)

For Date and Date Time fields, you don't need a URL parameter to lock in today's date. Enable **Auto-fill today's date** on the field, then enable **Read-only** — the field stamps the current date automatically the moment the form loads, and the respondent can't change it. See [Date fields](/docs/fields/date-fields#auto-fill-today-39-s-date) for the full pattern.

## Conflict with default values

If both a URL parameter and a field's **Default value** setting are provided for the same field, the URL parameter takes precedence.

## Common questions

<AccordionGroup>
  <Accordion title="Are URL parameters visible to respondents?">
    Yes. Query parameters are visible in the browser address bar. Do not pass sensitive data (passwords, private tokens) via URL parameters.
  </Accordion>

  <Accordion title="Can I pre-fill a select field with a value that doesn't exist in the list?">
    If the value doesn't match an existing option, the field stays empty. The value must exactly match an existing option name.
  </Accordion>

  <Accordion title="Can I use the field ID (like `fldAbc123`) in the URL instead of the field name?">
    No. Prefill only works with field names — `prefill_fldAbc123=value` will be ignored. Use the field name as it appears in Airtable, e.g. `prefill_Email=jane@example.com`. This is intentional: field names are stable per-form and readable in the URL, and field IDs change if you duplicate a base.
  </Accordion>

  <Accordion title="Can I use URL parameters with embedded forms?">
    Yes. Append the query parameters to the form URL when building your embed code's `src` attribute.
  </Accordion>

  <Accordion title="How do I encode spaces and special characters?">
    Use standard URL encoding. Spaces can be written as `+` or `%20`. Other special characters should be percent-encoded (`@` = `%40`, `#` = `%23`, etc.).
  </Accordion>

  <Accordion title="Do I need to reference the URL parameter in the field's Default value?">
    No. URL parameters are read directly into the field — you don't need to set a Default value like `{{prefill_FieldName}}` to make it work (that syntax isn't supported). Just share a link containing `?prefill_FieldName=value` and the field will be populated. Default values are only used when no URL parameter is present.
  </Accordion>

  <Accordion title="Can I lock a prefilled value so respondents can't change it?">
    Yes. Enable **Read-only** on the field in the form editor, then pass the value via `?prefill_FieldName=value`. The respondent sees the value but can't edit it.
  </Accordion>
</AccordionGroup>
