Attribution analytics in Hubspot is bad

Feb 11, 2020, updated Feb 8, 2023 | 12 minute read

All marketing powerhouses tell you they are your golden ticket to ultimate knowledge about your customers.

  • Grow your traffic, convert leads, and prove ROI.
  • Track Customers and Report Your Impact on the Bottom Line
  • Automatically record and organize every interaction customers have with your brand. Then, tie all your data to closed revenue with multi-touch revenue attribution.
  • Gain insight into your entire customer journey
  • Track the ROI of your Facebook, Instagram, LinkedIn, and Google advertising with precision, and stop struggling to justify your paid ad spend.
  • Makes things like organizational scale, reporting, and account-based marketing delightfully easy

These are some of Hubspot claims. All lies. It doesn’t work most of the time and you should be aware of that. Maybe Hubspot won’t even be a good choice for you. Let me show you some bad, stinky stuff hidden behind sales pages:

Original source low quality data

Your lead generation efforts are not working in silo. You push data from external sources to your systems with API integrations. In Hubspot, integrations have hardcoded offline sources, so even if you could provide good source data - you can’t. For example contacts created from Zapier are reported as coming from Offline source and you can’t manually set it up as your custom source.

This limitation forces you to use additional custom contact properties, which makes reporting more complicated (Should I use original source or custom property to find these people?)

Simplifications introducing further complexity and inconsistencies

Hubspot shields non-technical users from UTM tags and introduced concept of Original Source Drill-downs.


Looking at the table in URL above you can see how bad it is.

  • Campaign name (utm_campaign) is sometimes saved in drill-down 1 and sometimes in drill-down 2.
  • cpc and ppc in utm_medium are being overriden to “Paid search” and tags like utm_content are simply ignored and discarded
  • You are unable to track custom tags, such as ad_campaign or anything company-specific
  • Apart from that, drill-down 2 has something like internal value which further complicates any reporting.

All of this makes it unnecessary difficult to consistently track contact sources and do proper reporting. Multiple fields to search through is prone to errors and complicated (you need to map standard utm tags to Hubspot style). You lose traffic data such as utm_term and utm_content.

It’s hard to join data, too. You will have data on advertising spending based on utm tags and contacts sources described by Hubspot metrics - and they don’t work well together.

No multi-touch attribution, first touch analytics only

Original source is hardcoded by Hubspot and created only once. You cannot change it, and if value is incorrect, it stays forever. You can change drill-downs 1 and 2, but what you get with that is more chaos and data inconsistency.

All subsequent visits after first touch are ignored by Hubspot. You have no option to find contacts influenced by remarketing or visiting again from social media after first organic pageview. Well, you can try by going through links on single contact timeline (apparently, full URL is saved there), but all URL params are discarded for aggregated data like contact lists or reports.
For example, you can not find contacts who visted URL containing ?utm_source=adwords - such filter simply doesn’t work.

Lead centric: no proper company analytics

There are no reports available on activities per company and you can’t follow customer journeys for multiple stakeholders from one company. Company profiles suffer from the same problems as contacts - hardcoded and low quality data on sources.

Hubspot is simply subpar solution for B2B companies.

Simplistic reporting - no way to slice data, only few basic reports are available

Can’t compare to Excel or any good reporting tool. Anything more granular than “Number of leads from X” requires manually exporting data for analysis.

Contact lists offer only basic filters which lack granular options for important metrics (ex. X before Y, how many times Z)

As most contact activity data is not available for exports within Hubspot, there is no way to find out if your contact visited website from given source before or after filling out forms, even in external tools. This is important for properly measuring funnel attribution.

Examples of lost information:

A: Someone visits your services landing page from Google Ads and leaves. Later is remarketed on LinkedIn, goes back to website and fills out conversion form. Deal goes through, he becomes customer. Reported source is Google Ads, but data on LinkedIn remarketing is lost. You turn off LinkedIn Ads because you think you lose money on them, but in reality it was crucial step to get a customer.

B: Product manager finds your website from online research. Sends website link to CTO, who gets in touch. CTO original source is reported as direct traffic (unknown source), but you have more datapoints from product manager, ex. organic search. All reports show Direct traffic source without mentioning any influence of Organic search. Data is there, but deeply hidden and requires manual search. Impossible to report at scale.

What now?

There are some new features coming up which aim to improve the current state. For example, new multi-touch revenue attribution in Enterprise package. Unfortunately it works only for customers with reported revenue, so it’s not possible to report on multi-touch attribution for leads earlier in customer journey. Pretty bad for “Starts at €2,944 per month”. Hubspot now offers contact create attribution and it’s actually pretty good!

What might be possible solutions to fix this mess?

Introduce workarounds

  • Completely ignore features and bad metrics which are not satisfactory.
  • Continue work on setting up custom solutions and workarounds, such as saving all UTM tracking client-side and syncing it to custom properties. Save raw data in Hubspot, export and aggregate data in external tools with manual and/or scheduled scripts
  • Copy deeply hidden analytics data (ex. hs_analytics_last_url version history) into data warehouse for insights
  • Reporting outside of Hubspot. Preferably SQL-based for flexibility and speed.

Use Google Analytics as main data tool

  • Huge ecosystem of tools you could use to push and categorize data.
  • It’s free for most use cases
  • Requires anonymised data which means no information on single known contact (only aggregated data and anonymous people)
  • Limited options for saving custom data (max 20 custom dimensions)
  • Custom setup needed for measuring revenue and custom properties tracking
  • With the introduction of GA4 and Bigquery export, it is now an amazing, flexible and free solution to gather raw analytics data

Introduce advanced marketing data infrastructure

  • Highly flexible system designed to track everything from everywhere and send data to many tools (ex. Segment, Rudderstack)
  • Analytics data hosted on cloud warehouses designed for high volume (ex. Bigquery, Snowflake, optimised Postgres)
  • Advanced reporting: Tableau, Power BI, Looker, Metabase (requires substantial, constant work to provide valuable insights)
  • Data quality and knowledge within 5% top tech companies tier, if you do it the right way
  • Implementation alone will take months.
  • Much bigger cost compared to all-in-one default setup (can reach thousands USD/month). Enterprise pricing if you don’t have data people on team.
  • Very technical, requires data engineers, devops help etc. Proper ETL setup required (ex. dbt, Apache Airflow, Prefect)
  • Enables Operational Analytics, which lets you send customised data back to your tools
  • Needs constant maintenance and probably even small dev team dedicated to it.

Are you doomed?

Most tools on the market are even worse than Hubspot. Own you data from beginning to an end. This is the only way to make informed decisions.

Hubspot Analytics Attribution

I am available for consulting. Get in touch