- Marketing and finance disagree because they're measuring different objects: touches vs. closed revenue. A roadmap has to define which number is the source of truth before picking any tool.
- Sequence matters. Fix event tracking and CRM-to-ad-platform data flow before touching attribution models. In my experience, teams often buy an attribution tool to fix what is really a data quality problem.
- Multi-touch attribution and MMM answer different questions at different sales cycle lengths. For a 60-120 day B2B cycle, MTA tells you about channel interaction, MMM tells you about budget allocation. You need both eventually, not one instead of the other.
- Build the roadmap in four phases over roughly two to three quarters: foundation, attribution logic, incrementality testing, executive reporting. Skipping phase one to get to phase three is a common reason the dashboard nobody trusts exists.
The VP of Marketing walks into the QBR with a slide showing several hundred marketing-influenced opportunities last quarter. The CFO has a different number in front of them: a smaller count of closed-won deals, with marketing's fingerprints on maybe half of those, according to the RevOps model.
Nobody in the room can explain the gap without hand-waving. Someone says "attribution windows." Someone else says "the CRM isn't synced right." The meeting ends with an action item to "align on reporting," which means nothing happens for another quarter.
I've sat in versions of this meeting at several SaaS companies over the past few years. The tools were different each time (HubSpot, Salesforce, Marketo, a custom RevOps stack in BigQuery) but the root cause tended to be the same. Nobody had built a measurement roadmap. They'd bought tools in the order the problems became painful, and each tool solved its own narrow slice without anyone deciding what the source of truth actually was.
A measurement roadmap isn't a tool list. It's a sequence of decisions, made in the right order, that ends with marketing and finance looking at numbers that reconcile. Here's how to build one.
Start With the Disagreement, Not the Dashboard
Before you touch GA4, Salesforce, or an attribution vendor, answer one question: what counts as a conversion, and who owns that definition?
In most B2B SaaS companies, marketing tracks MQLs or "marketing-influenced pipeline." Finance tracks closed-won ARR. Sales tracks whatever's in their forecast. These are three different objects being described with the same word: "conversion."
I worked with a mid-sized SaaS company where marketing reported roughly a fifth of pipeline as "influenced," using a 90-day, multi-touch, any-touch model in HubSpot. Finance's model, built by a RevOps analyst in a separate spreadsheet, used a shorter window and required marketing to be present in the first two touches specifically. Two teams, two spreadsheets, two truths. Neither was wrong. They were answering different questions with the same label. This is the same root cause behind why marketing and finance teams see different revenue numbers at most B2B companies, not just SaaS.
Before building any roadmap, get marketing, sales ops, and finance in a room and write down, in plain language, what a "marketing-sourced" or "marketing-influenced" deal means. Attribution window, touch requirement, and revenue recognition point all need to be explicit. If this conversation wraps up in a few minutes, you probably haven't gone deep enough.
The output of this step isn't a tool. It's a one-page document that says: "A deal is marketing-sourced if the first tracked touch was a marketing channel and the deal closed within 180 days of that touch. Revenue counts at contract signature, not at MQL creation." Print it. Put it in the CRM as a field description. Refer back to it every time someone disputes a number.

Phase 1: Fix the Foundation
Many teams try to fix attribution before fixing data quality. That's backwards. An attribution model built on broken tracking just produces confidently wrong numbers instead of obviously wrong ones.
Audit what's actually being tracked
Open GA4 and check whether your key conversion events (demo request, trial signup, contact sales) are firing with consistent parameters across every entry point. I've found demo request forms on pricing pages sending event_name: demo_request while the same form embedded on a blog post sends generate_lead. GA4 sees two different events. Your funnel report undercounts by whatever share came through the blog. If your numbers still look off after fixing this, walk through how to tell if your GA4 attribution is wrong for a more complete diagnostic.
Check UTM discipline next. Pull a report of session source/medium in GA4 for the last 90 days. If you see a large share of sessions showing up as (direct) / (none) outside of branded search and email, your campaign tagging likely has holes. Sales reps sharing untagged links in LinkedIn DMs, paid social ads missing UTMs, email footers linking to the homepage without parameters. These show up as "direct" and get attributed to nothing. If you run marketing across multiple domains or subdomains, also check whether cross-domain tracking is silently losing the session thread, which produces the same symptom.
Fix CRM-to-ad-platform data flow
This is the piece most B2B teams skip, and in my experience it's the one that breaks Enhanced Conversions and Meta CAPI the fastest. If your CRM marks a lead as "closed-won" but that event never fires back to Google Ads or LinkedIn as an offline conversion, your ad platforms are optimizing against form fills, not revenue. You'll get plenty of leads and few of them will close, because the algorithm has no signal telling it which leads were good.
Lead form submit (GA4 event: generate_lead)
↓
CRM creates lead record, tags source/medium from UTM
↓
Sales qualifies → SQL stage change in CRM
↓
CRM webhook fires offline conversion back to Google Ads (GCLID match)
↓
Deal closes → second offline conversion event, deal value attached
If step 4 or step 5 doesn't exist in your stack, build it before doing anything else. Google Ads offline conversion import and LinkedIn's Conversions API both support this. For the Google Ads side specifically, see how to set up server-side tracking for Enhanced Conversions without the common data handling mistakes. In my experience it typically takes a RevOps engineer a couple of weeks to wire up correctly, including GCLID capture and storage on the lead record, though this varies by stack complexity.
Open a lead record in your CRM that came from a Google Ads click. Is there a GCLID field populated? If not, your offline conversion import has nothing to match against, and no amount of attribution modeling downstream will fix it. This is a quick check that can save weeks of wasted work.
By the end of Phase 1, you should have consistent event tracking across GA4, strong UTM coverage across non-branded sessions, and a working closed loop between CRM stage changes and ad platform offline conversions. None of this is attribution yet. It's plumbing.
Phase 2: Pick an Attribution Model That Matches Your Sales Cycle
Once the plumbing works, you can pick a model. The mistake here is picking a model based on what the tool defaults to, rather than what your sales cycle actually looks like.
A B2B SaaS company with a sales cycle of two to three months and multiple touches before a closed deal cannot use last-click attribution and expect it to mean anything. Last-click will hand most of the credit to whatever channel drove the demo request, usually branded search or direct, and erase every touch that built awareness or handled objections earlier in the cycle.
Multi-touch attribution (MTA), done through a tool like HubSpot's attribution reporting, Dreamdata, or a custom model in BigQuery, works when you have enough deal volume and clean touch data across the full journey. As a rough guide, I'd want a meaningful number of closed deals per quarter before trusting channel-level splits from an MTA model. It tells you which channels tend to show up at which stage. It does not tell you what happens if you cut a channel's budget to zero, because it's still a correlational model built on the paths people happened to take.
Marketing mix modeling (MMM) works at a different altitude. It doesn't care about individual touches. It regresses spend by channel against aggregate outcomes (pipeline created, revenue closed) over time, and it can handle channels MTA is blind to: podcast sponsorships, direct mail, brand campaigns, anything without a trackable click. For a SaaS company with a modest paid budget, a full MMM build is usually overkill. As paid spend grows, especially with any offline or upper-funnel spend, it starts to earn its cost. For a fuller side-by-side comparison of when each model actually fits, see multi-touch attribution vs MMM.
The honest answer for most mid-market B2B SaaS companies: run MTA for channel-level operational decisions (should we shift spend from LinkedIn to Google search this quarter) and treat it as directionally useful, not precise. Save MMM or lightweight incrementality testing for the budget-level question (does paid search spend matter at all, or would we get the same pipeline organically).
They answer different questions at different levels of the org chart. A demand gen manager deciding channel mix week to week needs MTA. A CMO deciding next year's budget split needs MMM or incrementality data. Building a roadmap that picks one instead of sequencing both is a common mistake.
Phase 3: Test Incrementality on Your Biggest Spend Line
Attribution models, no matter how sophisticated, describe correlation. They tell you a touch happened before a conversion. They don't tell you the conversion wouldn't have happened anyway.
For B2B SaaS, the channel most likely to be over-credited is retargeting and branded search. Someone searches your company name after seeing a LinkedIn ad, or after a sales rep emailed them, and last-touch or even multi-touch models will often give search credit it didn't earn. This is the same failure pattern documented in a case study on retargeting and incrementality vs. attribution, where attributed performance and actual lift told very different stories.
Run a geo holdout or audience holdout test on your largest non-brand spend line. If you're running LinkedIn Ads to a defined ICP list, split the list into an exposed group and a smaller holdout group, suppress ads to the holdout, and compare demo request rate between groups over a full sales cycle length, not just a few weeks. A longer sales cycle needs a test that runs at least that long, or you're measuring noise.
I ran a version of this test for a mid-market SaaS company running a meaningful LinkedIn budget. Attributed pipeline showed LinkedIn touching a majority of closed deals. The holdout group's demo request rate and the exposed group's demo request rate were close, only a small fractional-point difference, well short of the influence the attribution model implied. The company didn't cut LinkedIn entirely (brand awareness has value the test wasn't designed to capture) but they reduced spend meaningfully and reallocated to outbound, and pipeline didn't move. Results like this will vary by company and channel, but the pattern of attribution overstating a channel's true lift is one I've seen repeatedly.
You don't need this test running constantly. Consider running it periodically on your top spend lines, or any time you're about to make a large budget commitment based on attribution data alone.
Phase 4: Build the Executive Report That Finance Actually Trusts
This is the last phase, not the first, because it depends on everything before it being solid. The report should show three numbers side by side for every period: marketing-sourced pipeline (using the definition you wrote down in step one), sales-accepted pipeline, and closed-won revenue, broken out by the same channel taxonomy across all three.
Build it in whatever BI tool finance already trusts, not a marketing-only dashboard they've never opened. If finance lives in a Looker or Tableau instance built off the data warehouse, put the marketing numbers there. Don't ask them to log into HubSpot.
The report works when the CFO can trace a number back to its definition without asking marketing to explain it live in a meeting. That's the actual goal of the whole roadmap: not a bigger number, a number nobody has to defend.
What to Do Monday Morning
Don't start by evaluating attribution vendors. Start by pulling GA4's source/medium report for the last quarter and checking what percentage of sessions show up as (direct) / (none). Then open a handful of CRM lead records sourced from paid channels and check whether GCLID or click IDs are actually populated.
If either of those checks turns up gaps, you have your Phase 1 work list. Fix that before you sign a contract with an attribution vendor. The roadmap only works in order.