Configure hidden URL parameters in Sayify to pass identity, campaign, account, and product context into forms for routing, integrations, and automation.
Passing Identity & Context
Hidden parameters let you pass useful context into a Sayify form without asking the respondent to type it. Use them for customer IDs, campaign attribution, product areas, account tiers, order IDs, or any other metadata your team already knows.
Sayify captures configured URL parameters at the start of a response session and stores them as hidden_fields. The values are then available in response details, inbox cases, routing rules, webhooks, exports, and integrations.
How It Works
- You configure the parameter names your form should capture.
- You send those values in the public form URL or website widget.
- Sayify stores matching values on the response session as
hidden_fields. - Routing, integrations, and inbox workflows can use those values later.
Example:
https://sayify.pro/i/lead-intake?customer_id=cus_123&utm_source=linkedin&account_tier=pro
If the form is configured to capture customer_id, utm_source, and account_tier, Sayify stores:
{
"customer_id": "cus_123",
"utm_source": "linkedin",
"account_tier": "pro"
}
Configure Hidden Parameters
In the form builder:
- Open your form.
- Go to Hidden URL Parameters.
- Add a URL Parameter Name, such as
customer_id,utm_source,account_tier, orproduct_area. - Optionally set a fallback default value.
- Save the form.
Fallback defaults are useful when you want every response to contain a value, even when the URL does not include that parameter.
| Parameter | Example Value | Use |
|---|---|---|
customer_id |
cus_123 |
Match a response to a CRM/customer record |
utm_source |
linkedin |
Attribute the response to a campaign source |
account_tier |
enterprise |
Route high-value accounts differently |
product_area |
billing |
Send support issues to the right team |
order_id |
ord_789 |
Connect feedback to a purchase |
Pass Values in a Public Link
Append the configured parameters to the form URL:
https://sayify.pro/i/support-intake?customer_id=cus_123&product_area=billing&plan=pro
Only configured hidden parameters are captured as hidden fields. Other URL parameters may be used by Sayify for form behavior, widget context, or prefill identity.
Pass Values Through the Widget
When you embed a Sayify widget, the widget forwards parent page query parameters into the form iframe. That means a page URL like this can feed hidden fields into the embedded form:
https://example.com/pricing?utm_source=google&account_tier=trial
You can also pass values explicitly.
Script Widget
<script
src="https://resource.sayify.pro/cdn/widget.js"
data-form="lead-intake"
data-hidden-fields='{"customer_id":"cus_123","account_tier":"pro"}'>
</script>
JavaScript API
Sayify.init({
form: "lead-intake",
hiddenFields: {
customer_id: "cus_123",
account_tier: "pro",
product_area: "billing"
}
});
Custom Element Widget
<sayify-widget
form="lead-intake"
hidden-fields='{"customer_id":"cus_123","account_tier":"pro"}'>
</sayify-widget>
You can also set hidden fields programmatically:
const widget = document.querySelector("sayify-widget");
widget.setHiddenFields({
customer_id: "cus_123",
product_area: "billing"
});
Use Hidden Parameters for Routing
Hidden parameters can drive live routing. In routing rules, use the hidden variable group:
hidden.utm_source equals linkedin
hidden.account_tier equals enterprise
hidden.product_area equals billing
Examples:
- If
hidden.account_tierisenterprise, route the respondent to demo booking. - If
hidden.product_areaisbilling, ask billing-specific support questions. - If
hidden.utm_sourceislinkedin, ask a campaign-specific qualification question. - If
hidden.planisfree, show self-serve upgrade guidance instead of sales routing.
Use Hidden Parameters in Integrations
Webhook and integration payloads include captured values under hidden_fields:
{
"hidden_fields": {
"customer_id": "cus_123",
"utm_source": "linkedin",
"account_tier": "pro"
}
}
Flattened payloads can expose values like:
hidden_fields__customer_id = cus_123
hidden_fields__utm_source = linkedin
Use these values to:
- update CRM records
- enrich Slack alerts
- send support tickets to the right queue
- map responses back to campaigns
- trigger Zapier or webhook automations
- filter exports and reporting downstream
Identity Prefill vs Hidden Parameters
Sayify also supports identity-style parameters such as email, name, and phone for prefill/contact resolution. Hidden parameters are broader: they are for contextual metadata.
Use identity parameters when you want Sayify to know who the respondent is:
?email=alex@example.com&name=Alex
Use hidden parameters when you want to attach non-visible context:
?customer_id=cus_123&account_tier=enterprise&product_area=billing
Both can be used together.
Common Use Cases
| Use Case | Parameters |
|---|---|
| Campaign attribution | utm_source, utm_medium, utm_campaign, ad_id |
| CRM matching | customer_id, contact_id, company_id |
| Product support | product_area, app_version, workspace_id, plan |
| Sales routing | account_tier, segment, lead_source, region |
| Post-purchase feedback | order_id, sku, store_id, delivery_method |
| Internal workflows | team, department, project_code, owner_id |
Limits and Safety
Sayify sanitizes hidden parameter keys and values before storing them. Still, treat URL parameters as user-visible data because URLs can appear in browser history, analytics tools, and referrer logs.
Good practices:
- Do not pass passwords, secrets, payment details, private tokens, or sensitive health data in URL parameters.
- Prefer stable IDs over long descriptive values.
- Keep parameter names consistent across forms.
- Use fallback defaults only when a missing value should still produce a known category.
- Test with a sample response and confirm the values appear in the response detail or inbox case.