# URL parameters

Formsort forms are able to accept incoming data by passing that data in as URL query parameters. This can be leveraged to:&#x20;

* pre-fill answers to questions in your form; or, &#x20;
* pass data to an application that the user will be [redirected](/redirects-and-endings.md#redirects) to, using [external variables](/response-data-collection-and-management/variable-schema/external-answers.md).

## Setting answers

If your answer schema has a variable `first_name`, you could set a value for `first_name` by appending `?first_name=Olivia` to the URL of the flow. If you're passing multiple answers at once, separate the answers with an ampersand, for example:&#x20;

`?first_name=Olivia&last_name=Gretel`.

For data you'd like available within the flow's answers (such as `utm_source`) but don't correspond to in-form questions, you'll need to create an [external variable](/response-data-collection-and-management/variable-schema/external-answers.md) to capture the incoming value.&#x20;

{% hint style="info" %}
Answers passed with the wrong type, or to non-existent variable names, are ignored when loading the flow.&#x20;

Check the javascript console if you are having problems ingesting answers - a warning will be present if URL parameters don't match known answers, or the value you're providing is invalid.
{% endhint %}

### Setting date answers

Date answers should be passed in `YYYY-MM-DD` format. For example, if you want to pass in the `appointment_date` answer "Apr 25 2023", append `?appointment_date=2023-04-25` to the flow URL.

### Setting array answers

If the answer variable is of array type (for example, an answer labeled **countries** coming from a [select](/adding-questions-and-content/question-reference/select.md) question that allows multiple choices), you can pre-populate by creating a URL like following:

```
?countries[]=US&countries[]=CA
```

The above results in the `countries` answer being set to `["US", "CA"]`.

### Setting object answers

If an answer variable is of object type (for example, an [address](/adding-questions-and-content/question-reference/address.md) question's answer labelled `mailing_address`), you can set parts of that object using a URL like the following:

```
?mailing_address[postal_code]=12571&mailing_address[city]=Brooklyn
```

The above results in the `mailing_address` answer being set to `{ "postal_code": "12571", "city": "Brooklyn" }`.

### Setting a responder UUID&#x20;

{% hint style="info" %}
Setting a responder UUID is not required, since Formsort automatically generates one at the responder's first session.&#x20;
{% endhint %}

If you would like to provide your own UUID to use as an identifier, you can set the [responder UUID](/core-concepts/how-data-works-in-formsort/responder-uuids.md) using a URL like the following:&#x20;

`https://<FLOW-URL>?responderUuid=123e4567-e89b-12d3-a456-426614174000`.

Or, you may provide it within a [POST body](/importing-data/post-body.md):&#x20;

`<input name="responderUuid" value="123e4567-e89b-12d3-a456-426614174000" />`.

Manually setting `responderUuid` is useful for two reasons:&#x20;

* **You already have an identifier generated for a particular user**, like an account UUID or session UUID from your own application. Additionally, any `responderUUID` set in Formsort (manually or automatically) can be passed along with the user when being redirected out of the flow.&#x20;
* **You would like to force-load a session that is tied to a particular responder UUID**. Keep in mind, force-loading a session with the responder UUID will not work if "start each session as a new responder" is enabled in the [variant settings](/form-behavior-settings/variant-settings.md#start-each-session-as-a-new-responder), or if the user session has already been finalized.&#x20;

{% hint style="warning" %}
The `responderUuid` must be a [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) - a 36 character hexadecimal string hyphenated with the pattern`8-4-4-4-12`, for example `123e4567-e89b-12d3-a456-426614174000`.
{% endhint %}

## Privacy

The contents of URLs are visible in the URL bars of browsers, and are often logged by third-party analytics that you might load within Formsort.

To prevent unnecessary answer exposure, we strip the URL of any properly ingested answers when your flow loads.&#x20;

For extra security, you should consider [POSTing data](/importing-data/post-body.md) into the flow instead.&#x20;


---

# Agent Instructions: 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:

```
GET https://docs.formsort.com/importing-data/url-parameters.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
