Logic Based on Hidden Fields
Hidden fields pass values into your form through its URL — UTM tags, campaign IDs, page context, or data you already know about the respondent. Because logic conditions can read hidden fields, one form can serve every campaign with a different path: tagged visitors branch one way, everyone else flows through the default.
What operators hidden fields use
Section titled “What operators hidden fields use”Hidden fields are URL text, so their conditions use the text operators: equals · does not equal · begins with · ends with · contains · does not contain. They combine with other conditions using and/or like any rule.
Worked examples
Section titled “Worked examples”1. Route by channel group
Section titled “1. Route by channel group”Your form is shared on social media and embedded on your B2B site. Tag each link’s utm_source, then branch on the first question:
IF
utm_sourcecontains “instagram” orutm_sourcecontains “tiktok” orutm_sourcecontains “facebook” → jump to the consumer questionsEveryone else → continues into the B2B questions
2. Campaign-specific question blocks
Section titled “2. Campaign-specific question blocks”One form, many campaigns — each tagged with its own utm_campaign:
IF
utm_campaignequals “spring-sale” → jump to the spring-sale interest questionIF
utm_campaignequals “webinar-march” → jump to the webinar feedback question
3. Context-aware flows with the page path
Section titled “3. Context-aware flows with the page path”Pass the page your form was embedded on as a hidden field (for example page=/pricing):
IF
pageends with “/pricing” → skip “What are you looking for?” (they already told you by being on the pricing page)
4. Skip what you already know
Section titled “4. Skip what you already know”When your CRM or email tool builds personalized links — merge tags fill plan, customer_id, or name into the URL — branch on that data instead of re-asking:
IF
planequals “pro” → jump straight to the feedback questions
Untagged visitors: the default path is the feature
Section titled “Untagged visitors: the default path is the feature”There’s no “is empty” operator — and you don’t need one. Respondents whose URL carries no matching tag simply match no rule, so they follow the default question order (or the question’s Always go destination). Design the untagged flow as your “organic” path, and let rules route the tagged traffic around it.
Test with the real URL
Section titled “Test with the real URL”Hidden fields arrive through the URL, so test branches by opening your form link with the parameters appended — for example:
https://share.formware.io/r/your-form?utm_source=instagram
Build tagged links in seconds with the UTM builder.
Where this shines
Section titled “Where this shines”- Attribution-aware funnels — branch and attribute in the same tagged link; hidden fields are also stored with each response. See Hidden Fields.
- Personalized endings — hidden fields can be recalled in your Thank You Page content, so a campaign link can produce a campaign-specific ending: “Thanks for visiting from our spring campaign, {{name}}!” See Recall Information.
- Lead generation — channel-aware paths plus attribution is the core of a measurable funnel. See the lead generation guide.
What operators can I use on hidden fields? The text operators: equals, does not equal, begins with, ends with, contains, does not contain.
Can I branch on whether a hidden field is empty? There’s no empty-check operator — instead, let the default flow serve untagged visitors and add rules for the specific values you do tag. The absence of a rule match is your empty-case handling.
Do hidden fields work on embedded forms? Yes — hidden fields work with embedded forms the same as hosted links.
Can hidden field values be combined with answer-based conditions? Yes — mix sources within a rule using and/or, for example utm_source equals “google-ads” and budget is greater than 5000. See And / Or Conditions.
Do hidden fields appear to respondents? No — they’re invisible in the form. They exist as condition sources, response data, and recallable values.
