# 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.

Source: https://sourceloop.ai/help/connect-hubspot-to-sourceloop/
Updated: 2026-05-28

---

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:
- [Push UTMs and lead source to HubSpot contact properties](/help/push-utms-to-hubspot/)
- [Map SourceLoop stages to HubSpot lifecycle stages](/help/map-hubspot-lifecycle-stages/)

## 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](/help/install-the-tracking-pixel/)
- 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](https://app.sourceloop.ai/).
2. Click **Setup** in the left sidebar.

![SourceLoop Home page with the Setup entry in the left sidebar highlighted](/help/screenshots/sourceloop-setup-navigation.webp)

3. Click the **CRM** tab inside Setup.

![SourceLoop Setup CRM page showing the supported CRM provider cards including HubSpot, Salesforce, and Pipedrive](/help/screenshots/sourceloop-crm-integration-page.webp)

4. Scroll to the **HubSpot** card and click **Connect**.

![SourceLoop CRM drawer with the HubSpot Connect button highlighted](/help/screenshots/sourceloop-connect-hubspot.webp)

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

## Step 2: Authorise SourceLoop on HubSpot's 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.

> **HubSpot tokens auto-refresh**
> HubSpot OAuth access tokens are 30-minute-lived, but SourceLoop stores the refresh token and rotates the access token automatically. You won't need to reconnect unless you revoke the app from HubSpot's Connected Apps page.

## 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](/help/push-utms-to-hubspot/).
- **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](/help/map-hubspot-lifecycle-stages/).
- **Troubleshooting** — if a sync looks stuck or a contact isn't updating, see [Troubleshoot HubSpot sync issues](/help/troubleshoot-hubspot-sync/).

## 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

### 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.

### 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.

### 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.

### 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.

### 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.

### 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.
