Skip to content

UTM and click ID tracking

UTM and click ID tracking that survives the journey, not one page view.

Every visitor gets a LeadJourney click ID on their first visit. It lives in their browser for months, so every session after it joins the same journey.

  • One click ID per visitor, kept for months
  • Every UTM set, gclid, fbclid, msclkid, li_fat_id
  • Written onto the CRM record

Rated by teams whose CRM used to say Direct

  • Trustpilot4.9 out of 5 on Trustpilot
  • G25.0 out of 5 on G2
  • Capterra5.0 out of 5 on Capterra

UTM and click ID tracking for teams at

  • Trading.de logo
  • Swedish Cold logo
  • Trustfactory logo
  • MLK Digital logo
  • CPC AG logo
  • DaxoMedia logo
  • Contentbär logo
  • Hivebuy logo
  • OBVIOUS logo

Every lead, every session it ever had

Your workspace
Click ID registerOne click ID per visitor, the first campaign it arrived on, and every session since
412leads this month
404with source and campaign
8filed as Direct
LeadLeadJourney click IDFirst UTM setSessionsCRM field
Mira Schulzlj.4c8ae1google / cpc / fleet-q33 in 31 daysHubSpot
Lena Vogtlj.9b2f7dmeta / paid-social / video-b2 in 9 daysHubSpot
Brightline Studiolj.1e63c4linkedin / paid / abm-q36 in 41 daysPipedrive
Northwind Logisticslj.7d05b8bing / cpc / fleet-brand4 in 22 daysClose

The click ID was issued on the first visit and every session since is filed under it, so the redirect and the return visit changed nothing.

The definition

What is UTM and click ID tracking?

In short

UTM tracking reads the utm_source, utm_medium and utm_campaign parameters you put on a link, so one visit files under one campaign. Click ID tracking is the layer underneath: LeadJourney issues its own click ID to every visitor on their first visit, keeps it first-party in their browser for months, and writes every session that browser starts into one record under it. A UTM set describes a visit and only the last one survives. The click ID identifies the person, which is what a form filled on day 40 actually needs.

  • Give every visitor an ID of your own

    The first visit issues a LeadJourney click ID, kept in that browser for months. It is yours, not a platform's, so the session on day 8 and the one on day 40 are filed under the same person rather than counted as two new ones.

  • Capture the UTM set on every visit that has one

    Every utm_ parameter is read and kept on the click ID, without a hidden field per form. Build the links with the free UTM builder and let the tracking do the rest.

  • Keep the platform's click ID on it too

    The gclid, fbclid, msclkid and li_fat_id the ad platform appended are stored on the same visitor, because they are what a conversion has to carry when it goes back to Google, Meta, LinkedIn or Microsoft.

  • Write them where they are used

    Source, campaign, every UTM and the click ID onto the lead record in the CRM, so sales, the pipeline report and the conversion sent back all read the same origin.

Why the CRM says Direct

You tagged the link. The parameters did not make it to the record.

A UTM parameter exists exactly once, in the address of one page view, and a tool that reads UTMs only ever knows the last set it saw. Everything that happens between the click and the form can lose it, cut it or overwrite it.

  • Redirects rebuild the URL. A link shortener, a login flow, a cookie banner redirect or a payment provider drops every parameter on the way through.
  • The next visit replaces the last one. A tool that stores the most recent UTM set overwrites March's paid click with April's newsletter, so the campaign that actually produced the lead is gone by the time the lead converts.
  • Form tools live on their own domain. Typeform, Calendly and the booking page never saw the URL the ad landed on, so the hidden field arrives empty.
  • The return visit starts clean. The lead reads the page on Monday and comes back through a bookmark on Thursday. With nothing joining the two visits, GA4 files the conversion under direct / (none).
  • GA4 reads the gclid and nothing else. A Meta, LinkedIn or Microsoft Ads click without a hand-built UTM is filed as social or organic, and msclkid clicks inflate bing / organic.
  • One typo renames a channel. utm_souce, Facebook with a capital F, cpc against paid: hand-built tags split one campaign into five rows and nobody notices until the quarter review.

So one person becomes four anonymous sessions and one campaign becomes tagged rows, Direct rows and (not set). The channel that actually produced the pipeline is the one being undercounted.

Case studies

What changes once the attribution is right

One measured result per customer, with the person, the role and the company behind it.

  • Portrait of Karsten Guhr

    Tax and accounting

    54% better lead quality after using LeadJourney for marketing

    Karsten Guhr

    Managing Director

    Read the story
  • Portrait of Nikita Yatsun

    SEO agency

    €500k MRR reached profitably, scaling an SEO agency on performance marketing

    Nikita Yatsun

    Managing Director

    Read the story
  • Portrait of Florian Buck

    Klickkraft GmbH

    Business coaching

    €10-20k in monthly Meta spend, tied to qualified leads and revenue per ad

    Florian Buck

    Managing Director

    Read the story
  • Portrait of Marc Richard

    LinkedIn growth agency

    2x customer retention, once every LinkedIn touchpoint was tracked to revenue

    Marc Richard

    CEO

    Read the story
  • Portrait of Andreas Malkow

    Digital publishing

    Which article produced the lead and the revenue, across AI and organic search

    Andreas Malkow

    CEO & Head of PR

    Read the story
  • Portrait of Philipp Nessmann

    SEO and GEO agency

    Proven ROI on every retainer, from organic and AI search leads through to revenue

    Philipp Nessmann

    Managing Director

    Read the story
  • Getreach

    Backlinks marketplace (SaaS)

    0 to 100k in revenue from paid ads alone, inside the first month

    Getreach

    getreach.com

    Read the story

The journey, drawn

One click ID, and two visits three weeks apart are one lead.

This is the journey view in the product: the visit that issued the ID, the two places the URL lost its parameters, and the deal at the end, all on one visitor.

Lead journey · one LeadJourney click ID

MSMira SchulzNorthwind LogisticsClosed won4 touchpoints over 31 days

Diagram: the journey of one lead, Mira Schulz of Northwind Logistics, drawn left to right on one beam. Day 1, a click on a Google Ads search ad for fleet tracking software issues the LeadJourney click ID lj.4c8ae1, with the gclid and utm_campaign=fleet-q3 filed under it. Day 1, a link shortener rebuilds the URL and both parameters leave the address bar, although the session is already filed under the click ID. Day 22, she returns through a bookmark with no parameters in the URL and reads the pricing page, matched to the same click ID in her browser, where GA4 files the visit as Direct. Day 22, she requests a quote and the day 1 campaign, not the day 22 visit, is written onto the HubSpot contact. Day 31, the deal closes at 14,800 euros and the conversion is sent back to Google Ads on the gclid stored under the click ID. Under it the same journey read by three tools: GA4 says direct from day 22, a hidden field on the form arrives empty because the URL was rebuilt, and LeadJourney reads Google Ads, campaign fleet-q3, across all 31 days.

The same journey, read by three tools

  • GA4direct / (none) from day 22
  • A hidden field on the formEmpty, the URL was rebuilt
  • LeadJourney, on one click IDGoogle Ads, fleet-q3, all 31 days

How the data moves

Parameters in from every click, fields out to every record.

Paid clicks arrive with the platform's click ID, newsletters and partner links with a UTM set alone, a bookmark with nothing at all. Every one of them is filed under the same LeadJourney click ID, and the result is written onto the lead in the CRM.

Every visit, whatever it carried

LeadJourney

One click ID per visitor

Written onto the CRM record

  • Source, medium, campaign
  • LeadJourney click ID
  • First and last touch
  • Landing page and referrer

Fields written to

and 100+ more by webhook
Conversions sent back on the gclid, fbclid, li_fat_id and msclkid held on the click ID

Integrations

Every source and every CRM, connected.

The ad platforms and channels a touchpoint can come from, and the CRMs the outcome is read back from. Open any tile for what exactly moves between LeadJourney and that tool.

Ad platforms

Spend, campaign structure and click IDs come in. Closed deals go back out as offline conversions.

All traffic channels

Organic channels

Unpaid clicks from search and social, attributed per post, per video and per keyword.

All traffic channels

AI search engines

The traffic your analytics still files under direct. No setup, the tracking script separates it.

All traffic channels

CRM and sales

Lead stage and deal value flow in. Every campaign sees the revenue it actually produced.

All CRM and sales tools

What the software does

Everything UTM and click ID tracking has to do, from the first visit to the CRM field.

One click ID per visitor

Every visitor is issued a LeadJourney click ID on their first visit and it stays in their browser for months. Every session that browser starts is written to the database under it, which is what makes four visits one journey instead of four strangers.

UTMs captured automatically, and never overwritten

Every utm_source, utm_medium, utm_campaign, utm_content and utm_term on any visit is recorded against the click ID, without a hidden field on the form. The April newsletter is a new session on the same journey, not a replacement for the March paid click.

The platform's click ID kept on it

gclid, fbclid, msclkid and li_fat_id are read the moment the visitor lands and held on the same visitor, so a form filled on day 40 still knows which click it came from. The TikTok ttclid too.

Stored on your own domain

Tracking runs on a first-party subdomain and the session is recorded on arrival, which is why 95%+ of visits keep their source where a third-party pixel or an ad blocker loses it.

Survives redirects and form tools

The session is filed under the click ID before the redirect rebuilds the URL and before the form tool on its own domain loads, so the shortener, the login flow and the Typeform all arrive with the source intact.

Written onto the CRM record

First and last touch, every UTM parameter, the click ID and the landing page land on the lead: HubSpot, Pipedrive, Close and Attio natively, the rest by webhook. See CRM integration.

The platform's click ID sends the conversion back

The gclid, fbclid, li_fat_id and msclkid held on the visitor are what a qualified lead or a closed deal needs to reach the ad platform as a conversion. That is offline conversion tracking.

The distinction

A UTM describes a visit. The click ID identifies the person. You need both.

A UTM set tells you one visit came from the spring newsletter. It is human readable, it works on any link you control, and it is only ever about that one visit, which is why the tool that reads it keeps the last set and loses the first. The LeadJourney click ID is the visitor themselves, kept for months, and every session and every parameter they ever arrived with hangs on it. The platform's own gclid and fbclid hang on it too, because those are what a conversion has to carry when it goes back.

Where the parameters get lost, and kept

One journey, followed past the places the URL breaks.

Your workspace
Lead journeyOne lead, first click to CRM record
LVLena VogtFintoryQualified
  1. Meta AdsClicked the video-b ad on Instagram, click ID issuedDay 1
  2. RedirectShortener rebuilt the URL, UTM set dropped on the wayDay 1
  3. DirectTyped the address, read /pricing, same click IDDay 8
  4. Form toolBooked a demo on the form tool's own domainDay 8
  5. HubSpotContact created: source Meta Ads, campaign video-b, fbclidDay 8
Lead source written to HubSpotMeta Ads

GA4 filed this conversion under direct / (none). Both sessions were filed under the same click ID from day 1.

The journey

The UTM died at the redirect. The lead still filed under Meta Ads.

Lena clicked an Instagram ad on day 1 and was issued a click ID. A shortener dropped the UTM set two seconds later, but the session was already filed, and on day 8 she booked on a form tool's own domain. See lost UTM parameters.

  • Click ID issued on arrival, with the fbclid and UTM set filed under it
  • Return visit on day 8 matched on the click ID in her browser, not on the URL
  • Form tool on its own domain, matched to the same visitor anyway
  • Source Meta Ads, campaign video-b, written onto the HubSpot contact
Your workspace
Sessions capturedLanding page arrivals on track.yourdomain.com, last hour
Live
  • gclid storedSearch · fleet tracking softwareutm_campaign=fleet-q3Kept
  • fbclid storedInstagram · video-bUTM dropped by redirectID kept
  • li_fat_id storedSponsored content · ABMutm_campaign=abm-q3Kept
  • msclkid storedSearch · fleet brandNo UTM on the linkID kept
  • UTM set onlyNewsletter · spring issueutm_source=newsletterCustom channel

Every row is a session on a click ID that already existed or was issued here. Nothing depends on the URL staying intact afterwards.

The capture

Whatever the visit carried, read on arrival and filed under the visitor.

A paid click arrives with the platform's own identifier (gclid, fbclid, msclkid, li_fat_id), a newsletter click with a UTM set, a bookmark with nothing. All three are sessions on the same LeadJourney click ID.

  • gclid, fbclid, msclkid, li_fat_id and ttclid read on the landing page
  • The UTM set beside them, or on its own for tagged links, or neither
  • Every session written to the database under the visitor's click ID
  • Visible per visitor in the transparent logs, so you can audit what survived
Your workspace
Attribution by scenarioSame 412 leads, last 30 days
Leads GA4 tied to a campaign231the rest direct / (none) or (not set)
Leads LeadJourney tied to a campaign404every session filed under one click ID
Recovered from Direct173 leads back to their campaign
ScenarioGA4LeadJourney
Redirect or shortened linkLostKept
Form tool on its own domainLostKept
Return on day 8, typed URLDirectSame journey
Phone click, laptop formNew userJoined

The 173 recovered leads were never anonymous. They already had a click ID before the URL changed.

The scenarios

Where UTM-only tracking loses the lead, and what the same lead looks like here.

The same month of leads, attributed two ways. GA4 reads the URL of the session that converted, LeadJourney reads the click ID that ties that session to the first one. The gap is redirects, form tools and return visits.

  • Redirects and shorteners: the parameter is gone, the filed session is not
  • Form tools on their own domain: the visitor is matched, not the URL
  • Day 8 return through a bookmark: the same click ID, not a new user
  • Phone click, laptop form: joined on the same person where the identifiers allow it

Live in 21 minutes

UTM and click ID tracking set up in three steps

No hidden field to add to every form, no spreadsheet of tags to maintain, no engineering ticket.

  1. 1About 5 minutes

    Install

    Add one script on your own tracking subdomain. From that moment every visitor is issued a LeadJourney click ID on arrival, and every session they have is filed under it.

  2. 2About 10 minutes

    Connect the CRM

    Sign in over OAuth for HubSpot, Pipedrive, Close or Attio, or connect the webhook for Salesforce and the rest, then choose which fields LeadJourney may write. Existing source fields stay untouched.

  3. 3About 5 minutes

    Tag and connect the ads

    Build tagged links for the channels that need them with the free UTM builders, and connect Google Ads, Meta, LinkedIn and Microsoft Ads so spend comes in and conversions go back on the stored click ID.

How it compares

UTMs in GA4, hidden form fields, and UTM and click ID tracking that survives the journey.

What you needGoogle Analytics 4UTMs in GA4Hidden form fields + spreadsheetLeadJourney
Survives a redirect or a shortened linkNo: The parameter goes with the URLNo: The field arrives emptyYes: Stored on arrival, before the redirect
Joins a return visit days later to the first onePartly: New session, usually direct / (none)No: Only the converting session's URLYes: Same click ID, kept for months
Keeps the first campaign, not just the lastPartly: Last non-direct click, inside the lookbackNo: Whatever the form saw, onceYes: Every session on the visitor, in order
Reads every platform's click IDPartly: gclid with auto-tagging, not fbclid, msclkid or li_fat_idPartly: Only the parameters you hard-coded, per formYes: gclid, fbclid, msclkid, li_fat_id, ttclid
Writes source and campaign onto the CRM leadNo: Sessions, no named leadsPartly: On that form, if the field mappedYes: First and last touch, UTMs and click ID per record
Sends conversions back on the platform's click IDPartly: Google Ads only, by importNo: A CSV upload, by handYes: Google, Meta, LinkedIn, Microsoft
Setup and upkeepPartly: Free, if every link is tagged by handPartly: Per form, per tool, per typoYes: 21 minutes, no developer

What changes

What marketers do differently once the source survives the journey.

Done:

No more Direct in the CRM

Every record carries the source, the campaign and the click that produced it, so sales and marketing read the same origin.

Done:

One person, one journey

Tagged, stripped and returning visits are sessions on one click ID, so a campaign stops splitting into tagged rows, Direct and (not set).

Up:

Channels that were undercounted

Meta, LinkedIn and Microsoft Ads clicks are credited by their click ID, not by whether someone remembered the tag.

Done:

Long sales cycles still attribute

The click ID was issued on day 1 and kept, so the form on day 40 credits the campaign from day 1 rather than the last thing that happened.

Down:

Time spent on tags and spreadsheets

No hidden field per form, no lookup joining the export to the ad report. The builders make the link, the tracking does the rest.

Lasting:

The conversion goes back

The platform click ID held on the visitor is what carries a qualified lead or a closed deal back, so the tracking that fixed the CRM also fixes the bidding.

Original reviews

What our customers wrote, word for word

4.9 out of 5 across 11 public reviews. Quoted as they were left, shortened only by dropping whole sentences.

  • 5 out of 5 starsGoogle

    Before LeadJourney, we had no reliable tracking concept for our five-figure ad spend. We were manually building spreadsheet and CRM reports, inaccurate and time-consuming. Within two days, everything was set up. For the first time, I know exactly what I pay per lead and which campaigns actually bring in the best-qualified prospects.

    Florian BuckCEO, Klickkraft GmbH
  • With LeadJourney we are able to track all our leads and connect them with sales and attribution data to make better decisions. In the first month of using it we scaled from 0 to 100k revenue from paid ads only.

    GetreachBacklinks Marketplace (SaaS)
  • 5 out of 5 starsG2

    LeadJourney finally fixed my Marketing Analytics. It goes way beyond basic Ad Tracking Software. The Customer Journey Report saves hours of digging, and capturing everything from Offline Conversions to AI Search Tracking makes it the Best B2B Attribution Platform available.

    Sascha LenzMarketing Manager
  • 5 out of 5 starsTrustpilot

    Connected LeadJourney for 2 clients, setup took literally 20 minutes each. The data became more accurate, the reports actually make sense. Now clients look at the dashboard and the 'why don't the numbers match?' questions are gone.

    Alexander SamarPerformance Marketing Agency
  • 5 out of 5 starsGoogle

    With LeadJourney, we have finally found a tool that provides us with the data we need to scale our performance marketing campaigns. The most important KPI is no longer lead price but cost per qualified lead.

    Steffen SiesingCEO, Bilanzmanufaktur GmbH
  • 5 out of 5 starsG2

    The ability to track both online and offline conversions in one unified dashboard has given us insights we never had before. Our ROI has improved dramatically since we started integrating LeadJourney with our CRM. We're finally able to see the full customer journey, and it's been a game changer for our strategy.

    Andre WitzelFounder, Trading.de
  • 5 out of 5 starsTrustpilot

    The ability to seamlessly integrate data from multiple channels and see real-time insights has significantly improved our campaign results. We now focus on metrics that truly matter, like ROI and qualified leads.

    Nikita YatsunCEO, RLV Media GmbH

Common questions

UTM and click ID tracking, the questions buyers ask

What marketers want to know before they stop trusting the URL to carry the source.

What is the difference between UTM tracking and click ID tracking?

A UTM parameter is text you add to a link yourself (utm_source=newsletter, utm_campaign=spring), and it describes one visit. Click ID tracking is the layer under it: LeadJourney gives every visitor its own click ID on their first visit, keeps it in their browser for months, and files every session that browser starts under it. That is what turns four separate visits into one journey, and it is why a tool that only reads UTMs loses the March paid click when the April newsletter arrives. The ad platforms' own click IDs (gclid, fbclid, msclkid, li_fat_id) are a different thing again: they point at one ad click, they are what the platform accepts when a conversion is sent back, and LeadJourney holds them on the visitor alongside everything else. UTM parameters explained covers the five parameters in detail.

Why do my UTM parameters get lost?

Because they only exist in the URL of one page view, and most tools keep only the last set they saw. A redirect that rebuilds the address drops them, a form tool on its own domain never saw them, a bookmark or a typed URL never had them, and the next visit overwrites whatever was left. LeadJourney reads them on the first page view and files them under that visitor's click ID, so the URL can do what it likes afterwards and a later visit adds a session rather than replacing one.

How long is a click ID kept?

For months. The LeadJourney click ID sits in the visitor's own browser, in localStorage and a first-party cookie, and everything filed under it lives in our database. Long enough that a lead who clicked in March and books in May is still one journey with the March click at the front of it, and long enough that the conversion sent back to Google Ads, Meta, LinkedIn or Microsoft Ads arrives with a platform click ID that is still inside their window. If the visitor clears their browser storage the next visit starts a new ID, which is the honest limit of any first-party method.

Does it still work when a lead returns days later or on another device?

A return visit through a bookmark, a typed URL or a link with no parameters joins the same journey, because the join is the click ID in that browser rather than anything in the URL. A different device is a different browser and so a second click ID; the two are joined where the identifiers allow it, typically once the email or a login ties them together. The cross-device journeys use case shows what that looks like on a real lead.

Which fields does LeadJourney write to the CRM?

First and last touch channel, source and campaign, the ad and creative, every UTM parameter, the click ID from each platform, the landing page and the referrer, and a link to the full journey in LeadJourney. You choose which of those are in scope before anything is written, and existing source fields stay untouched. HubSpot, Pipedrive, Close and Attio connect natively, Salesforce and 100+ others through a webhook, Zapier, Make or n8n.

Do I still need to tag my links?

For paid clicks, less than you think: the platform's own click ID identifies the campaign, ad set and ad, so a Google, Meta, LinkedIn or Microsoft Ads click is credited even without a UTM. For everything you control that has no click ID of its own (newsletters, podcasts, partner and affiliate links, print QR codes) tagging is still the way to name the channel, and the free UTM builders keep the spelling consistent so one campaign stays one row. Either way the visit is filed under the same LeadJourney click ID, so an untagged one is a session with an unnamed source rather than a lost lead.

Does LeadJourney replace GA4 for UTM tracking?

It replaces GA4 as the place you read where leads came from. GA4 reports sessions and attributes the converting session's URL; LeadJourney reports named people, every session they ever had under one click ID, and the deal that followed in the CRM. Many teams keep GA4 for site analytics and use LeadJourney for the lead and revenue side. The ranked UTM tools guide compares the two kinds of tool.

Is storing a click ID in the visitor's browser GDPR compliant?

Writing an identifier to a visitor's device needs consent, and that is exactly how it runs: the script stays silent until your consent management platform says otherwise, so it works with your banner rather than around it. LeadJourney is hosted in Frankfurt, identifiers sent to the ad platforms are hashed before they leave, and a data processing agreement is part of every plan. Tracking models sets out the three ways to run this and what each one costs you; the GDPR and security pages list the controls in detail.

See it on your own leads

See which of your Direct leads actually came from a campaign.

Book a demo and we open your CRM live: how many leads say Direct today, and which campaign and click they would carry instead.

Your workspace
Lead journeyOne lead, tagged click to closed deal
MSMira SchulzNorthwind LogisticsClosed won
  1. Google AdsClicked "fleet tracking software", click ID issued, gclid filed under itDay 1
  2. DirectReturned through a bookmark, matched on the same click IDDay 22
  3. FormRequested a quote on /pricing, source Google Ads written to HubSpotDay 22
  4. HubSpotDeal moved to Closed won, €14,800Day 31
Offline conversion sent to Google Ads on the gclid held on her click ID€14,800

GA4 filed the quote under direct / (none). Both visits were sessions on one click ID from day 1.