HubSpot Attribution: What It Tracks, Where It Falls Short, and How to Fill the Gaps

HubSpot includes attribution reporting as part of its marketing hub — tools for tracing contacts back to their original source, reporting on which campaigns and channels drove leads, and connecting marketing activity to sales pipeline and closed revenue.

If you use HubSpot as your CRM, understanding what it tracks accurately, where its attribution data comes from, and where its limitations are will help you make better decisions about your marketing data. This post covers HubSpot’s attribution capabilities, how they integrate with WordPress, and where they fall short in ways that first-party attribution tools can fill.

What HubSpot Attribution Actually Tracks

HubSpot’s attribution data flows from three main sources: HubSpot-native forms, the HubSpot tracking code on your website, and UTM parameters in URLs.

Original Source and Latest Source

Every contact in HubSpot has two built-in source properties: Original Source (the channel that drove their first recorded interaction) and Original Source Drill-down 1 and 2 (more specific data about the source, like the exact search term or social network).

Original Source is automatically set when a contact is created and never changes. HubSpot captures it from:

  • The URL they visited when they first submitted a HubSpot form (if a UTM was present, HubSpot reads it)
  • The referring URL (if they arrived from a search engine, HubSpot records Organic Search; from social, Social Media; from a direct visit, Direct Traffic)
  • For email clicks from HubSpot emails: Email Marketing
  • For conversions through HubSpot’s paid integrations (Google Ads, Facebook Ads connected to HubSpot): Paid Search or Paid Social

HubSpot also records “Latest Source” properties that update with each new session — useful for seeing the last touchpoint before a deal closes, not just the first one.

Multi-Touch Attribution Reports

HubSpot Marketing Hub Professional and Enterprise include Attribution Reports that show which content and interactions influenced contacts throughout their journey — not just the first and last touch. Models available include First Touch, Last Touch, Linear (equal credit to all), and Time Decay (more credit to recent touches).

These reports are built from HubSpot’s own session data (from the tracking code on your site) and require contacts to be cookied by HubSpot before their interactions are recorded in the attribution path. Contacts who were anonymous across multiple sessions before converting may have incomplete attribution paths.

HubSpot and WordPress: How the Integration Works

HubSpot’s WordPress integration is one of the more comprehensive in the ecosystem:

The HubSpot WordPress Plugin

HubSpot’s official WordPress plugin (available free in the plugin directory) does several things simultaneously:

  • Installs the HubSpot tracking code on all WordPress pages, enabling contact tracking and session recording
  • Embeds HubSpot forms on WordPress pages via a Gutenberg block or shortcode
  • Connects WordPress visitor data to the HubSpot contact record
  • Enables live chat (HubSpot’s chat widget) on WordPress

When a visitor submits a HubSpot form on your WordPress site, HubSpot creates or updates a contact record, logs the page they submitted from, reads the UTM parameters from the URL (if present), and sets the Original Source accordingly. This is the cleanest path to source attribution in HubSpot — form submissions through HubSpot’s own forms, on a page with the HubSpot tracking code.

Non-HubSpot Forms: Where Attribution Breaks

Many WordPress sites use form plugins (Gravity Forms, WPForms, Contact Form 7, Elementor Forms) rather than HubSpot’s native form embed. When a visitor submits a non-HubSpot form, HubSpot doesn’t automatically receive the submission — you need to connect them through Zapier, Make, or a native integration.

The attribution gap: when a contact is created in HubSpot via Zapier from a non-HubSpot form, HubSpot typically records the source as “Offline Sources” or “Other.” It does not read UTM parameters from the form submission data unless you explicitly map UTM fields from your form to HubSpot contact properties through the Zapier action.

This means that if your WordPress site uses Gravity Forms connected to HubSpot via Zapier, and a visitor comes from a Google ad with UTM parameters, HubSpot may record them as “Offline Sources” rather than “Paid Search” — losing the attribution entirely.

The fix: add hidden UTM fields to your non-HubSpot forms, capture UTM parameters in those fields, and map them explicitly to HubSpot’s Original Source properties via your Zapier action or native integration. This preserves the attribution chain even when the form is not a HubSpot native form.

HubSpot Attribution Limitations

Requires the HubSpot Cookie to Track Sessions

HubSpot’s session and attribution tracking requires the HubSpot tracking code to be on the page AND the visitor to accept cookies (where consent is required by GDPR, CCPA, or similar). Visitors who block third-party cookies, use browser extensions that block tracking, or decline cookie consent are invisible to HubSpot’s attribution system.

This isn’t unique to HubSpot — it affects all cookie-based analytics and CRM tracking. But it means HubSpot’s attribution data represents the fraction of traffic that’s fully cookied and tracked, not all traffic.

Cross-Domain Attribution

If your WordPress site and your actual product or scheduling system are on different domains, HubSpot’s tracking cookie doesn’t cross the domain boundary. A visitor who arrives at your WordPress site from a LinkedIn ad, browses content, and then clicks through to a booking page on a different domain is tracked on the WordPress side but not on the booking page side — the attribution path ends at the domain boundary.

HubSpot doesn’t have a native cross-domain attribution solution equivalent to GA4’s cross-domain tracking configuration. You’d need to pass the HubSpot contact information (via a URL parameter or cookie workaround) to the second domain and merge the records manually — a non-trivial implementation.

Multi-Session Customer Journeys

HubSpot’s Original Source is set at first contact creation and doesn’t update. But a contact’s journey often spans multiple sessions over weeks or months. If a contact was originally from Organic Search but has since interacted with email campaigns, paid retargeting, and direct visits — all of which influenced the eventual closed deal — the Original Source attribution to Organic Search may understate the role of other channels.

HubSpot’s multi-touch attribution reports (Professional/Enterprise) address this by crediting multiple touchpoints, but those reports are based on HubSpot-tracked sessions only and require Marketing Hub access at a higher tier than most small and mid-size businesses use.

Extending HubSpot Attribution With First-Party Data

First-party attribution tools like Sales Provenance complement HubSpot’s attribution by capturing lead source data at the WordPress level — independent of the HubSpot cookie — and writing it to the contact record when a form is submitted.

How this works in practice: when a visitor arrives at your WordPress site, Sales Provenance captures their UTM parameters and referring source and stores this data server-side (first-party, not dependent on third-party cookies or HubSpot’s tracking code). When the visitor converts via any form (HubSpot native or WordPress plugin), the lead source data is included in the submission and passed to the HubSpot contact record as custom properties.

This fills the gaps where HubSpot’s native attribution falls short: non-HubSpot form submissions, cookie-blocked visitors, and multi-session journeys where the first-touch source needs to be captured before the HubSpot cookie is even set.

The result: HubSpot contact records with accurate first-touch lead source data regardless of which form the visitor used or whether they accepted cookies at the session level.

HubSpot Attribution Reporting in Practice

Using HubSpot attribution data effectively requires knowing which reports to look at and what they mean:

  • Original Source report (Contacts > Reports > Contacts by Original Source): what channel brought in your contacts. This is the cleanest single-view of acquisition-channel contribution to contact creation.
  • Attribution Reports (Marketing Hub Pro+): multi-touch credit across the buyer journey for contacts, deals, and revenue. More nuanced than Original Source but requires more data volume to be meaningful.
  • Campaign ROI: if you run campaigns in HubSpot (paid ad connections, email campaigns, landing page campaigns), HubSpot tracks contacts created, deals influenced, and revenue attributed per campaign.
  • Revenue Attribution (Marketing Hub Enterprise): connects marketing activity to closed revenue in the CRM. Requires a well-maintained sales pipeline with consistent deal stage progression.

For smaller HubSpot users on Starter or Free, the Original Source contact property is the primary attribution signal. Make sure it’s being set correctly by verifying that HubSpot forms and tracking code are installed on all key conversion pages, and that UTM parameters from your campaigns are present in the URLs you use.

If you want help extending HubSpot attribution with first-party lead source capture on your WordPress site, Sales Provenance is built for this.