Advanced Configuration
Pre-fill responses and pass context in a shareable feedback link with URL parameters
You can pre-fill supported questions by adding response_ query parameters to a generated feedback link. Use this when you already know part of a respondent's answer, want to create personalized links, or want a one-click response from an email or campaign.
For example, this link pre-fills an email question whose slug is email and an NPS question whose slug is nps:
https://form.encatch.com/<shareable-link-id>?response_email=user%40example.com&response_nps=9Prefilling changes the initial values shown in the form. It does not submit the form; the respondent can review or change the answers before submitting.
Treat URL values as visible data
Query parameters can appear in browser history, server logs, analytics tools, and copied links. Do not place secrets, authentication tokens, or data that should not be exposed in a URL.
Parameter format
Use one of these formats:
response_<question-id-or-slug>=<value>
response_<question-id-or-slug>[<member>]=<value>- Start every response parameter with the exact, case-sensitive prefix
response_. - Identify a question using its UUID or a unique question slug. An exact UUID match takes precedence. A duplicated or unknown slug is ignored.
- Supply the raw answer value, not an answer object or JSON document.
- Use repeated parameters for multi-value answers. A comma is treated as part of one value, not as a separator.
- Use bracketed member keys for matrix rows and address fields.
- Apply normal URL percent encoding. No additional JSON, Base64, or custom encoding layer is required.
When generating links in JavaScript, URL and URLSearchParams handle encoding safely:
const link = new URL('https://form.encatch.com/<shareable-link-id>');
link.searchParams.set('response_email', 'user@example.com');
link.searchParams.set('response_nps', '9');
link.searchParams.append('response_features', 'analytics');
link.searchParams.append('response_features', 'exports');
console.log(link.toString());Scalar questions
Scalar questions accept exactly one non-empty value per question.
| Question type | Value format | Example |
|---|---|---|
| Short answer, long text | Plain text within the configured character limit | response_name=Ada |
| Valid email address | response_email=user%40example.com | |
| Website | Valid HTTP or HTTPS URL; the scheme may be omitted | response_site=example.com%2Fdocs |
| Phone number | International format beginning with + | response_phone=%2B919876543210 |
| Number | A number allowed by the question's decimal, negative, minimum, and maximum settings | response_amount=-12.5 |
| Date | YYYY-MM-DD | response_date=2026-09-03 |
| Date with time enabled | YYYY-MM-DDTHH:mm | response_appointment=2026-09-03T14%3A30 |
| Yes/No | Lowercase true or false | response_recommend=true |
| Rating | Integer from 1 through the configured rating count | response_rating=4 |
| NPS | Integer from 0 through 10 | response_nps=9 |
| CSAT | Integer from 1 through the configured scale | response_csat=5 |
| Opinion scale | Integer within the configured start value and number of steps | response_effort=3 |
| Single choice | Configured option ID or value | response_plan=plan-pro-id |
For choice questions, use the option's stored ID or Value, not its visible label. Prefilling an Other option is not supported.
Multi-value and ordered questions
Repeat the same parameter once for every selection:
?response_features=analytics&response_features=exports| Question type | How values are interpreted |
|---|---|
| Multiple choice (multiple) | Each repeated value is one selected option. Order does not matter. |
| Picture choice | Each repeated value is one selected option. The configured single/multiple and maximum-selection rules apply. |
| Ranking | Parameter order is the ranking order. |
| Nested selection | Parameter order is the parent-to-child path, and the path must end at a leaf option. |
Ranking example:
?response_priority=quality&response_priority=speed&response_priority=priceNested-selection example:
?response_location=india&response_location=karnataka&response_location=bengaluruUse an option ID or value for each entry. Duplicate values, unknown options, incomplete nested paths, and values beyond configured selection limits are ignored for that question.
Matrix questions
Use the matrix row ID or value inside brackets. Use a selectable option ID or value on the right side.
Single-choice matrix:
?response_service[mobile]=good&response_service[desktop]=excellentMultiple-choice matrix—repeat the same bracketed row key:
?response_service[mobile]=fast&response_service[mobile]=accessibleRating matrix:
?response_satisfaction[reliability]=scale-very-satisfied-idWhen constructing the URL manually, brackets may be percent-encoded as %5B and %5D. For example, response_service%5Bmobile%5D is equivalent to response_service[mobile].
For the most reliable result, use row, column, and scale-point IDs from the form configuration. Multiple-choice matrix limits are validated per row.
Address questions
Use bracketed address field names. You may pre-fill one or more enabled fields:
?response_shipping[city]=Bengaluru&response_shipping[country]=INSupported member names are:
addressLine1addressLine2citystateProvincepostalCodecountry
Disabled address fields and unknown member names are ignored.
Unsupported question types
URL prefilling is intentionally unavailable for:
- Consent
- Signature
- File upload
- Video, audio, or photo
- Scheduler
- Q&A with AI
Display-only elements such as welcome screens, thank-you screens, message panels, and exit forms cannot have responses.
Validation and invalid values
Each parameter is validated against the published form configuration. An invalid parameter is ignored independently and does not prevent the form from opening or other valid answers from being populated.
Common reasons a value is ignored include:
- The question ID or slug does not exist, or the slug is not unique
- A scalar question appears more than once
- The value is empty or outside the question's configured range
- A choice, row, column, or nested path does not exist
- A bracketed key is malformed or used with the wrong question type
- A question type does not support URL prefilling
Persistence and partial responses
The effective set of valid prefilled responses and context values from en_ctx and context_ define the retained-draft scope:
- Opening the same link parameters restores its saved draft.
- Changing a valid
response_,context_, oren_ctxvalue creates a separate retained-draft scope. - A restored draft takes precedence for questions it already contains; URL values provide defaults for questions not present in that draft.
If partial responses are enabled, merely opening a prefilled link does not trigger a partial-response API request. A partial response becomes eligible only after the effective answer state differs from the initialized state. Final form submission is unchanged.
The response_, context_, and en_ctx parameters are excluded from source tracking. Other URL parameters continue to follow the form's Source Tracking configuration.
Pass context variables
Use context_ query parameters when a form's question or section text contains context variables such as {{ context.customer_name }}. Context values personalize the form but do not create responses or identify the respondent.
Use an untyped parameter for a string, or add a bracketed type when the value must be a boolean or number:
context_<variable-name>=<string-value>
context_<variable-name>[string]=<string-value>
context_<variable-name>[boolean]=true|false
context_<variable-name>[number]=<number-value>For example:
https://form.encatch.com/<shareable-link-id>?context_customer_name=Ada&context_is_trial[boolean]=true&context_invoice_total[number]=1499.50The form can reference these values as:
Hello {{ context.customer_name }}| Parameter | Parsed value | Parsed type |
|---|---|---|
context_customer_name=Ada | Ada | String |
context_customer_id=00123 | 00123 | String |
context_is_trial[boolean]=true | true | Boolean |
context_invoice_total[number]=1499.50 | 1499.5 | Number |
context_campaign[string]=renewal | renewal | String |
Context rules
- The
context_prefix and bracketed type names are case-sensitive. - Omitting the bracketed type always produces a string. Use this for identifiers with leading zeroes.
- Boolean values accept
trueorfalse, ignoring surrounding whitespace and letter case. - Number values must be finite JSON-style numbers. Values such as
01,NaN, andInfinityare ignored; use a string when formatting must be preserved. - Variable names may contain letters, numbers, underscores, periods, and hyphens, and may be up to 100 characters long.
- A link may supply up to 50 valid context variables, with up to 10,000 decoded UTF-8 bytes per value.
- The variable names
__proto__,constructor, andprototypeare not allowed. - Provide each logical variable only once. Repeating a variable, including with different type annotations, causes that variable to be ignored.
- Brackets may be written literally or percent-encoded as
%5Band%5D. - Invalid context parameters are ignored independently, so other valid context values still apply.
You can combine response and context parameters in the same link:
https://form.encatch.com/<shareable-link-id>?context_customer_name=Ada&context_is_trial[boolean]=true&response_nps=9When both en_ctx and context_ provide the same top-level variable, a valid context_ value takes precedence. An invalid context_ value is ignored and does not replace the value from en_ctx.
Valid context values are included in the retained-draft scope. Changing a valid context_ value creates a separate retained draft, just like changing a valid prefilled response or en_ctx.
The shareable page removes context_ parameters from the visible address after reading them and retains them across refreshes in its encoded launch parameter. This reduces casual editing but is not tamper protection or encryption. The original link and its values may still be visible to systems through which it is shared.
The context_ parameters are excluded from source tracking. Arbitrary campaign and tracking parameters remain available to the form's Source Tracking configuration.
Related
Was this page helpful?
