# 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](https://docs.formsort.com/redirects-and-endings#redirects) to, using [external variables](https://docs.formsort.com/response-data-collection-and-management/variable-schema/external-answers).

## 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](https://docs.formsort.com/response-data-collection-and-management/variable-schema/external-answers) 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](https://docs.formsort.com/adding-questions-and-content/question-reference/select) 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](https://docs.formsort.com/adding-questions-and-content/question-reference/address) 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](https://docs.formsort.com/core-concepts/how-data-works-in-formsort/responder-uuids) 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](https://docs.formsort.com/importing-data/post-body):&#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](https://docs.formsort.com/form-behavior-settings/variant-settings#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](https://docs.formsort.com/importing-data/post-body) into the flow instead.&#x20;
