Prerequisites
- The Four Map Data To Options — Set a destination or the value is unusable
Capture Context with Hidden Fields
Record what you know without asking for it
A hidden field carries a value the person filling in the form never sees and never enters. You use it to record something you already know, or something the form can work out.
The classic case is campaign tracking. If the same form is reachable from an email, a social post and a page on your website, a hidden field tells you which one each submission came through — without adding a question nobody wants to answer.
Every question you can answer this way is a question you do not have to ask, and shorter forms get completed more often.
Before You Begin
Steps
Add a hidden field
In the form builder, find Hidden in the left panel and add it. It appears on the canvas for you to configure, but it will not be visible to anyone filling in the form.
Give it a label and a merge tag
The Label is for you — it names the field in the builder and in completions. Make it descriptive: Campaign Source, not Hidden 1.
The Merge Tag lets you refer to this value elsewhere, such as in a follow-up message.
Choose where its value comes from
Value Source offers three options.
Static Value — a fixed value you type in. Use this when the form itself identifies the context, for example a form that only exists on one landing page.
Value from URL Parameter — read from the form's web address. Give it the parameter name and the field picks up whatever that parameter holds when someone opens the form. This is how campaign tracking works.
Value from Calculated Field — take the result of a calculated field on the same form.
Map it, or it goes nowhere useful
Set Map Data To like any other field.
For anything you want to filter or segment on — campaign, source, route — choose CRM Field and pick a custom field. That is what lets you later build a list of everyone who came from a particular campaign.
Leave it unmapped and the value sits with the completion only.
Build your links
If you used a URL parameter, add it to the links you share. Append it to the form's address with ? for the first parameter and & for any after it.
Use one consistent value per channel so your lists stay clean — spring-email every time, not spring email in one place and Spring_Email in another.
Test with a real link
Open the form using a link that carries your parameter, submit it, and check the value arrived — on the contact if you mapped it, or in the completion if you did not.
Then open the form without the parameter and submit again. The field will be empty, which is correct. Decide whether an empty value is acceptable or whether you need a static fallback.
Five worked examples
Add a hidden field called Campaign Source, set Value Source to URL parameter, and name the parameter — utm_source is the usual convention.
Map it to a custom field. Then share …/your-form?utm_source=spring-email from your email, ?utm_source=linkedin from social, and so on.
You can now segment every contact by where they came from, and see which channel produces leads worth having rather than just the most of them.
If you embed the same form on several pages, give each embed a different parameter value — ?page=pricing, ?page=about.
Map it to a custom field. A form on your pricing page and the same form on your blog represent quite different intent, and this is the only way to tell them apart afterwards.
Add a hidden field called Enquiry Type with no value source set, then use conditional logic to fill it.
On the hidden field, add a rule whose condition is Service required Is Filled, with the action Set Value writing service-enquiry. Add a second rule for a different path writing a different value.
Map it to a custom field. You now have a clean, filterable record of which branch each person went down, derived from their answers rather than asked about.
Give each person a link with their own parameter value — ?ref=sarah, ?ref=tom.
Map it to a custom field. Useful for events and referral programmes, where you need to know who brought somebody in but cannot ask the person to remember.
For a form that only exists in one place, use Static Value instead of a URL parameter — set it to trade-show-2026 or similar.
No link building needed, and every submission is stamped with where it came from. The simplest of the five, and often the most useful.
Warning: Never put anything sensitive in a URL parameter. It is visible in the address bar, kept in browser history, and recorded in the logs of anything that serves the page. Hidden means hidden from the form, not hidden from the person using it — anyone can read the address and inspect the page.
Tip: Hidden fields should never be marked required. A required field with no value blocks submission, and because the field is invisible nobody can see what is wrong — they click submit and nothing happens.
Result
Every submission now carries context nobody had to type. If you mapped the fields, you can filter and segment on it; if you did not, it is in the completion for reference.
Check a few real submissions before relying on it. Hidden fields fail quietly, because there is nothing on screen to show whether they worked.