---
title: "Prefill values are not appearing"
description: "Why a URL prefill value isn't showing up — parameter names, encodings, field kinds, and initialization order."
group: "Reference"
order: 4
type: "troubleshooting"
parent: "troubleshooting"
keywords:
  - "prefill"
  - "URL parameters"
  - "initialData"
  - "hidden field"
updated: "2026-07-14"
---

Fillo matches prefill values to stable field IDs, not labels. Hidden fields use their configured `paramName` and fall back to the field ID when no parameter name is set.

## Test one field directly

Open the hosted form with one simple parameter:

```text
https://fillo.so/f/your-form?email=person%40example.com
```

Replace `email` with the exact field ID. Parameter names are case-sensitive. URL-encode spaces, plus signs, ampersands, and other reserved characters.

## Use the expected value shape

| Field | URL value |
| --- | --- |
| Text, email, URL, phone, date, hidden | One string |
| Number, rating, linear scale | A valid numeric string |
| Select or dropdown | Option ID |
| Multi-select or checkbox group | Comma-separated option IDs |
| Standalone checkbox | A supported boolean value |

Labels are presentation text and can change. Use option IDs for choice fields.

File upload, ranking, matrix, signature, and custom fields aren't filled from URL parameters. Pass a supported value through application-owned `initialData` when the renderer accepts that field shape, or let the respondent fill it in.

## Check precedence and timing

Explicit application values win over URL prefill. Saved progress and verified update-in-place response data can also restore later in the initialization flow. So if the URL value appears briefly and then changes, look at `initialData`, draft restore, and respondent identity behavior.

With a custom UI, create the form controller after the location parameters are available. If a client-side router changes the query string without remounting or resetting the controller, the existing session doesn't automatically become a new form session.

## Keep hidden attribution honest

Hidden fields are respondent-supplied unless your server verifies them separately. Anyone can edit a campaign, account, or plan parameter in the address bar, so don't use URL prefill as authorization.

## Related

- [Prefill](/docs/prefill): See the complete parser contract and code examples.
- [Prefill from URL parameters](/guides/prefill-from-url): Build and encode a complete share link.
- [Capture UTM attribution](/guides/capture-utm-attribution): Store campaign context in hidden fields.
