Skip to main content

← insights

b2b marketing attribution: models, setup, and what to trust

Mishaal Murawala··

Marketing attribution models compared, plus the setup that survives a board deck: form to CRM to opportunity, gclid loss, and reconciling GA4.

Marketing attribution assigns credit for a conversion across the touchpoints before it. It uses a defined rule. That is the whole definition. Everything else is argument about which rule.

I have had to defend an attribution number in a board deck. Not present it. Defend it, against a CFO with the CRM open on his own laptop. That experience produced the position I hold now. It is not the one most attribution vendors sell.

Multi-touch models are useful for allocating budget. They are useless as proof. What you defend in a board meeting is the measurement-independent record. A form submission became a CRM record. That record became an opportunity. That opportunity has an amount and a close date. That chain survives a tag breaking. A model does not.

What is marketing attribution

Attribution answers one question. Of the interactions a buyer had before converting, which ones get credit, and how much. The rule you pick is the attribution model. The rule is a choice, not a discovery.

Three things make B2B harder than the ecommerce case attribution was designed for.

The buying committee. In complex B2B purchases, five to eleven people join the decision. Attribution tracks browsers, not committees. The person who filled the form is frequently not the person who signs. Your model credits a cookie. Your revenue came from a group.

The lag. A mid-market SaaS deal closes 90 to 180 days after first touch. Cookie lifetimes, session windows, and lookback windows are usually shorter than that. The touch that started the deal is often outside the window that gets to score it.

The dark middle. Buyers research independently. Slack groups, peer calls, a podcast, a competitor's G2 page. None of it is instrumented, and none of it will be. Attribution measures the instrumented slice. Then it reports that slice as if it were the whole.

So attribution modeling is a bookkeeping convention applied to the subset of behavior you happened to capture. Treat it that way and it becomes useful. Treat it as truth and you will lose the room. That happens the first time someone checks it.

Attribution is an accounting rule applied to partial data. It is not evidence of causation, and a good CFO knows the difference.

The attribution models explained

Six models cover almost everything you will meet. Each one rewards a different part of the funnel. Each one lies in a specific, predictable way.

ModelHow credit splitsWhat it rewardsWhen it lies
First-touch100% to the first interactionTop-of-funnel demand creation, brand, SEOIgnores everything that closed the deal; makes awareness look self-sufficient
Last-touch100% to the final interaction before conversionBottom-of-funnel capture, branded search, retargetingCredits the closer for work the opener did; breaks entirely when the final click is untracked
LinearEqual credit to every interactionBreadth of contributionTreats a webinar and a pricing-page visit as equally decisive; flattens real signal
Time-decayMore credit the closer to conversionLate-stage nurture and sales-adjacent touchesSystematically undervalues the channel that created the demand
U-shaped / W-shapedMilestone-weighted rules across defined funnel stagesNamed funnel milestonesThe weights are assumptions; record and defend them before allocating credit
Data-drivenAlgorithmic, from observed conversion pathsEmpirically frequent contributing pathsNeeds conversion volume; is a black box you cannot reproduce by hand

The U-shaped and W-shaped row describes legacy or custom theory, not a claim that every vendor currently supports it. HubSpot now lists First Touch, Last Touch, Linear, Time Decay, and Empirical; its Empirical model replaced the U-shaped, W-shaped, J-shaped, and Inverse J-shaped models (HubSpot). Google Ads has consolidated hard in the other direction. Its help documentation states that four models are no longer supported. Those are first click, linear, time decay, and position-based. It states that data-driven is the default model for most conversion actions.

That consolidation matters. The platforms are moving toward algorithmic credit for a reason. The rule-based models were never defensible. You cannot argue with a black box. You also cannot audit one.

Single-touch vs multi-touch attribution for B2B

The first touch vs last touch debate is the wrong debate. Both are single-touch models. Both are wrong in the same way. They assign 100% of credit to one moment. That process took six months and eight people.

Multi-touch attribution is more honest about the shape of a B2B purchase. It is still not proof. Here is the distinction I hold to, and the one I put in front of a board.

Use multi-touch for allocation. Say you are deciding where next quarter's incremental $50K goes. A multi-touch view of which channels appear in winning paths is genuinely informative. It is a prior, and a prior beats a guess. If a channel never appears in any closed-won path, that tells you something real.

Do not use multi-touch for proof. Take the question "did marketing generate this revenue." The answer comes from the CRM record, not the model. Sourced pipeline means a first known marketing touch on the record. That record became the opportunity. Influenced means any marketing touch in the trailing window. Both are countable from records. Neither requires a weighting scheme anyone has to agree with.

This is the same discipline I apply to lead definitions. I do not report MQLs, for exactly parallel reasons. A model-derived score is not an event, and an event is what survives scrutiny. Attribution percentages and MQL counts fail under the same pressure. That pressure is someone asking where the number came from.

How to set up attribution that survives a board deck

Four things, in this order. Skip one and the rest do not hold.

1. Fix the form to CRM to opportunity chain first. This is the anchor. Every conversion event that matters should produce a durable CRM record. That record needs the original context stamped on it at creation. Stamp first URL and first referrer. Stamp UTM parameters, the form identifier, and a timestamp. Stamp on creation, never on update. Update overwrites the origin story with the most recent visit. Those stamped fields are measurement-independent. If GA4 stops firing tomorrow, the record still says where the contact came from. That is the property that makes a number defensible.

2. UTM and gclid hygiene. One naming convention, enforced, documented, with a validator on the way in. Normalize only the human-chosen UTM vocabulary: fixed lower-case values for source and medium. Preserve opaque click and record IDs byte for byte. Google says GCLID is case sensitive (Google Ads). And be careful with one distinction: a landing-page path is not a paid query parameter. I have watched a classification script label leads "paid" on the wrong evidence. The URL merely contained a campaign landing-page slug. The actual paid parameter was absent. The script said fourteen paid leads. The raw field values said zero. Say your classifier reads a path substring instead of gclid= or utm_medium=cpc. Then your paid number is fiction.

3. Understand what consent mode does to your data. The result depends on the implementation and storage settings. Basic consent mode blocks Google tags until consent. Advanced consent mode can send cookieless measurements while consent is denied and use modeling. With ad_storage denied, Google tags cannot write or read advertising cookies; identifier handling changes again if ads_data_redaction is enabled (Google). Do not infer that a particular CRM record lost or retained gclid from consent alone. Inspect the consent implementation, storage state, landing URL, and stored field. Last-touch still degrades when the final click cannot be tied to the record; ad blockers and cross-device journeys can create the same gap.

4. One source of truth, declared in writing. The CRM is the record. GA4 is a behavioral instrument. Google Ads and LinkedIn are platform-reported optimization signals. When they disagree, the CRM wins for revenue questions. The platforms win for questions about their own auction. Write that down before the quarter, not during the board meeting.

Do these four and the number you present has a lineage. Someone can pull the record, read the stamped fields, and reproduce your count by hand. That is what "defensible" actually means. It is the same standard I apply to marketing ROI measurement generally.

HubSpot marketing attribution and Salesforce attribution: what each can and cannot do

Both are capable. Both are frequently misconfigured. Know the boundaries before you promise a board anything.

HubSpot marketing attribution. HubSpot's documentation describes attribution reporting. It shows the interactions contacts have along the customer journey. It lists Contact Create Attribution, Deal Create Attribution, and Deal Revenue Attribution as distinct report types. Deal Revenue Attribution measures impact on deal revenue. It covers sources, assets, and interactions. The docs state that Deal Create Attribution and Deal Revenue Attribution are available on Marketing Hub Enterprise accounts only. Reports include up to 20 million interactions after sampling. Each report uses a defined set of interaction types. Those decide what is eligible for credit.

What that means operationally. HubSpot will happily give you a multi-touch revenue view. But only if the deal is associated to the contacts whose interactions you want credited. Association hygiene is the whole ballgame. Say a deal is attached to one contact when six people engaged. It produces a confident, wrong picture. Also note the tier gate. If you are on Professional, revenue attribution is not available to you. Any plan that assumes it will stall.

Salesforce Campaign Influence. Customizable Campaign Influence connects campaigns and opportunities through influence records. Its default Primary Campaign Source model gives all credit to the campaign in that opportunity field. Custom models let you set influence percentages; a locked custom model accepts updates through the API. Standard-model auto-association uses configured eligibility criteria. Those rules do not apply to custom models (Salesforce).

Campaign Influence alone does not establish a web-session journey. My implementation rule is to inspect how the particular stack supplies first referrer, landing page, and click identifiers to CRM records. A connected product or integration may supply them; the campaign report cannot prove that capture worked. Reproduce the chain before promising a board a channel number.

HubSpot's journey reports and Salesforce's campaign-to-opportunity reports allocate credit from the records available to them. Neither report establishes causal lift. Contact associations, campaign membership, and the origin fields need their own verification.

Marketing attribution software: when a tool helps

A dedicated attribution tool is worth buying under narrow conditions.

It helps when you have real volume, meaning hundreds of closed-won deals a year. Data-driven modeling needs paths to learn from. It helps when spend across channels is large enough that a 10% misallocation matters. It helps when you already have clean CRM plumbing. A tool ingests your data and cannot repair it.

It does not help when your form-to-CRM chain is broken. It does not help when your UTMs are inconsistent. It does not help when your deals are not reliably associated to the contacts who engaged. In those cases the tool produces a more expensive wrong answer. It arrives with better charts. I have never seen an attribution platform fix a data-hygiene problem. I have seen several obscure one.

The build-versus-buy read. Your questions may be which channels appear in winning paths, and how the mix has shifted. A CRM report and a quarterly pull answer them. Your question may be "what is the marginal return on the next dollar." No attribution tool answers that either. That is an incrementality question. It needs a holdout test, not a model.

Reconciling Google Ads, GA4 and the CRM

These three systems will not agree. Each counts a different thing over a different window with a different rule. The divergence is by design.

Google Ads' Conversions column counts primary conversion actions and may include modeled conversions. It normally reports those values to the ad-interaction date; by conv. time columns use the conversion date. View-through conversions belong in View-through conversions and All conversions, not Conversions (Google Ads). GA4 offers Data-driven, Paid and organic last click, and Google paid channels last click in its attribution reports. The fallback to Paid and organic last click applies specifically to the Google paid channels last click model when there is no Google Ads click in the path (Google Analytics). The CRM counts records and opportunities on the date they were created. It uses no attribution model at all.

Here is a worked example. These numbers are illustrative, not from a client account.

SystemReported demo requests, one monthWhy it differs
Google Ads Conversions62Illustrative primary conversion actions; modeled conversions may be included; click-date basis
GA4 key event report48Illustrative event count; report, attribution model, and date basis must be recorded
CRM (raw form submissions)71Illustrative raw submissions; require deduplication, spam, and acceptance tests
CRM (paid identifier present)39Illustrative identifier coverage under a documented gclid/UTM rule

Read this the way I would in a review. The CRM count of 71 is a raw submission count, not a true demo-request count until deduplication, spam, and acceptance tests are complete. GA4's 48 may differ because of consent and storage behavior, event definition, attribution model, or date basis; the records decide which applies. Google Ads' 62 is not comparable until you confirm the primary conversion actions, goal filters, reporting column, and date basis. The 39 with a paid identifier present shows identifier coverage under the stated rule. It does not establish a causal paid-attribution floor. Test the landing URL, consent implementation, stored fields, and CRM joins before treating any difference as a measurement failure.

The gap between 62 and 39 is a coverage question: do the platform action, landing identifier, and CRM record describe the same population? If the gap grows quarter over quarter, inspect the conversion goals, identifier capture, consent implementation, and CRM joins before changing how you report. Do not pick whichever number flatters the channel.

The rule I hold to: never average across systems. When two systems disagree materially, pull the raw records. Let the field values settle it. The discrepancy is data about your measurement. It is usually the most useful thing on the page.

Budget-to-pipeline reconciliation worksheet

Use this worksheet to document aggregate CRM, Google Ads, and GA4 counts. It keeps sourced and influenced pipeline separate and exports the declared inputs. It does not verify records, prove causation, calculate cash return, or recommend budget.

Budget-to-pipeline reconciliation worksheet

Use aggregate totals to document the record chain. This computes bookkeeping ratios, not causal ROI, cash return, or a budget recommendation.

Mode: Blank

The example is illustrative: 62 Ads, 48 GA4, 71 CRM, and 39 identifier-covered records. It remains synthetic after edits until you reset it. This calculator cannot verify records.

CRM and budget ledger
Platform context

Keep platform reports separate. They are context, never an opportunity denominator.

Reader declarations

Spend per accepted sourced opportunity

Unavailable

Sourced pipeline / spend bookkeeping ratio

Unavailable

CRM identifier coverage

Unavailable

Decision status: Complete the missing inputs and reader declarations.

Platform comparison: Reporting metadata is incomplete.

Influenced pipeline is displayed as context and is never added to sourced pipeline. Google Ads and GA4 counts are never summed, averaged, or substituted for CRM opportunities.

  • Marketing spend is unknown.
  • Accepted marketing-sourced opportunities is unknown.
  • Sourced pipeline is unknown.
  • Influenced pipeline is unknown.
  • CRM raw form records is unknown.
  • CRM identifier-covered records is unknown.
  • Google Ads count is unknown.
  • GA4 count is unknown.
  • Scope is unknown.
  • Currency is unknown.
  • Period is unknown.
  • Accepted opportunity definition is unknown.
  • Sourced pipeline definition is unknown.
  • Influenced pipeline definition is unknown.
  • Declare source validation and cohort, currency, and date alignment before CRM ratios.
  • Record each system’s reporting date basis and counted object before comparison.

Google Ads reports a selected conversion column and goals; fractional credits can occur. GA4 requires a named report, metric, key event, model, and date basis. See Google Ads documentation and GA4 attribution documentation.

What I actually put in the board deck

Three numbers, none of them a model output.

Marketing-sourced pipeline. I count it from CRM records with a first marketing touch stamped at creation. Marketing-influenced pipeline. I count it from records with any marketing touch in the trailing window. I report that one separately so nobody adds them. And acquisition efficiency, expressed as CAC payback months. That number connects marketing spend to cash.

Underneath those, one slide on measurement health. It shows consent rate and the CRM-to-platform gap. It also shows the share of paid records carrying a click identifier. That slide is what buys you credibility for the three above it. A CFO who sees you naming your own measurement limits stops looking for the ones you hid.

Multi-touch model output goes in the appendix, labeled as an allocation aid. It informs where the next dollar goes. I do not offer it as proof or defend it as proof, which is precisely why nobody attacks it.

Attribution done this way is boring. Boring survives the meeting. If you want this applied to your own stack, that is what the growth diagnostic is for. It is the same measurement work I run inside a marketing leader engagement.

Sources

Class A (vendor and platform documentation)

Class C (operator judgment, labeled)

  • [Mishaal's judgment] The four-step setup sequence and the "never average across systems" rule come from direct engagement work, not from published research.
  • [Mishaal's judgment] The reconciliation table numbers are illustrative and constructed to show the shape of a typical divergence. They are not from a client account.
  • [Mishaal's judgment] The path-substring classifier failure described in the UTM section is a real defect pattern I have debugged, generalized here without client identifiers.

BOOK A WORKING SESSION

A number you can defend beats a model you cannot.

If your attribution breaks the moment someone opens the CRM, the fix is the record chain, not a better model. The diagnostic finds which link is broken.

Numbers that belong in the board deck
3
Setup steps before any model is worth running
4
Model outputs I present as proof
0

frequently asked questions.

What does the budget-to-pipeline worksheet calculate?

It documents aggregate spend, accepted marketing-sourced opportunities, sourced pipeline, and identifier coverage. Its ratios are bookkeeping aids, not causal ROI, cash return, or a budget recommendation. It keeps Google Ads and GA4 counts as separately named context and does not average or add them to CRM opportunities.

What is marketing attribution?

Marketing attribution assigns credit for a conversion across the touchpoints before it. It uses a defined rule. That rule is the attribution model. It is a bookkeeping convention applied to the behavior you managed to capture. It is not a measurement of what caused the revenue.

What is the difference between first touch and last touch attribution?

First-touch gives 100% of credit to the first interaction. It rewards demand creation. Last-touch gives 100% to the final interaction before conversion. It rewards demand capture. Both are single-touch models. Both assign all credit to one moment in a process that often took six months. That process also involved several people.

Is multi touch attribution reliable for B2B?

It is reliable enough for allocation and not reliable as proof. Multi-touch views tell you which channels appear in winning paths. That is a useful prior for budget decisions. They cannot prove marketing generated revenue. The weights are arbitrary and the buying committee is not tracked.

Why do Google Ads, GA4 and my CRM report different numbers?

Because each can count a different thing over a different window. Google Ads `Conversions` counts primary conversion actions and normally uses the ad-interaction date. GA4 must be named by report, attribution model, event, and date basis. The CRM counts records created with no attribution model. A large gap is a record-level investigation, not a number to average.

What does gclid loss do to attribution?

Do not infer click-identifier loss from consent alone. It depends on the consent-mode implementation, storage settings, landing URL, and any redaction setting. Ad blockers and cross-device journeys can also interrupt the chain. Count identifier coverage under a documented rule, then inspect the raw landing and CRM records; that count does not prove paid causation.

When is marketing attribution software worth buying?

When you have hundreds of closed-won deals a year. When spend is large enough that a 10% misallocation matters. And when a clean form-to-CRM-to-opportunity chain is already in place. A tool ingests your data and cannot repair it. If the plumbing is broken, the platform produces a more expensive wrong answer.

talk to me

tell me what needs to move.

I will come to the call ready to tell you what I would do first.