Leadpages UTM tracking with hidden fields TraceLead fills
Add hidden fields to your Leadpages form and TraceLead fills them with where the visitor first came from, including the visits that never carried a UTM tag: search, social posts, referrals and AI assistants. The source arrives in Leadpages and in the integration you send leads to.
No card needed. No lead caps on any plan.
- Leadpages: Tested on every release against the builder's markup
- How we test
Added by TraceLead's hidden fields. The name and email stay in your form.
- Channel
- Paid search
- Source / medium
- google / cpc
- Campaign
- brand-uk
- Click ID
- gclid
Why Leadpages hidden fields miss untagged visits
A Leadpages hidden field holds nothing until something fills it. Copying UTM tags from the address fills it for the ad click that converts straight away, and for nobody else.
The visitor who clicks the ad, leaves and comes back on Thursday arrives with a bare URL. So does everyone from a Google search, a shared post or a link on another site: there was never a tag to copy.
-
Monday
Clicks a Google ad, lands on
/pricing?utm_source=google&utm_medium=cpc&utm_campaign=brand-uk&gclid=…, leaves. -
Thursday
Types your address, opens
/contact, sends the Leadpages form.
| Hidden field | Read from the URL | Filled by TraceLead |
|---|---|---|
| tl_channel | empty | paid_search |
| tl_source | empty | |
| tl_utm_campaign | empty | brand-uk |
| tl_gclid | empty | Cj0KCQjw… |
| tl_landing_page | /contact | /pricing?utm_source=google&utm_medium=cpc |
TraceLead keeps the first visit in a first-party cookie on the page's domain once your banner allows it, and fills the fields on the visit that converts.
How to add UTM tracking to Leadpages
Four steps. The tested fixture renders Leadpages' published form markup on every release.
The full Leadpages guide-
Allow the page's domain
In TraceLead, add the domain your Leadpages page is published on to your site's allowed domains. A subdomain of your main domain shares the first touch with it when the browser allows; a page on a separate domain keeps its own record.
-
Paste the tag in the tracking code
Open Page Settings → Tracking Code and paste the TraceLead tag and your consent call into the Head section. Site-wide code goes in the site's settings the same way.
<script async src="https://app.tracelead.io/snippet/v1/tracelead.js" data-site="tl_YOUR_SITE_ID"></script> -
Add hidden fields to the form widget
In the form widget, choose Add hidden field for each value and name it
tl_plus the field, with no value:tl_channel tl_source tl_medium tl_utm_campaign tl_referrer_host -
Publish and check a lead
Publish, open the page with
?utm_source=test&utm_medium=cpc, accept cookies and send a test entry. Check it in Leads or in the connected integration.
What arrives with each Leadpages lead
Plain values your lead list, email tool or CRM can sort and filter. Visits without tags are classified by the published rules:
- A Google search google / organic / organic_search
- A Facebook post (fbclid only) facebook / social / organic_social
- A link in a ChatGPT answer, with its referrer chatgpt.com / referral / referral
- A typed address or bookmark (direct) / (none) / direct
| Leadpages hidden field | Holds | Example |
|---|---|---|
| tl_channel | The channel the first visit came from | paid_search |
| tl_source | Where it came from | |
| tl_medium | How it came | cpc |
| tl_utm_campaign | The campaign name from your UTM tags | brand-uk |
| tl_referrer_host | The site that sent the visit | chatgpt.com |
| tl_gclid | Google Ads click id, for offline conversion import | Cj0KCQjw… |
| tl_landing_page | The first page seen, sensitive parameters removed | /pricing? |
| tl_first_touch_at | When the first visit happened | 2026-10-05T09:14:02Z |
Attribution without personal data. No names, emails, form values, IP addresses or user agents. Ever.
No privacy workarounds. Nothing before consent, no fingerprinting, no ad-blocker bypass, no cross-site identity.
Made in the UK. GBP pricing, UK consent rules in mind, and a person who answers email.
Questions, answered
Anything else? Email us and a person replies.
How do I add hidden fields in Leadpages?
In the form widget, choose Add hidden field for each value and name it tl_channel, tl_source, tl_utm_campaign and so on, with no value. TraceLead fills them on the published page once the visitor accepts cookies.
Where does the TraceLead tag go in Leadpages?
Open Page Settings → Tracking Code and paste the tag and your consent call into the Head section. For code on every page of a site, add it in the site's settings the same way.
What do visits without UTM tags show as?
They are classified from the click id or the referrer: a Google search is google / organic / organic_search, a Facebook post is facebook / social / organic_social, a link from ChatGPT is usually chatgpt.com / referral / referral, and a typed address is (direct) / (none) / direct.
Is a Facebook click with an fbclid counted as paid social?
Not on its own. Facebook adds fbclid to every outbound link, so a click carrying only fbclid is organic_social. Tag your Meta ads with utm_medium=paid_social (or cpc with a Facebook source) and they arrive as paid_social.
Does a return visit change the lead source?
No. TraceLead keeps the first touch for the lifetime you set, 90 days by default. A direct return from a bookmark never replaces a recorded campaign.
Does TraceLead see the email address on the opt-in form?
No. The snippet writes into the hidden fields and never reads any value in the form. The lead goes to Leadpages as before; TraceLead keeps only a pseudonymous lead record (random ids, the form id and page path, and its channel and campaign) for your dashboard, if lead collection is on.
What if TraceLead is down or blocked?
The form still submits. The hidden fields are empty for that lead; nothing in the Leadpages form waits for TraceLead.
Your next Leadpages lead, with its source.
Paste the tag in the page's tracking code, add the hidden fields and publish.
No card needed. Cancel any time.
Page Settings → Tracking Code (Head section):
<script async src="https://app.tracelead.io/snippet/v1/tracelead.js" data-site="tl_YOUR_SITE_ID"></script>
Form widget → Add hidden field:
tl_channel
tl_source
tl_utm_campaign
tl_referrer_host