When a B2B services client came to us, they were running paid ads on Google and Meta, posting on LinkedIn, and sending a monthly email newsletter. Traffic was coming in. Leads were being logged. But when we asked which channel was bringing in paying customers, the honest answer was: nobody knew.
Their CRM had contact records. Their ad platforms showed clicks and conversions. But the data lived in separate silos, and there was no reliable way to trace a closed deal back to the first touchpoint that started the conversation. Marketing decisions were being made on gut feel and vanity metrics.
This is not unusual. It is, in fact, the default state for most SMEs running multi-channel campaigns. The fix requires some setup work upfront — but once it is in place, every lead carries a clear origin story.
The Problem: Clicks ≠ Customers
Ad platforms are optimistic by design. Google Ads will show you conversions based on its own attribution model. Meta will claim credit for purchases that happened days after someone scrolled past your ad. LinkedIn will count a form fill as a win regardless of whether that lead ever became a customer.
When you rely solely on platform-reported data, you are seeing what each platform wants you to see — not what your business actually earned from each channel.
The only way to get an accurate picture is to build your own measurement layer, independent of the platforms, and connect it directly to your CRM where actual revenue lives.
What We Set Up
1. A Consistent UTM Taxonomy
The first step was agreeing on a UTM naming structure and enforcing it across every channel. This sounds simple, but most teams have years of inconsistent tagging to untangle — campaigns named differently by different people, missing parameters, and duplicates that make filtering in Google Analytics 4 nearly impossible.
We defined five parameters and documented the exact values to use for each channel:
- utm_source — the platform origin (google, meta, linkedin, newsletter)
- utm_medium — the channel type (cpc, organic-social, email)
- utm_campaign — the campaign name, standardised with a date format
- utm_content — the specific ad or creative variant
- utm_term — keyword, for paid search
Every link leaving the ad platforms, every email CTA, every LinkedIn post going to a landing page — all were tagged before going live. We also built a shared UTM builder in a simple spreadsheet so the client’s team could generate consistent links without guessing.
2. Tracking Links for Offline and Partner Sources
Not all traffic arrives from paid channels. This client had referral partners, an occasional guest article, and a podcast appearance in the pipeline. For these sources, we set up dedicated landing page URLs — clean redirects that passed UTM parameters automatically — so that even word-of-mouth traffic from a specific source could be identified separately from general direct traffic.
This distinction matters. „Direct” traffic in GA4 is a catch-all that swallows a lot of attribution. Wherever we could add a trackable link, we did.
3. Passing UTM Data into the CRM on Form Submission
UTMs are only useful at the customer level if they travel with the lead record. We added hidden fields to every web form that captured the UTM parameters from the URL and stored them alongside the contact’s name and email when they submitted.
This meant that when a lead landed in the CRM, their record immediately showed where they came from — which platform, which campaign, and which specific ad or content piece drove that visit. No manual tagging. No guessing after the fact.
For this client’s setup, we also captured the first-touch source separately from the last-touch source, so the team could see both the channel that introduced a prospect and the channel that brought them back to convert.
4. CRM Pipeline Reporting by Source
With source data reliably attached to contact records, we built a simple pipeline view filtered by acquisition channel. The sales team could now see, at any stage of the funnel, how many deals originated from Google Ads versus LinkedIn versus the newsletter.
More importantly, they could see which sources produced deals that actually closed — not just leads that entered the pipeline and stalled. This distinction changed how the client evaluated channel performance almost immediately.
What Changed After Setup
Within the first full quarter of running with clean attribution, the client had a clear view they had never had before. Some channels that looked strong on ad platform dashboards were contributing very few actual customers. One channel that had seemed low-volume by click count was closing a disproportionate share of deals.
Budget decisions stopped being arguments and started being data conversations. The marketing and sales teams were looking at the same numbers, pulled from the same source of truth.
The setup itself took a few weeks to implement correctly and another month to validate before anyone trusted the data fully. That patience was necessary — rushing attribution setup tends to produce confident-looking numbers that are quietly wrong.
What This Kind of Setup Requires
To replicate this, you need three things working together:
- Consistent UTM tagging on every outbound link, without exception
- A mechanism to pass UTM data into your CRM at the point of lead capture
- CRM reporting that surfaces deal outcomes by source — not just lead volume
The technology involved is not complex. What makes it work is discipline around naming conventions and a willingness to treat the CRM as the final authority on what counts as a result — not the ad platform dashboards.
If your business is spending on multiple channels and you cannot currently answer the question „which channel brought us our last ten customers,” this is the gap worth closing before you adjust any other part of your marketing.
Back to Blog