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 attribution ships with Marketing Hub Professional. Deal and revenue attribution are 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 running marketing in PE-backed B2B SaaS. 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 finds sources with "the greatest impact on generating leads." Deal create does the same for "generating deals." Revenue attribution does it for "revenue" (HubSpot).

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

Say you run Professional and someone asks for HubSpot revenue attribution. That is not a config change. It 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 itself configurable. For revenue attribution, eleven types are on by default. They cover page views, form submissions, CTA clicks, and marketing email clicks. They also cover connected calls, attended meetings, and sales email replies. Conversations, ad clicks, social post clicks, and contact creation round out the list.

Five more are off by default. Media plays. Marketing event attendance. Marketing event registration. Sequence enrollment. Custom behavioral events (HubSpot).

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

The attribution models in HubSpot

HubSpot offers a set of models with fixed credit rules (HubSpot).

ModelHow credit splitsWhat I use it for
First interaction100% to the first interaction in the pathDemand creation. Which channel starts conversations.
Last interaction100% to the last interaction in the pathConversion mechanics. Which asset closes a form.
LinearEqual credit to every interaction in the pathA sanity check against the two extremes above.
U-shaped40% first interaction, 40% lead conversion, 20% spread evenlyTop and mid funnel budget splits.
W-shaped30% first interaction, 30% contact creation, 30% deal creationPipeline-stage reporting, when deal dates are clean.
Full path22.5% to each of four key moments, 10% across the middleRevenue attribution reports only.
Time decayRecent interactions weigh more, on a 7-day half lifeShort-cycle motions and paid tests.
J-shaped20% first touch, 60% conversion, 20% across othersRare. Conversion-heavy self-serve.
Inverse J-shaped60% first interaction, 20% conversion, 20% elsewhereRare. Brand-led enterprise motions.

Time decay is worth reading precisely. Take HubSpot's own example. A touch 8 days out gets half the credit of one 1 day out (HubSpot). Now picture an enterprise motion with a 140-day cycle. A 7-day half life reduces almost everything before the last fortnight to rounding error. That is not a bug. It is a model that does not fit a long cycle.

Full path is available only in revenue attribution reports (HubSpot). So it is Enterprise only by inheritance.

A model is not a truth setting. It 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 and 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 revenue attribution

These are not increasing levels of accuracy. They 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. Say a deal's create date falls before its associated contacts' create dates. The W-shaped model then returns null (HubSpot). Teams that create the deal first and attach contacts later get empty reports forever.

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 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 processes up to 100,000 interactions per deal. Above that, lower-impact interactions such as repeated page views may drop out (HubSpot). This only bites on very long cycles. That is exactly where the stakes are highest.

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 gates the whole model. Delete cookies and you are a new visitor with a new cookie. Clear them between an ad click and a conversion and that path is not attributed (HubSpot). Workaround: HubSpot dedupes form submissions from the same email across different cookies. So push email capture earlier in the path. Every consent-blocked session that ends in a form is recoverable identity.

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 behavior it tracked itself. Salesforce Customizable Campaign Influence models it at the campaign-to-opportunity level. Its CampaignInfluence object represents a campaign-opportunity association. Influence models group records created by triggers and workflows you define. Primary Campaign Source is the default model (Salesforce).

The practical difference is control versus coverage. HubSpot gives behavioral granularity out of the box and a fixed model set. Salesforce gives almost no behavior by default and near-total model control through code.

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 and last interaction, 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 revenue attribution number presented as fact. It carries four documented exclusions, a sampling ceiling, and consent-gated 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. Google Ads reports click-through and view-through conversions on its own window. GA4 reports sessions on a different identity graph. HubSpot reports contacts and deals on its cookie plus form graph.

I reconcile on direction and rank order, never on absolute counts. If all three rank paid social last for pipeline, that is a decision. If they disagree by 12%, that is normal variance across three systems. It is not a defect to engineer away.

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.

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, revenue
3
Tier required for deal and revenue attribution
Enterprise
Half life used by the HubSpot time decay model
7-day

frequently asked questions.

What is HubSpot marketing attribution?

HubSpot marketing attribution splits credit for a contact, a deal, or revenue across the interactions that preceded it, using an attribution model you select. HubSpot offers three report types: contact create attribution, deal create attribution, and 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 revenue attribution both require Marketing Hub Enterprise. If you are on Professional and need revenue attribution, that is a contract change, not a configuration change.

What attribution models does HubSpot offer?

First interaction, last interaction, linear, U-shaped, W-shaped, full path, time decay, J-shaped, and inverse J-shaped. U-shaped gives 40% to the first interaction and 40% to lead conversion. W-shaped gives 30% each to first interaction, contact creation, and deal creation. Full path is available only in revenue attribution reports.

Why is my HubSpot W-shaped attribution report empty?

If a deal create date falls before the create dates of its associated contacts, the W-shaped model returns null and the report has no values. This happens when sales creates a deal record first and attaches contacts afterward. Fix the record creation order in the sales process, not the report.

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 models credit at the interaction level using behavior it tracks itself, with a fixed set of models. Salesforce Customizable Campaign Influence associates a campaign with an opportunity and lets you define models through triggers and workflows, with Primary Campaign Source as the default. Reconcile the two on campaign, not on interaction.

talk to me

tell me what needs to move.

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