What this lets you do
You can pass values into an Uplup form (or quiz) from the URL itself. When a participant lands on your form with query parameters in the URL, Uplup will pre-fill the matching fields automatically. The most common use case is sending email-list subscribers (Kit, Klaviyo, Mailchimp, etc.) to a quiz without making them re-type the email and name you already have on file.
The basic syntax
Append the values you want to inject to the form’s URL as standard query parameters:
https://uplup.com/p/your-form-id?email=ada@example.com&first_name=Ada&last_name=Lovelace&phone=%2B14155550100
Anything after the ? is treated as a list of key=value pairs separated by &. Special characters in the value need to be URL-encoded (%40 for @, %2B for +, %20 for a space). Most email tools do this for you when you insert a merge tag.
Which keys are recognised
Uplup matches URL keys to your form fields with two rules, applied in order. The first match wins per field.
1. Exact match on the field’s name
If a URL key matches the field name you set in the builder, that value is placed into the field. Matching is case-insensitive and tolerant of small variations: First Name, first-name, firstName, and first_name are all the same key. This is the most reliable way to wire a specific URL parameter to a specific field.
2. Type-aware aliases
Even without a name match, the following keys auto-populate by field type:
- Email field:
email - Phone field:
phone,tel,mobile - Full Name field:
first_name+last_name, or a singlename(split on the first space) - Website / URL field:
url,website - Company field:
company,organization,org
Hidden fields
When you want to carry a value through to the submission without showing it to the participant (for example a subscriber_id from Kit, a plan tag from a paid-search campaign, or a referral code), add a Hidden field to your form and set its Field Name to match the URL key.
Hidden fields:
- Render no UI on the form.
- Pick up their value from the URL exclusively.
- Save with the submission like any other field, so they appear in your CSV export, your webhook payload, and your integrations (Kit, Zapier, n8n, etc.).
- Never block the form. Even if a hidden field has no value, the participant can still submit.
UTM parameters and other tracking
You do not need to create a hidden field for UTM parameters. Uplup automatically attaches every URL parameter to the submission as tracking metadata, so utm_source, utm_campaign, utm_medium, fbclid, gclid, and similar values are already saved with the response. Open any submission in your dashboard to see them, or read them off the webhook payload in your integration.
The hidden-field route is for values you want to be first-class form data (for example, you want them in a specific column in the CSV) rather than tracking metadata.
End-to-end example: Kit subscribers landing on a quiz
- In your Kit broadcast or automation, insert a link to your Uplup quiz with merge tags for the values you want pre-filled. Most builders write this as:
https://uplup.com/p/your-quiz-id?email={{ subscriber.email_address }}&first_name={{ subscriber.first_name }}Kit URL-encodes the merge tags automatically.
- Open your form in the Uplup builder. Make sure you have a real Email field and a Full Name field on the quiz.
- If you want to carry the Kit subscriber ID through, add a Hidden field, set its name to
subscriber_id, and add&subscriber_id={{ subscriber.id }}to the URL. - Connect your Kit integration to receive results back. The pre-filled email + name + any hidden fields land in the submission payload, so the round-trip into Kit does not require re-entry.
Notes and limits
- Values are trimmed and capped at 5,000 characters. Longer values are silently truncated.
- Empty values are ignored (the field keeps its declared default).
- Multiple-choice, checkbox, and similar option-based fields are not pre-fillable from a URL string yet. If you need that, let us know what your use case is so we can scope it correctly.
- Pre-fill happens on the participant’s browser at page load. Submissions made by automation that hit the API directly do not run this code path; the API accepts the same values explicitly in the submission body.
Troubleshooting
Nothing pre-fills. Check three things:
- The field’s Field Name in the builder matches the URL key, or one of the type-aware aliases applies.
- The URL is being passed through cleanly. Some link-shortening services strip query parameters.
- The value is properly URL-encoded. An unencoded
@or+in an email or phone number will be parsed as a different character.
The value is there in the URL but the field stays empty. The most common cause is the field type rejecting the value (for example, a phone field with an invalid number). Open the form, paste the URL into the address bar, and check the browser console for any validation hints.
If you are still stuck, send us the URL you are using plus a screenshot of the field’s settings in the builder, and we will look at the exact form.
