First touch attribution that a direct return visit cannot overwrite
TraceLead records the visit that first brought someone to your site and keeps it for 90 days by default. Whichever page they finally enquire from, your form's hidden fields carry that first channel, source and campaign, so the lead arrives with its original source.
No card needed. No lead caps on any plan.
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 the original lead source goes missing
Analytics tools and URL-reading scripts see the visit in front of them. When someone clicks your ad on Monday and comes back by typing your address on Thursday, Thursday's visit has no campaign, no click id and no referrer.
Credit that enquiry to the last visit and your ad looks like it did nothing, while "direct" looks like your best channel.
-
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 contact 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 |
The direct-return rule: once a first touch is stored, a later visit with no campaign, click id or outside referrer never replaces it. A typed address, a bookmark or a click between your own pages is classified as direct and leaves the first touch alone.
How first touch attribution works in TraceLead
All of it happens in the visitor's browser, on your domain. The form is filled with plain values; nothing about the form changes for the person filling it in.
How the first touch is stored-
The visitor accepts cookies
Nothing is read into storage or written before your consent banner says yes. The landing URL is held in memory, so a visitor who accepts on the page they landed on is still attributed to that landing.
-
The visit is classified
UTM tags win, then click ids, then the referrer. A Google ad click arrives as
The published classification rulesgoogle/cpc/paid_search, a Google search asorganic_search, a link from ChatGPT usually aschatgpt.com/referral. Afbclidon its own isorganic_social, never paid. -
The first touch is kept for its lifetime
It goes into a first-party cookie named after your site, with
localStorageas a fallback:tl_ft_<site id> first touch, 90 days by default (1 to 400) tl_lt_<site id> last touch, only when the site keeps oneThe first stored visit stays until the lifetime runs out, whatever later visits look like. The lifetime is set per site under First-touch lifetime.
-
The form is filled on any page
When a page has a form with matching hidden fields, TraceLead writes the first touch into them, including forms that appear later in single-page apps and embeds. The enquiry goes wherever the form already sends it.
<input type="hidden" name="tl_channel"> <input type="hidden" name="tl_source"> <input type="hidden" name="tl_utm_campaign"> <input type="hidden" name="tl_first_touch_at">
First touch vs last touch attribution
First touch answers "what introduced this lead?". Last touch answers "what brought them back to enquire?". TraceLead always keeps the first; the last is an option per site, under Also keep the last touch.
Until a later campaign visit happens, the last touch equals the first. The dashboard and the lead counts stay first-touch only; the last touch exists only in the form fields.
| Question | First touch | Last touch (optional) |
|---|---|---|
| Which visit | The first visit after consent | The most recent visit with a UTM, click id or outside referrer |
| A direct return | Never replaces it | Never replaces it |
| A later campaign visit | Never replaces it | Replaces it |
| Hidden fields | tl_channel, tl_utm_campaign… | tl_last_channel, tl_last_utm_campaign… |
| In the dashboard | Yes | No, form fields only |
What arrives with each lead
Pick the fields you want; leave out the rest. With last touch on, the last_ counterparts sit beside the first-touch ones, so one enquiry shows both the ad that introduced the person and the newsletter that brought them back.
Also available: every UTM tag, the Google, Microsoft, Meta, LinkedIn, TikTok and X click ids, the referring site and the landing page, each with a last_ counterpart.
| Hidden field | Holds | Example |
|---|---|---|
| tl_channel | The channel the first visit came from | paid_search |
| tl_source | Where it came from | |
| tl_utm_campaign | The campaign name from your UTM tags | brand-uk |
| 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 |
| tl_last_channel | The channel of the most recent campaign visit (when last touch is on) | |
| tl_last_utm_campaign | The most recent campaign (when last touch is on) | october-issue |
| tl_last_touch_at | When the most recent campaign visit happened (when last touch is on) | 2026-10-09T16:02:11Z |
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.
What is first touch attribution?
Crediting a lead to the visit that first brought the person to your site: the ad, search, post, newsletter or link they arrived from. TraceLead records that visit once the visitor accepts cookies and writes it into your form's hidden fields when they enquire, from whichever page and however many visits later.
What is the difference between first touch and last touch attribution?
First touch credits the visit that introduced the person; last touch credits the most recent campaign visit before the enquiry. TraceLead always keeps the first touch. Switch on "Also keep the last touch" for a site and the last_ fields carry the most recent campaign beside it.
How do I find the original lead source of an enquiry?
Add hidden fields such as tl_channel, tl_source and tl_utm_campaign to the form. They arrive with the enquiry in your inbox or CRM, holding the channel, source and campaign of the first visit, for example paid_search, google and brand-uk.
How long is the first touch kept?
90 days by default, from the first visit. You can set any lifetime from 1 to 400 days per site under First-touch lifetime in the attribution settings. When it runs out, the next visit becomes the new first touch.
What if the first visit was direct?
Then the first touch is direct, and a later campaign visit does not replace it: the first observed visit is kept for its lifetime, whatever it was. If you want to see a campaign that came after a direct first visit, switch on last touch.
Does first touch attribution work across devices?
No. The first touch lives in a first-party cookie in one browser on your own domain. Someone who clicks an ad on their phone and enquires from a laptop starts a new first touch on the laptop. TraceLead keeps no cross-device or cross-site identity.
Is anything recorded before the visitor accepts cookies?
No. Until your consent banner says yes, nothing is stored and the fields stay empty. If the visitor accepts on the page they landed on, the campaign from that landing is still captured.
More features
Keep the visit that found you, on every lead.
One script tag and the hidden fields you want. The first touch is kept from the visitor's first accepted visit until the lifetime you set.
No card needed. Cancel any time.
<script async src="https://app.tracelead.io/snippet/v1/tracelead.js" data-site="tl_YOUR_SITE_ID"></script>
<input type="hidden" name="tl_channel">
<input type="hidden" name="tl_source">
<input type="hidden" name="tl_utm_campaign">
<input type="hidden" name="tl_first_touch_at">
<input type="hidden" name="tl_last_channel">