Skip to content
SourceLoop
Web form tracking

How to track lead source in HubSpot Forms

Add real attribution to every HubSpot form submission so your marketing reports show which ad, search, or content actually generated each lead, not just "Direct" everywhere.

On this page
  1. What SourceLoop captures from HubSpot Forms
  2. Before you start
  3. Step 1: Install the SourceLoop tracking script
  4. Step 2: Embed your HubSpot form on a tracked page
  5. Step 3: Verify it’s working
  6. Where to see HubSpot form submissions in SourceLoop
  7. Contacts Hub
  8. Attribution dashboard
  9. Funnel reports

HubSpot Forms is the default lead-capture surface for any team running HubSpot CRM, free or paid, marketing or sales. The data it sends back to HubSpot is solid for contact info, but the source attribution often shows up as a generic “Direct” or “Organic Search” entry, with very little detail about which campaign or content actually drove the lead. SourceLoop layers on the missing data: full UTM details, every page the prospect viewed, and which session ultimately converted them.

Setup takes about five minutes, works on every HubSpot plan, and runs alongside (not against) HubSpot’s own analytics.

What SourceLoop captures from HubSpot Forms

After setup, each HubSpot form submission lands in SourceLoop with:

  • Acquisition source with full UTM parameters captured at the visitor’s first session
  • Browsing trail before submission, every page in chronological order
  • Total time invested on your site before the form fill
  • Number of distinct sessions before the conversion
  • Email and name captured from the HubSpot form fields
  • Landing page and the referring URL from the very first session
  • Last-session source, the channel that ushered them to the submission
  • Device type, country, and browser for segment-level analysis

Before you start

You’ll need:

  • A SourceLoop workspace (free trial)
  • Edit access to the website (or HubSpot CMS pages) where your HubSpot forms are embedded
  • A HubSpot account (any tier) with at least one form configured under Marketing -> Forms

Step 1: Install the SourceLoop tracking script

Inside SourceLoop, click Setup in the left navigation and pick the Tracking code tab. Copy the snippet shown.

SourceLoop Setup page showing the tracking code snippet ready to copy

If your forms live on your own site (WordPress, Webflow, Framer, custom), paste the snippet inside the <head> tag of every page.

If your forms live on HubSpot CMS pages, open HubSpot, head to Marketing -> Files and Templates -> Templates -> Site header HTML, and paste the snippet there. HubSpot will inject it into every page on your hosted domain.

Step 2: Embed your HubSpot form on a tracked page

In HubSpot, open your form and copy the embed code from Embed -> Get embed code. Drop it onto the page where you want submissions to happen.

A few common HubSpot form scenarios:

  • Inline embed on a marketing landing page: the form renders directly in the page body
  • Popup form: triggered by exit intent, scroll depth, or a button click
  • Native HubSpot CMS form module: when your page is built inside HubSpot, the form is added through HubSpot’s page editor

All three work the same way for attribution. The non-negotiable: the page hosting the form must also have the SourceLoop snippet from step 1.

Step 3: Verify it’s working

Open the form page in an incognito tab, add ?utm_source=test&utm_medium=verify&utm_campaign=hubspot-form-check to the URL, and submit a test entry using a real email you control.

Open the Contacts Hub in SourceLoop, your test submission should appear in a few seconds with the test UTM parameters attached to the contact record.

Where to see HubSpot form submissions in SourceLoop

Three SourceLoop surfaces give complementary views of your HubSpot form data:

Contacts Hub

app.sourceloop.ai/contacts shows each form submission as a contact row. Expanding a row reveals the prospect’s entire pre-submission timeline, the entry channel, the pages they viewed, and how long they evaluated before filling the form.

SourceLoop Contacts Hub showing a HubSpot form submission lead with their full pre-submission journey

Attribution dashboard

app.sourceloop.ai/dashboards/traffic rolls up your HubSpot form submissions by source, medium, and campaign. This is the report you bring to the next marketing review when someone asks “what’s actually generating qualified leads?”

SourceLoop attribution dashboard with HubSpot form submissions grouped by source and campaign

Funnel reports

In app.sourceloop.ai/funnels, configure a funnel that ends in “HubSpot form submission”. Slice it by channel or landing page to spot the highest-converting acquisition paths.

SourceLoop funnel report ending in a HubSpot form submission conversion step

If your marketing program runs paid acquisition, forward the HubSpot form submissions to Google Ads, Meta, and LinkedIn as offline conversions so the bidding algorithms train on real lead generation rather than vanity click counts. Connect your Google Ads account covers that setup.

Frequently asked questions

  1. Doesn't HubSpot already track lead source on contacts?

    HubSpot's built-in `hs_analytics_source` is helpful but coarse and often defaults to "Direct" when UTMs aren't pristine. SourceLoop captures the full journey including UTM details, all pages visited, and first/last-session sources, then keeps that data alongside HubSpot's own properties without overwriting them.

  2. Does this work with HubSpot Free?

    Yes. Whichever HubSpot tier you're on, Free through Enterprise, the form-embedding flow is the same. SourceLoop attaches attribution data to every submission made through an embedded HubSpot form on a tracked page.

  3. My HubSpot forms run on landing pages built with HubSpot's CMS. Does that work?

    Yes, as long as the SourceLoop tracking script is loaded on those HubSpot CMS pages. You can add it through HubSpot's site settings under Marketing -> Files and Templates -> Site header HTML.

  4. Will SourceLoop overwrite or interfere with HubSpot's standard contact properties?

    No. SourceLoop stores its attribution data on its own contact record. HubSpot's properties (`hs_analytics_source`, `hs_latest_source`, etc.) stay untouched. If you'd like the data flowing into HubSpot contact records, set that up via the HubSpot CRM sync.

  5. I use the HubSpot non-HubSpot Forms feature (collecting submissions from third-party forms). Does that work?

    SourceLoop tracks the form submission on the page where the form lives. If your third-party form lives on a SourceLoop-tracked page, the submission is captured normally regardless of whether HubSpot is also picking it up.

Track every conversion to its true source

Capture and send full attribution data from every signup, lead, booking, and sale to your CRM and ad platforms, so you know exactly what's driving revenue.

Without SourceLoop

Untagged

Kayden Floyd

kayden@abc.com

  • SourceUnknown
  • MediumUnknown
  • CampaignUnknown
  • Landing pageUnknown
Journey
No touchpoints captured

With SourceLoop

Auto-tagged

Kayden Floyd

kayden@abc.com · Acme Co.

  • Channel Paid Social
  • CampaignFree_demo
  • Landing page/pricing
Journey
Synced to HubSpot Google Ads Meta