Typeform Hidden Fields: the full setup, and when you can skip it
Hidden Fields carry data into a Typeform response. Here is every step to build them right, plus the route that sources each response with nothing to declare.
- Channel
- Organic search
- Referrer
- google.com
- Landing page
- /blog/managed-it-costs
- Typeform
- Quote request
- /blog/managed-it-costs
- /pricing
- typeform.com
Hidden Fields, built right
Five steps, from declaring the keys to mapping them into your CRM. Every entry point tested.
Sources that fill themselves
Connect the account and each response arrives matched to its visit. No keys, no appended links.
The whole visit on the response
Landing page, referrer, first and last visit, and every page read before the form opened.
Hidden Fields with a day job
Record IDs, known contacts, plans and partner codes. Keep them working on those.
Hidden Fields, built right
A Hidden Field is a named slot you declare in the Typeform builder. The respondent never sees it. You fill it by appending a matching query parameter to the form’s URL, and that value comes back in the response.
- Declare the fields. In the builder, open Hidden Fields and add a key per value:
utm_source,utm_medium,utm_campaign,utm_term,utm_content. Keys are case sensitive and must match your parameters exactly. - Capture the values at landing. Read the parameters from the URL on arrival and store them, so they survive the visitor browsing to another page. Session storage lasts the browser session. A cookie lasts longer and covers the visitor who comes back tomorrow.
- Append on every entry point. Every link, button and embed that opens the Typeform needs the stored values appended. Cover every path, because each one carries its own values.
- Test with a live parameter. Open the form through a real tagged URL, submit, and check the response carries the values. Test each entry point separately, since each one works on its own.
- Map them onward. Map each Hidden Field through your Typeform integration or Zapier into your CRM, and repeat that mapping for every new form.
If UTMs are all you need, Typeform’s native UTM setting captures the five standard parameters with no declaration. Switch it on and you are done.
- utm_source
- declared
- utm_medium
- declared
- utm_campaign
- declared
- utm_source
- utm_medium
- cpc
- utm_campaign
- managed-it-sydney
<script async src="https://app.leadsource.co/ft.js" data-site="YOUR_SITE_KEY"></script>
Sources that fill themselves
Lead Source identifies the visitor on your website, then matches the Typeform response back to that person when it arrives. Nothing goes into the form. Nothing changes inside Typeform, and the match holds for forms hosted on typeform.com.
- Install the Lead Source tracking code on your website. One snippet records the visit, the campaign and the pages read.
- Connect your Typeform account in Forms and tick the forms you want. Lead Source handles the webhooks from there.
5-minute install · no card
Every screen of the connect is on the Typeform lead tracking page.
Keep the Hidden Fields you built
Your existing Hidden Fields keep running exactly as you set them up. Lead Source leaves them untouched and records the attribution beside them on the lead. Two systems, zero friction.
The whole visit on the response
A Hidden Field carries a campaign name. The connected record carries the visit around it: the landing page, the referrer, the first and last visit, and the pages viewed before the form opened. Three reads of your pricing page show up as three reads. Very telling.
- Organic, direct and referral responses arrive with a channel.
- A visitor who returns days later keeps the first campaign.
- New Typeforms are covered the moment you tick them.
- /blog/managed-it-costs
- /pricing ×3
- typeform.com
- account_id
- 4821
- plan
- managed-it
- location
- sydney
- partner
- tideway-07
Hidden Fields with a day job
Hidden Fields do more than attribution, and for these jobs they remain the correct answer. None of it overlaps with Lead Source. Use both.
- Pass an internal record ID, so the response comes back already linked to an account.
- Pre-fill a known email or name for a form sent to an existing contact.
- Pass a product, plan or location, so one form serves several contexts.
- Pass a partner or affiliate code you issued yourself.
How do I set up Hidden Fields in Typeform?
Declare a key per value in the builder, store the URL parameters when the visitor lands, and append them to every link, button and embed that opens the form. Test each entry point with a tagged URL, then map the fields onward to your CRM.
What do Typeform Hidden Fields leave blank?
Any visit with no parameters on the URL. That covers organic, direct and referral traffic, often most of it. A visitor who returns after the browser closes arrives as direct, no field carries the pages read first, and every new Typeform needs every step again.
Typeform Hidden Fields questions, answered.
Why are my Hidden Fields coming back empty?
Almost always one of three things: the key in the builder does not exactly match the parameter on the URL, the link opening the form does not carry the parameters, or the visitor browsed to another page before opening the form and the parameters were never stored.
How many Hidden Fields can I add?
Enough for a normal UTM set and then some. The practical limit is URL length and your own patience maintaining them, not a cap in Typeform.
Do Hidden Fields work on embedded forms?
Yes, but the parameters have to be on the embed URL rather than the page URL. This is the single most common place the setup breaks.
Every Typeform response, sourced on arrival.
Connect Typeform to Lead Source and every response arrives with its real source attached. No fields to declare.
Start freeFree to start · no card









