Open your ad platforms side by side at month-end and you will witness a small act of fiction. Google Ads claims 180 conversions. Meta claims 140. Your CRM says you closed 95 deals total. Add the platforms together and they have already sold you twice the pipeline you actually have. Each dashboard is internally honest and collectively false — and the gap between them is where marketing budgets quietly go to die.
This is the attribution trap. It is not a tooling problem you can buy your way out of, and it is not solved by the next pixel or the next connector. It is a measurement-design problem. Until you decide — deliberately — how credit is assigned, every platform will decide for you, generously, in its own favor. The job of attribution is not to make the numbers bigger. It is to make them agree on what is true.
Why last-click lies
Last-click attribution is the default in most analytics setups because it is simple and it feels objective: the final touch before conversion gets the credit. The problem is that the final touch is almost never the touch that did the work. A buyer reads your founder's post on LinkedIn, sees a retargeting ad twice, asks a peer, returns three weeks later by typing your name into Google, and converts. Last-click hands 100% of that revenue to branded search — a channel whose only real job was to be the door the buyer already intended to walk through. The consequence is predictable and expensive: branded search and direct traffic look like heroes, while the channels that actually created demand — content, social, the dark-funnel conversations you can't see — look like waste. Teams then cut the very top-of-funnel spend that fed the pipeline, watch branded search hold steady for a quarter on momentum, then watch the whole machine cool down two quarters later with no obvious culprit. Last-click doesn't just mislead; it inverts your priorities.
The final touch before a conversion is rarely the touch that earned it. Measuring only the door tells you nothing about who built the road.
Why six channels each over-report
Here is the structural reason your dashboards will never reconcile on their own: every advertising platform measures conversions through its own narrow window, and every platform counts a conversion it can plausibly claim. Meta uses a 7-day-click, 1-day-view window by default; Google attributes across its own data-driven model. Each one looks only at journeys that passed through itself, and each one says 'yes, that was me.' So when the same buyer touched Meta, Google, and a paid newsletter on the way to purchase, all three book the sale. None is lying within its own four walls — they simply have no visibility into each other. Sum them and you get phantom revenue. We routinely see clients whose platform-reported conversions add up to 160–220% of the deals their finance team actually recognized. That over-count is not random noise you can average away; it is systematic, biased toward whichever platform has the most aggressive attribution window, and bigger ad budgets make the distortion worse, not better.
The 'unknown' lead-source problem
Then there is the channel that quietly wins in almost every B2B CRM: Unknown. Direct. None. Pull a lead-source report and you will often find that the single largest bucket is the one nobody can name — for considered B2B purchases it commonly sits between 30% and 60% of pipeline. That is not a missing UTM tag. It is the visible scar of everything attribution can't see: word of mouth, a podcast mention, a Slack community, a forwarded email, a buyer who researched on their phone and converted on a laptop the system treats as a stranger. The instinct is to treat 'unknown' as a hygiene failure — add more tracking, enforce more UTMs, scold sales for blank fields. Some of that helps. But a large unknown bucket is also a signal in its own right: it usually means real, working demand generation is happening in channels that don't fire a click. Pretending you can pixel your way to zero unknown is its own trap. The defensible move is to size it, model it, and stop pretending the named channels deserve the credit the unknown ones earned.
What a defensible multi-touch model looks like
A defensible model starts from one non-negotiable principle: there is exactly one denominator, and it comes from your system of record — your CRM and your finance numbers, not the ad platforms. You decide how many closed deals and how much revenue exist first. Then, and only then, do you distribute credit for those deals across touchpoints. The platforms become inputs to the model, never the scoreboard. From there, choose a credit rule you can defend out loud to a skeptical CFO. The pragmatic options, in rising order of effort:
- Position-based (40/20/40): credit the first touch that created awareness, the last touch that closed, and spread the rest across the middle. Honest, transparent, and good enough for most teams under a few hundred deals a month.
- Time-decay: weight touches nearer the conversion more heavily. Useful for short, fast sales cycles where recency genuinely matters.
- Data-driven (algorithmic): let a model learn credit weights from your own conversion paths. Powerful at scale, but only trustworthy once you have the volume and clean tracking to feed it — otherwise it launders guesswork as math.
The model you pick matters less than the discipline around it. Document the rule, apply it the same way every month, and reconcile to the one denominator. A simple, consistent, explainable model beats a sophisticated one nobody trusts — because the entire point of attribution is to settle arguments, not start new ones.
Server-side tracking: fixing the input, not just the math
No credit model survives bad inputs. Browser-based tracking — the client-side pixel — is now losing a meaningful share of events to ad blockers, ITP and cookie restrictions in Safari, consent rejection, and the simple fact that a lost network request is a lost conversion. When 15–30% of your events never arrive, even a perfect model is computing on a partial signal. Server-side tracking closes much of that gap. Instead of trusting the browser to phone home, your server captures the event and forwards it — via a server container, the Conversions API, or your warehouse — with first-party data you actually control. The payoff is twofold: more complete event capture, and a stable identity spine you can stitch across sessions and devices. Done right it is more privacy-respectful, not less, because you decide exactly what leaves your systems and you honor consent at the source. Think of it as cleaning the lens before you argue about what the telescope sees.
A practical path to one source of truth
You do not need a six-month data project to escape the trap. The sequence that works in practice: First, declare the system of record — CRM revenue is truth, full stop. Second, stand up server-side capture so your inputs stop leaking. Third, pick one multi-touch rule and write it down. Fourth, build a single dashboard that reconciles platform-reported conversions against recognized revenue, and surface the over-count explicitly so everyone can watch the fiction shrink. Fifth, give 'unknown' a permanent seat at the table — measure it, and use self-reported attribution ('How did you hear about us?') at the point of conversion to triangulate what tracking can't catch.
The goal is not perfect attribution; perfect attribution does not exist, and chasing it is how teams spend a year building dashboards instead of growing. The goal is one defensible bearing the whole company steers by — a number marketing, sales, and finance stop arguing about and start acting on. That is the difference between a dashboard that decorates a meeting and an instrument that charts a course. Get the denominator right, clean the inputs, agree on the rule, and the disagreement that has haunted your reporting stops being a crisis. It becomes a settled fact you can finally build on.