Skip to content
SourceLoop
HubSpot

How to track lead source in HubSpot

Sync lead source, UTMs, and the full marketing journey from SourceLoop into HubSpot contact, company, and deal records. OAuth-based, 5-minute setup.

On this page
  1. Why connect HubSpot to SourceLoop?
  2. Before you start
  3. Step 1: Open the CRM integrations page
  4. Step 2: Authorise SourceLoop on HubSpot’s consent screen
  5. Step 3: Pick what to sync
  6. Step 4: Wait for the initial sync
  7. What happens next
  8. What gets written to HubSpot

Connecting HubSpot to SourceLoop is a one-time OAuth setup that takes about five minutes. Once connected, every visitor’s source, journey, and conversion (forms, meetings, chats, payments) gets pushed into the matching HubSpot contact, with their UTM history, landing page, and the full marketing journey attached.

This guide covers the connect flow only. For what to do next, see:

Why connect HubSpot to SourceLoop?

HubSpot is a brilliant CRM, but its native attribution (Marketing Hub’s Source Type field) only goes deep at the Professional and Enterprise tiers, and even then it’s a single source per contact. SourceLoop adds:

  • First-touch and last-touch source on every contact, not just one
  • Full UTM history (source, medium, campaign, content, term) per touchpoint
  • Multi-touch attribution models (first, last, linear, position-based, time-decay)
  • Pre-conversion journey (every page the visitor browsed, every session they had)
  • Revenue-by-channel when you wire payments in (Stripe, Polar, etc.)

All of this sits on the HubSpot contact, company, and deal records alongside everything you already track. Your reps see source data inside the contact view; your dashboards group revenue by channel; your nurture flows can trigger on UTM values.

Before you start

You’ll need:

  • A SourceLoop workspace with the tracking pixel installed
  • A HubSpot account (any tier, including Free)
  • HubSpot Super Admin or Account Access permission for the user authorising the connection
  • Admin or Owner role in SourceLoop (Editors can’t add integrations)

Step 1: Open the CRM integrations page

  1. Sign in to SourceLoop.
  2. Click Setup in the left sidebar.
SourceLoop Home page with the Setup entry in the left sidebar highlighted
  1. Click the CRM tab inside Setup.
SourceLoop Setup CRM page showing the supported CRM provider cards including HubSpot, Salesforce, and Pipedrive
  1. Scroll to the HubSpot card and click Connect.
SourceLoop CRM drawer with the HubSpot Connect button highlighted

You’ll be redirected to HubSpot’s OAuth consent screen.

  1. Sign in to HubSpot if you aren’t already.
  2. Select the HubSpot account you want to connect (if you have multiple).
  3. Review the scopes SourceLoop is requesting (read/write on contacts, companies, deals, owners, lists, schemas, plus webhook subscriptions for chat events).
  4. Click Connect app.

HubSpot redirects you back to SourceLoop, the connection card now shows Connected with the date and your HubSpot portal ID.

Step 3: Pick what to sync

After connecting, the HubSpot drawer opens with sync settings:

  1. Inbound sync (HubSpot → SourceLoop): pulls your existing HubSpot contacts, companies, and deals into SourceLoop so SourceLoop can stitch attribution onto them.
  2. Outbound sync (SourceLoop → HubSpot): pushes new leads, UTM values, and journey data from SourceLoop into HubSpot contact properties.

Most teams enable both. Inbound brings your existing pipeline into SourceLoop so dashboards show full revenue. Outbound puts the source data into HubSpot so your reps and workflows can act on it.

Click Save to start the first sync.

Step 4: Wait for the initial sync

The first sync runs immediately and pulls existing HubSpot records into SourceLoop. Depending on the size of your portal, this takes anywhere from 30 seconds (small accounts) to ~30 minutes (50k+ contacts). You don’t need to keep the SourceLoop tab open — the sync runs server-side.

Watch the Last sync timestamp on the HubSpot card. When it ticks over to a recent time, the initial sync is done.

From here, deltas run every 15 minutes automatically.

What happens next

  • Forward SourceLoop captures every new visitor session, UTM, conversion, and revenue event, and pushes the source data into HubSpot contact properties on the next sync cycle.
  • Field mapping — by default SourceLoop maps to a fixed set of contact properties (sourceloop_first_source, sourceloop_last_source, sourceloop_landing_page, plus the UTM fields). To map to your own custom properties or change which fields write where, see Push UTMs and lead source to HubSpot contact properties.
  • Lifecycle stage / lead status — SourceLoop’s internal lifecycle stages map onto HubSpot’s lifecyclestage and hs_lead_status properties. To customise the mapping, see Map SourceLoop stages to HubSpot lifecycle stages.
  • Troubleshooting — if a sync looks stuck or a contact isn’t updating, see Troubleshoot HubSpot sync issues.

What gets written to HubSpot

Out of the box, the following contact properties are populated for every contact synced:

  • First-touch source / medium / campaign / content / term — the visitor’s original UTMs
  • Last-touch source / medium / campaign / content / term — the UTMs of the converting session
  • First-touch landing page — the page they first arrived on
  • Last-touch landing page — the page they were on when they converted
  • Sourceloop ID — internal identifier that links the HubSpot contact to the SourceLoop record (don’t delete or edit this)

The Field Mapping tab lets you remap any of these to your own HubSpot properties.

Frequently asked questions

  1. Do I need HubSpot Marketing Hub Professional or Enterprise?

    No. The HubSpot OAuth integration works on every HubSpot tier including Free and Starter, as long as your account has access to the contact / company / deal objects (which all tiers do). The only features that require Marketing Hub Pro+ are HubSpot's own UTM tracking, but you don't need those if you're using SourceLoop.

  2. Does this sync historic leads or only new ones going forward?

    Both. The initial sync pulls in your existing HubSpot contacts (matched by email) and stamps SourceLoop attribution onto any future page-visit / form-fill / meeting / chat / payment event from those people. Forward-going contacts and conversions sync on the 15-minute cadence.

  3. Will SourceLoop overwrite HubSpot fields I already have populated?

    No, not by default. SourceLoop writes to its own set of contact properties (the UTM and journey fields) and leaves all other fields untouched. If a field collision happens (e.g., you mapped SourceLoop's `lead_source` to HubSpot's standard "Original source"), the most recent value wins. You control the mapping in the Field Mapping tab.

  4. How often does SourceLoop sync with HubSpot?

    Every 15 minutes for delta sync (only contacts modified since the last run). The initial sync after connecting can take longer depending on the size of your HubSpot account, anywhere from a few seconds to ~30 minutes for very large databases.

  5. Can I sync more than one HubSpot account into the same SourceLoop workspace?

    One HubSpot account per SourceLoop website. If you manage multiple HubSpot portals (e.g., one per brand), create a separate website in SourceLoop for each and connect them independently.

  6. Is SourceLoop a HubSpot Marketplace app?

    SourceLoop uses HubSpot's standard OAuth flow (the same one Marketplace apps use). The connection is authorised through HubSpot's official screen and can be revoked any time from HubSpot's Connected Apps settings.

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