The Short Answer: You Need a Tracking System, Not a Single Tool
To track where your website leads come from, you need three things working together: UTM parameters on every link you control, a properly configured analytics platform (usually Google Analytics 4), and a way to pass source data through to your CRM or lead management system when someone fills out a form or makes contact. Without all three, you’ll have partial data at best and misleading data at worst.
Most mid-market companies we work with can tell you roughly how many leads they got last month. Far fewer can tell you which specific campaign, email, or referral source generated those leads, and almost none can trace that data all the way through to revenue. The gap between “we get leads from Google” and “we know that our technical guide published in March generated 14 qualified leads from organic search, seven of which became opportunities worth £83,000” is enormous. Closing that gap is what lead source tracking is really about.
Why Most Lead Source Data Is Wrong Before You Even Start
Before we get into the mechanics, it’s worth understanding why your current data is probably unreliable. In our projects, we typically find that 30-50% of lead sources are misattributed or missing entirely on mid-market websites. There are a few common reasons for this.
First, direct/none traffic is inflated. When Google Analytics can’t determine where a visitor came from, it labels the visit as “direct.” This doesn’t mean the person typed your URL into their browser. It often means the tracking failed: a link was missing UTM parameters, a redirect stripped the referrer data, or the user switched from an app (like LinkedIn or Slack) that doesn’t pass referral information. On many sites we audit, “direct” is the largest reported source of leads, and it’s almost always overstated by a wide margin.
Second, organic and paid traffic get blended together. If you’re running Google Ads but haven’t enabled auto-tagging or haven’t set up UTM parameters correctly, paid clicks can appear as organic visits. This makes your SEO look more effective than it is and your paid campaigns look less effective. The financial implications of this misattribution are significant: you might cut a campaign that’s actually generating leads because the credit is going somewhere else.
Third, form submissions lose their source data. This is the most damaging gap. A visitor arrives from a LinkedIn ad, browses three pages, and fills in your contact form. Your CRM creates a new lead record, but unless your form explicitly captures and passes the original traffic source, that lead shows up with no source at all. Your marketing team sees the lead in GA4, and your sales team sees it in the CRM, but nobody can connect the two. This is where most tracking systems fall apart, and it’s where the real work needs to happen.
Setting Up UTM Parameters Properly
UTM parameters are tags you add to the end of URLs so that when someone clicks a link, your analytics platform knows exactly where they came from. They’re the foundation of lead source tracking, and they cost nothing to implement. They just require discipline.
There are five standard UTM parameters, but three are essential for lead tracking:
- utm_source: The platform or site where the link appears (e.g., linkedin, google, newsletter)
- utm_medium: The type of traffic (e.g., cpc, email, social, referral)
- utm_campaign: The specific campaign or initiative (e.g., spring-webinar-2024, product-launch-q3)
Two additional parameters, utm_term and utm_content, are useful for granularity. Use utm_term for paid search keywords and utm_content to differentiate between two links in the same email or two ads in the same campaign.
The Naming Convention Problem
UTM parameters are case-sensitive. “LinkedIn” and “linkedin” and “Linkedin” will appear as three separate sources in your reports. This sounds trivial, but on any site where multiple people create campaign links, naming inconsistency ruins your data within weeks.
Our team recommends creating a UTM naming convention document before anyone starts tagging links. Keep everything lowercase, use hyphens instead of spaces, and agree on standard values. For example, always use “linkedin” not “LinkedIn” or “li.” Always use “cpc” for paid clicks and “social” for organic social posts. Document this in a shared spreadsheet that doubles as your link builder, so every campaign link is created from the same template.
A good UTM spreadsheet has columns for the destination URL, each parameter, the final tagged URL (generated by formula or a simple tool), and a notes column recording who created it and when. This becomes your audit trail. When someone asks “where did those November leads come from?”, you can look up exactly which links were active and what they pointed to.

Configuring Google Analytics 4 for Lead Tracking
GA4 handles traffic source data differently from the old Universal Analytics. Understanding the new model saves you from building reports that look right but measure the wrong thing.
GA4 uses three attribution scopes: session-level (where the current visit came from), first-user (the very first time this person visited your site), and event-level (what source gets credit for a specific conversion). For lead tracking, you typically want to look at first-user attribution to understand what originally brought a lead to your site, and session attribution to understand what brought them back when they converted.
Setting Up Conversion Events
The single most important configuration step in GA4 is marking your lead-generating actions as conversion events. By default, GA4 tracks page views and some basic engagement metrics, but it doesn’t know which actions represent a lead. You need to tell it.
For most B2B sites, the key conversion events are:
- Form submissions (contact forms, demo requests, quote requests)
- Phone number clicks (especially on mobile)
- Live chat conversations initiated
- Gated content downloads (if you use them for lead generation)
- Email link clicks (mailto: links)
Each of these needs to fire a distinct event in GA4, and each event needs to be marked as a conversion. If you’re using Google Tag Manager (and you should be), you’ll set up triggers for form submissions, click events on phone links, and similar interactions. The specifics depend on how your site is built, but the principle is consistent: every action that represents a potential lead must be tracked as a named event.
In our projects, we define these measurement requirements during the prototyping phase, well before the site is built. This means the development team knows from the start which elements need data attributes for tracking, which forms need hidden fields for source data, and how events should be structured. Retrofitting tracking onto a finished site is always more expensive and less reliable than building it in from the beginning.
Using GA4’s Attribution Reports
Once your conversions are tracking, GA4’s Traffic Acquisition and User Acquisition reports become genuinely useful. Traffic Acquisition shows you which sources drove converting sessions. User Acquisition shows you which sources first brought those users to your site. The difference matters.
Imagine a lead who first found your site through an organic search in January, returned via a retargeting ad in February, then came back directly in March and filled in your contact form. User Acquisition credits organic search. Traffic Acquisition credits direct. The session-level conversion report might credit direct. None of these is “wrong,” but they answer different questions. Understanding this prevents the common mistake of looking at one report and drawing the wrong operational conclusion.
Passing Source Data Into Your CRM
This is the step most companies skip, and it’s the step that matters most for actually using lead source data to make business decisions. Your analytics platform tells you what’s happening on the website. Your CRM tells you what happened to the lead after they made contact. If these two systems don’t share source data, your marketing team and sales team are working from different numbers.
Hidden Form Fields
The most reliable method for passing source data to your CRM is hidden form fields. These are form fields that the visitor doesn’t see, which are automatically populated with tracking data when the page loads or when the form is submitted.
Here’s how this works in practice. When a visitor arrives on your site via a tagged link (say, utm_source=linkedin&utm_medium=cpc&utm_campaign=case-study-promo), those parameters are in the URL. A small piece of JavaScript reads those parameters and stores them, typically in a cookie or in the browser’s session storage. When the visitor navigates to your contact page and fills in the form, the script writes the stored values into hidden fields on the form. When the form is submitted, those values travel to your CRM alongside the person’s name, email, and message.
The result: your CRM now has a lead record that says “Jane Smith, Marketing Director, arrived via LinkedIn CPC, case study promotion campaign.” Your sales team sees this immediately. Your reporting can now trace revenue back to specific campaigns.
What we typically find on mid-market sites is that forms are built with a tool like Gravity Forms, HubSpot Forms, or a custom implementation, and none of these has hidden fields configured. Adding them is usually straightforward, but it requires coordination between your marketing team (who understands the tracking requirements), your developer (who implements the JavaScript and form fields), and whoever administers your CRM (who creates matching fields to receive the data). It’s a cross-functional task, which is partly why it doesn’t get done.
First Touch vs. Last Touch in Your CRM
A practical decision you need to make is whether to capture first-touch source data (the very first way this person found your site) or last-touch source data (the most recent source before they converted), or both. Our recommendation is to capture both when possible.
First-touch data answers the question “what channels are generating awareness and bringing new people to us?” Last-touch data answers “what channels are driving the final conversion action?” These are different questions with different strategic implications. If your LinkedIn ads generate first touches but your email nurture drives the final conversion, cutting the LinkedIn budget because it “doesn’t generate leads” would be a serious mistake.
Storing both requires two sets of hidden fields and slightly different JavaScript logic. The first-touch values are written once and preserved in a persistent cookie. The last-touch values are overwritten on each new visit. Both sets are submitted with the form. It adds modest complexity but dramatically improves your ability to understand the full journey.
Handling Sources That Don’t Use UTM Parameters
UTM parameters cover links you control: ads, emails, social posts, partner links. But a significant portion of your leads will come from sources you don’t tag, and you need a strategy for those too.
Organic search is tracked automatically by GA4 through the referrer header. You’ll see these as google/organic, bing/organic, and so on. You won’t get keyword-level data in GA4 (Google stopped passing that years ago), but you can get keyword insights from Google Search Console, which you should have connected to your GA4 property.
Organic social (someone shares your link on LinkedIn or Twitter without you adding UTM tags) will usually show up as referral traffic from those platforms. GA4’s default channel grouping handles this reasonably well, but the data is less precise than tagged links. Encourage your team to use tagged links even for organic social posts, not just paid ones.
Referral traffic from other websites (press mentions, directory listings, partner sites) is also tracked automatically via the referrer. But if a referring site uses HTTPS and your site uses HTTPS (as it should), and the referring site has a strict referrer policy, you might lose this data. There’s not much you can do about that except ask partners to use tagged links when they link to you.
Offline sources require a different approach. If you’re running print ads, speaking at events, or doing direct mail, create dedicated landing page URLs (e.g., yoursite.com/event-name) that redirect to your main site with UTM parameters attached. This lets you track offline campaigns with the same system you use for digital ones.

Building Reports That Actually Get Used
Having tracking in place is necessary but not sufficient. The data needs to reach the people who make decisions, in a format they can act on. We’ve seen plenty of companies with technically solid tracking where nobody looks at the lead source data because it’s buried in GA4’s interface and nobody has time to dig it out.
Build a monthly lead source report that shows, at minimum: total leads by source/medium, conversion rate by source/medium, and cost per lead for paid channels. If you can connect CRM data, add pipeline value and closed revenue by source. This is the report that tells you where to invest more and where to pull back.
For most mid-market teams, this report lives in Looker Studio (formerly Google Data Studio) connected to GA4 and, if possible, to your CRM via a connector or data warehouse. The key design principle is that the report should answer the question “where should we spend next month’s marketing budget?” without requiring any additional analysis. If a stakeholder needs to open another tool or run a separate query to answer that question, the report isn’t doing its job.
In our measurement systems guide, we outline how this kind of reporting fits into a broader tracking architecture that’s planned from the start of a website project rather than bolted on afterwards. The principle is the same regardless of when you implement it: define what decisions you need to make, then build tracking that supports those decisions.
Common Mistakes That Corrupt Your Lead Source Data
Even with a solid setup, a few recurring errors can quietly undermine your tracking. Being aware of them helps you catch problems before they distort months of reporting.
Tagging internal links with UTM parameters is surprisingly common and extremely damaging. If you add UTM parameters to links within your own site (for example, a banner on your homepage linking to a product page), every click on that link starts a new session in GA4 and overwrites the original source. A visitor who arrived from a Google ad now appears to have come from “homepage-banner.” Never use UTM parameters on links between pages on your own domain.
Redirects that strip parameters are another silent killer. If a tagged URL passes through a 301 redirect that doesn’t preserve the query string, your UTM parameters disappear. Test every redirect in your tracking chain to confirm parameters survive the journey. This is especially common with link shorteners and vanity URLs that haven’t been configured correctly.
Consent mode gaps are increasingly relevant. If your cookie consent banner blocks GA4 from loading until a user consents, you’ll lose source data for every visitor who doesn’t click “accept.” GA4’s consent mode modelling attempts to fill this gap with statistical estimates, but it’s imperfect. You need to understand what percentage of your traffic is modelled versus observed, and factor that uncertainty into your reporting.
Cross-domain tracking failures affect companies that use a separate domain for their booking system, payment platform, or application form. If a visitor moves from yoursite.com to booking.thirdparty.com and back, GA4 treats this as a new session with a new source (the third-party domain) unless you’ve configured cross-domain tracking. This makes your booking platform appear to be your top “referral” source, which is obviously nonsensical.
What Good Lead Source Tracking Looks Like in Practice
When all of this is working properly, here’s what changes. Your marketing manager opens a dashboard on Monday morning and sees that last week generated 23 leads. Twelve came from organic search, six from LinkedIn ads (split across two campaigns), three from email nurture sequences, and two from a partner referral. The LinkedIn case study campaign generated four leads at £31 each; the LinkedIn brand awareness campaign generated two leads at £88 each. The email sequence targeting webinar attendees converted at 4.2%, significantly above the site average of 1.8%.
Meanwhile, in the CRM, the sales team can see that every new lead has a source field populated automatically. They know before the first call whether someone found the company through search, was targeted by advertising, or was referred by a partner. This context shapes the conversation. It also means the monthly pipeline review can answer the question: “Of the £400,000 in pipeline this quarter, how much originated from each channel?” That’s the question that drives budget allocation, and it’s the question that most mid-market companies can’t answer with confidence.
Getting to this point doesn’t require enterprise-grade tooling. It requires deliberate planning, consistent implementation, and regular validation. Check your tracking monthly. Submit test forms to verify hidden fields are populating. Review your GA4 real-time reports when launching new campaigns to confirm UTM parameters are being captured. Treat your tracking system the way you treat any business-critical process: with regular audits and a low tolerance for drift.
Where to Start This Week
If you’re starting from scratch or suspect your current tracking is unreliable, focus on these steps in order. First, audit your current GA4 setup: are form submissions tracked as conversions? Is there an unusual amount of direct/none traffic? Are any internal links tagged with UTM parameters? Second, create a UTM naming convention and a shared spreadsheet for generating tagged links. Third, add hidden form fields to your lead capture forms to pass source, medium, and campaign data into your CRM. Fourth, build a simple lead source report in Looker Studio that your team reviews monthly. Each of these steps is individually manageable. Together, they transform your ability to understand where leads come from and what to do about it.


