
Tax and accounting
54% better lead quality after using LeadJourney for marketing
Karsten Guhr
Managing Director
Read the storyUTM and click ID tracking
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.
Rated by teams whose CRM used to say Direct
UTM and click ID tracking for teams at
Every lead, every session it ever had
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
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.
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.
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.
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.
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
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.
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
One measured result per customer, with the person, the role and the company behind it.

Tax and accounting
54% better lead quality after using LeadJourney for marketing
Karsten Guhr
Managing Director
Read the story
SEO agency
€500k MRR reached profitably, scaling an SEO agency on performance marketing
Nikita Yatsun
Managing Director
Read the story
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
LinkedIn growth agency
2x customer retention, once every LinkedIn touchpoint was tracked to revenue
Marc Richard
CEO
Read the story
![]()
Digital publishing
Which article produced the lead and the revenue, across AI and organic search
Andreas Malkow
CEO & Head of PR
Read the story
SEO and GEO agency
Proven ROI on every retainer, from organic and AI search leads through to revenue
Philipp Nessmann
Managing Director
Read the storyGetreach
Backlinks marketplace (SaaS)
The journey, drawn
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
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
How the data moves
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
Fields written to
Integrations
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.
Spend, campaign structure and click IDs come in. Closed deals go back out as offline conversions.
The traffic your analytics still files under direct. No setup, the tracking script separates it.
Lead stage and deal value flow in. Every campaign sees the revenue it actually produced.
What the software does
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.
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.
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.
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.
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.
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 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 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
GA4 filed this conversion under direct / (none). Both sessions were filed under the same click ID from day 1.
The journey
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.
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
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.
The 173 recovered leads were never anonymous. They already had a click ID before the URL changed.
The scenarios
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.
Live in 21 minutes
No hidden field to add to every form, no spreadsheet of tags to maintain, no engineering ticket.
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.
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.
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
| What you need | Hidden form fields + spreadsheet | LeadJourney | |
|---|---|---|---|
| Survives a redirect or a shortened link | No: The parameter goes with the URL | No: The field arrives empty | Yes: Stored on arrival, before the redirect |
| Joins a return visit days later to the first one | Partly: New session, usually direct / (none) | No: Only the converting session's URL | Yes: Same click ID, kept for months |
| Keeps the first campaign, not just the last | Partly: Last non-direct click, inside the lookback | No: Whatever the form saw, once | Yes: Every session on the visitor, in order |
| Reads every platform's click ID | Partly: gclid with auto-tagging, not fbclid, msclkid or li_fat_id | Partly: Only the parameters you hard-coded, per form | Yes: gclid, fbclid, msclkid, li_fat_id, ttclid |
| Writes source and campaign onto the CRM lead | No: Sessions, no named leads | Partly: On that form, if the field mapped | Yes: First and last touch, UTMs and click ID per record |
| Sends conversions back on the platform's click ID | Partly: Google Ads only, by import | No: A CSV upload, by hand | Yes: Google, Meta, LinkedIn, Microsoft |
| Setup and upkeep | Partly: Free, if every link is tagged by hand | Partly: Per form, per tool, per typo | Yes: 21 minutes, no developer |
What changes
Every record carries the source, the campaign and the click that produced it, so sales and marketing read the same origin.
Tagged, stripped and returning visits are sessions on one click ID, so a campaign stops splitting into tagged rows, Direct and (not set).
Meta, LinkedIn and Microsoft Ads clicks are credited by their click ID, not by whether someone remembered the tag.
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.
No hidden field per form, no lookup joining the export to the ad report. The builders make the link, the tracking does the rest.
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
4.9 out of 5 across 11 public reviews. Quoted as they were left, shortened only by dropping whole sentences.
“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.”
“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.”
“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“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“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“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 GmbHRead the reviews where they were left
Common questions
What marketers want to know before they stop trusting the URL to carry the source.
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.
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.
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.
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.
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.
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.
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.
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
Book a demo and we open your CRM live: how many leads say Direct today, and which campaign and click they would carry instead.
GA4 filed the quote under direct / (none). Both visits were sessions on one click ID from day 1.