Skip to main content

← insights

hubspot marketing attribution: setup, models, and limits

Mishaal Murawala··

HubSpot marketing attribution: the three report types, the models, the setup, and the limits.

HubSpot marketing attribution splits credit across the touches before a contact or a sale. Contact Create Attribution ships with Marketing Hub Professional. Deal Create Attribution and Deal Revenue Attribution are Marketing Hub Enterprise only (HubSpot).

That settles most of the confusion I see. The rest of this piece is the part nobody documents. Which numbers I let a board see. Which ones I keep for internal allocation. And the property hygiene that decides whether any of it survives a CFO.

I spent fifteen years leading B2B marketing, including senior leadership at PE-backed companies. Attribution was never a reporting problem. It was a naming problem, a consent problem, and a reconciliation problem.

What HubSpot marketing attribution reports measure

HubSpot ships three attribution report types. They answer three different questions.

HubSpot names the target of each report type. Contact Create Attribution measures sources, assets, and interactions that affect generating contacts. Deal Create Attribution does the same for deals. Deal Revenue Attribution does it for deal revenue (HubSpot).

The tier split matters before you plan anything. Contact Create Attribution is on Marketing Hub Professional and Enterprise. It is also on Content Hub Professional and Enterprise. Deal Create Attribution and Deal Revenue Attribution both require Marketing Hub Enterprise (HubSpot).

Say you run Professional and someone asks for Deal Revenue Attribution. That is a contract change. I have watched two quarters go into a workaround that a tier upgrade solves in a day.

A conversion path in HubSpot is a sequence of interactions. Which interactions count is configurable. Record the selected interaction types before you interpret a report; the current report configuration determines what is eligible for credit.

That default set is a decision someone made for you. Review it before you trust a chart.

The attribution models in HubSpot

HubSpot currently supports five models (HubSpot).

ModelHow credit splitsWhat I use it for
First Touch100% to the first interaction in the pathDemand creation. Which channel starts conversations.
Last Touch100% to the last interaction before conversionConversion mechanics. Which asset closes a form.
LinearEqual credit to every interaction in the pathA sanity check against the two extremes above.
Time DecayMore credit to interactions closer to conversionA check for short-cycle motions and paid tests.
EmpiricalWeight based on how often each interaction type occurs across conversion pathsA diagnostic view of which interaction types are distinctive in the observed paths.

Empirical replaced HubSpot's U-shaped, W-shaped, J-shaped, and Inverse J-shaped models. It uses historical interaction data to weight interaction types: less frequent types can receive more weight, while individual interactions of the same type receive equal weight (HubSpot). That does not make the result causal proof. It tells you how the observed paths are configured.

A model is a question. Pick the model that matches the question you are being asked.

How to set up attribution in HubSpot

Order matters. Most failures I get called into are sequencing failures, not tooling failures.

  1. Confirm the tier. Professional gets Contact Create Attribution. Deal Create Attribution and Deal Revenue Attribution require Marketing Hub Enterprise (HubSpot). Confirm before you scope.
  2. Verify the tracking code on every property. Attribution needs the HubSpot tracking code on the landing page. Touches without a tracking URL pointing at a coded page are not counted (HubSpot).
  3. Fix the UTM convention before you build a report. Highest leverage step. The naming rule is below.
  4. Choose interaction types deliberately. Turn on marketing event attendance if you run events. Turn on custom behavioral events if you have them. Both are off by default (HubSpot).
  5. Build the report and select two or more models. HubSpot compares models side by side in one report (HubSpot). A single model looks authoritative and is not.
  6. Wait for reprocessing. Changing interaction types forces a reprocess that "may take up to two days" (HubSpot). Do not diagnose a report you changed this morning.

The property naming convention that makes it work. UTM source is the platform. UTM medium is the mechanism, from a closed list you never extend casually. UTM campaign carries a program code plus a quarter, not a phrase. Lowercase everything. Hyphens only. No spaces, no ampersands.

Then create one custom contact property, first_touch_program. Populate it once on contact create. Never overwrite it. HubSpot's native source properties will churn. Yours will not. That frozen property is how you reconcile HubSpot against Google Ads six months later.

Contact Create vs Deal Create vs Deal Revenue Attribution

These are different objects with different failure modes.

Contact Create Attribution answers which touch produced a known contact. It is the most complete of the three. It depends on the fewest downstream records. It also flatters channels that harvest existing demand.

Deal Create Attribution answers which touches preceded a deal record. It carries a hard dependency on complete deal and contact history. Teams that create the deal first and attach contacts later leave an evidence gap that no attribution model can repair retroactively.

Deal Revenue Attribution answers which touches preceded closed money. It has the strictest data requirements. Deals missing an Amount, a Create date, or a Close date are excluded. Contacts with no associated deal are excluded. Sales activities not linked to both a contact and a deal are excluded (HubSpot).

Read that exclusion list as an operator. Every deal closed without a clean Amount field is invisible here. Not wrong. Invisible. So a Deal Revenue Attribution report is partly a report on your CRM hygiene. The chart alone cannot separate the two.

There is also a sampling ceiling. HubSpot includes up to 20 million interactions per report after sampling. At high volume, it samples high-frequency interactions such as email interactions and page views; lower-volume form submissions, calls, and meetings are not sampled (HubSpot). Treat a report at that scale as an analysis of a documented sample, not an exhaustive ledger.

The limits, and the workarounds I use

Offline touches are invisible unless you make them visible. The report ignores outside revenue and touches with no URL to a tracked page (HubSpot). Workaround: give every offline motion a tracked destination. A conference talk gets a vanity URL with UTMs. A partner referral gets a tracked landing page. No tracked entry point means it does not exist to the model.

Imported and manually created contacts have no history. Say a contact was created manually, imported, or synced. HubSpot cannot attach page views to that record. Not until they submit a HubSpot form with tracking allowed. Or click a tracked marketing email (HubSpot). Workaround: stamp first_touch_program at import time from the list source. Not a page view, but a defensible origin label.

Cookie consent changes the evidence chain. A deleted cookie can create a new browser identity. Consent configuration also changes which tags, storage, and signals are available. Workaround: preserve the CRM record and its original campaign fields, then inspect the implementation and raw fields before assigning the gap to consent. A form submission may restore an identity for an operating workflow; it does not recreate an unobserved path.

Multi-domain paths fragment. One prospect crosses your marketing site, your docs subdomain, and a microsite. That is three cookie contexts. Unless the tracking code and cross-domain setup match everywhere. Workaround: audit the tracking code on every subdomain quarterly. It drifts silently after every migration.

Retroactivity is limited. Add code to attribute knowledge articles. Only new touches get the new type. HubSpot does not update previous ones (HubSpot). Workaround: treat every attribution config change as a cohort boundary. Never compare across it.

HubSpot vs Salesforce attribution

The architectures differ in a way that decides which tool you reconcile against.

HubSpot models credit at the interaction level from eligible tracked behavior. Salesforce Customizable Campaign Influence connects campaigns and opportunities through influence records. Its default Primary Campaign Source model assigns all credit to one campaign. Custom models allow influence percentages; locked custom models accept API updates. Standard-model auto-association uses configured criteria, and those rules do not apply to custom models (Salesforce).

Inspect the actual Salesforce products and integrations before describing behavioral coverage. Campaign Influence alone does not establish a web-session journey. It also cannot prove that a form, integration, or custom field captured the original referrer and click identifier.

Is Salesforce your revenue system of record? Then you reconcile HubSpot against Campaign Influence. The key is the campaign, not the interaction. Which is why campaign naming has to match in both systems from day one.

For the model-agnostic version of this argument, see B2B marketing attribution. The tooling changes. The failure modes do not.

What I do with the numbers

Here is the allocation I run, and the line I hold.

What I trust for budget allocation. First Touch and Last Touch, side by side, on Contact Create Attribution, split by ICP. Say First Touch credits paid search with creating demand. Say Last Touch credits organic with closing it. That gap is the real finding. I move budget on directional gaps, never on decimal points.

What never goes in a board deck. A single-model Deal Revenue Attribution number presented as fact. It carries documented exclusions, a sampling ceiling, and consent-sensitive inputs. Calling that precise revenue causation is how a marketing leader loses a CFO permanently. What does go in the deck: pipeline sourced and pipeline influenced. Both defined in writing. Both stable for four quarters.

How I reconcile with Google Ads and GA4. Expect three different numbers. Do not force them to agree. In Google Ads, name the exact column: Conversions is primary actions and can include modeled values; All conversions can include view-through values. Name GA4 by event count or session-scoped source, report, attribution model, and date basis. HubSpot reports contacts and deals on its cookie plus form graph. Compare the matching definitions before you compare totals.

I reconcile on direction and rank order, never on absolute counts. If all three rank paid social last for pipeline, that is a decision. A 12% difference alone cannot tell me whether definitions or a defect caused it. I reproduce the source records and counting rules before dismissing a discrepancy.

The deeper version of this sits in marketing ROI measurement. The reason I stopped reporting lead volume as a headline is in why I do not measure MQLs.

Most attribution projects fail before the first report, in the property layer. Four spellings of "linkedin" in UTM source will beat any model you pick. That cleanup is the first thing I do on a RevOps engagement. It is usually what produces the first credible number.

Want to know whether your attribution tells the truth? Run a growth diagnostic. Pick one closed-won deal from last quarter. Try to reconstruct its path from HubSpot alone. If you cannot, no model choice will fix it.

Source note

HubSpot report names, supported models, tiers, and interaction sampling were refreshed from HubSpot's Create attribution reports on October 1, 2026. Google Ads conversion-column language was refreshed from Google Ads on the same date. Salesforce model and auto-association behavior was refreshed from How Customizable Campaign Influence Works on the same date.

BOOK A WORKING SESSION

Attribution fails in the property layer, not the report.

Four spellings of one channel in UTM source will beat any model you pick. The diagnostic finds the cleanup that produces your first credible number.

Report types: contact create, deal create, deal revenue
3
Tier required for deal create and deal revenue reports
Enterprise
Interaction limit per report after sampling
20M

frequently asked questions.

What is HubSpot marketing attribution?

HubSpot marketing attribution splits credit for a contact, a deal, or deal revenue across the interactions that preceded it, using an attribution model you select. HubSpot offers Contact Create Attribution, Deal Create Attribution, and Deal Revenue Attribution. Each answers a different question and each carries different data requirements.

Which HubSpot tiers include attribution reports?

Contact Create Attribution is available on Marketing Hub Professional and Enterprise, and on Content Hub Professional and Enterprise. Deal Create Attribution and Deal Revenue Attribution both require Marketing Hub Enterprise. If you are on Professional and need deal revenue attribution, that is a contract change, not a configuration change.

What attribution models does HubSpot offer?

First Touch, Last Touch, Linear, Time Decay, and Empirical. HubSpot says Empirical replaced the U-shaped, W-shaped, J-shaped, and Inverse J-shaped models. It uses historical interaction data to weight interaction types across conversion paths.

What are the limits of HubSpot attribution reporting?

Offline interactions without a tracking URL leading to a page carrying the HubSpot tracking code are not counted. Imported, manually created, or synced contacts get no page view history until they submit a form or click a tracked email. Cleared cookies break the path. Revenue attribution excludes deals missing Amount, Create date, or Close date.

How does HubSpot attribution compare to Salesforce?

HubSpot attributes eligible tracked interactions. Salesforce Customizable Campaign Influence associates campaigns and opportunities: Primary Campaign Source assigns all credit to one campaign; custom models use influence percentages. Standard-model auto-association rules do not apply to custom models. Inspect actual products, integrations, records, and counting rules before comparing coverage.

talk to me

tell me what needs to move.

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