How to troubleshoot HubSpot sync issues with SourceLoop
Checklist for diagnosing HubSpot sync problems: missing contacts, stuck syncs, OAuth errors, scope rejections, and when to reconnect.
On this page
- Before you start
- Step 1: Check the connection status
- Step 2: For ‘Token expired’ or ‘Disconnected’
- Step 3: For a stuck sync (Connected but Last sync is hours old)
- Step 4: For missing contacts
- Step 5: For “contacts sync but no properties update”
- Step 6: For “pipelines not loading”
- Step 7: How to disconnect
- When to email support
If a HubSpot sync isn’t behaving as expected, run through this checklist in order. Most problems fall into one of six buckets.
Before you start
Have these open:
- SourceLoop’s HubSpot card at Setup -> CRM -> HubSpot (showing Last sync timestamp + connection status)
- HubSpot’s Connected Apps page at Settings -> Account -> Integrations -> Connected Apps (to verify SourceLoop is authorised)
- Optional: the Overview tab of the HubSpot drawer, which shows the most recent sync errors
Step 1: Check the connection status
- Open Setup -> CRM -> HubSpot in SourceLoop.
- Look at the card status:
- Connected + recent Last sync timestamp → connection is healthy; the issue is downstream
- Connected + stale Last sync (more than an hour ago) → the sync is stuck
- Token expired → the OAuth token couldn’t be refreshed; reconnect required
- Disconnected → not connected; run the connect flow
For each state, jump to the matching section below.
Step 2: For ‘Token expired’ or ‘Disconnected’
- Click Reconnect on the HubSpot card.
- SourceLoop runs the OAuth flow with HubSpot again. Sign in if prompted.
- Authorise SourceLoop on HubSpot’s consent screen.
- You’re returned to SourceLoop. The card flips to Connected.
If reconnect fails immediately:
- “App not authorised” → SourceLoop was removed from HubSpot’s Connected Apps. The reconnect should re-add it.
- “User does not have access” → the user authorising the connection needs Super Admin or Account Access permission in HubSpot. Sign in as a user who does.
- “Scope rejected” → HubSpot blocked one or more requested scopes (rare; usually a HubSpot side restriction). Email [email protected] with the exact error.
Step 3: For a stuck sync (Connected but Last sync is hours old)
- Open the HubSpot drawer under Setup -> CRM and check the Overview tab, which lists the most recent errors to see the most recent failure.
- Common errors and fixes:
- HTTP 401 (Unauthorized) → token expired between scheduled runs. Click Reconnect.
- HTTP 403 (Forbidden) → a scope you previously had is no longer granted. Reconnect with a user that has the missing scope.
- HTTP 429 (Rate limit exceeded) → HubSpot is throttling. SourceLoop backs off automatically; the next scheduled run (within 15 minutes) usually picks back up.
- Network timeout → temporary; will retry on the next cycle. If it persists for more than 24 hours, email us.
- To force a sync now instead of waiting for the next scheduled cycle, click Resync at the top of the HubSpot drawer.
Step 4: For missing contacts
If sync looks healthy but specific contacts aren’t appearing in SourceLoop or aren’t getting SourceLoop properties written, walk through these:
- Email mismatch. SourceLoop matches contacts to HubSpot by email. Open the contact in HubSpot and check the email is identical (case-insensitive) to what SourceLoop captured. Email aliases (e.g.,
[email protected]vs[email protected]) count as different contacts. - Contact created before connection. SourceLoop only brings in older HubSpot contacts who are linked to deals or already known to SourceLoop. Turn on Add contacts Sourceloop has not seen on the Sync tab, then click Resync at the top of the drawer.
- Exclude / include lists. Some HubSpot accounts have list-based sync filters configured on SourceLoop. Open the HubSpot card and check the Sync Filters tab.
- HubSpot list membership. If the contact is in a HubSpot list that’s set as Exclude in the sync filters, they won’t sync.
Step 5: For “contacts sync but no properties update”
If contacts are appearing but their UTM / source / lifecycle properties aren’t getting populated:
- Confirm Outbound sync is enabled on the HubSpot card.
- Open the Fields tab. Confirm SourceLoop’s fields are mapped. See Push UTMs to HubSpot for what should be there by default.
- For each mapping, confirm direction is outbound or bidirectional, not inbound (inbound mappings only read; they don’t write).
- Confirm the target HubSpot property actually exists. Open HubSpot at Settings -> Properties and search for the property’s API name. If it doesn’t exist, the auto-create may have failed (e.g., due to scope issues). Create it manually in HubSpot or remap to an existing property.
Step 6: For “pipelines not loading”
When inbound sync runs but pipelines and deal stages aren’t appearing in SourceLoop:
- The connecting HubSpot user needs
crm.objects.deals.readandcrm.pipelines.deals.readscopes. These are normally requested at OAuth time. If a HubSpot admin restricted these scopes for your user, you’ll need to either get the restriction lifted or have someone else with full access run the reconnect. - Click Reconnect with a Super Admin user.
Step 7: How to disconnect
If you need to fully remove the HubSpot integration:
- Open the HubSpot card in SourceLoop’s CRM tab.
- Open the Overview tab and click Disconnect.
- Confirm.
SourceLoop stops syncing immediately, revokes the OAuth token, and clears the cached property schema. Your existing SourceLoop data (contacts, conversions, dashboards) stays intact, only future HubSpot syncs are paused. You can reconnect any time.
For a full app removal on HubSpot’s side, also go to HubSpot Settings -> Integrations -> Connected Apps, find SourceLoop, and click Disconnect. This is optional, the OAuth revocation from SourceLoop’s side already invalidates the token.
When to email support
If you’ve worked through the checklist and the sync still isn’t healthy, email [email protected] with:
- The HubSpot card’s current status
- The most recent error message from the sync log
- Your HubSpot portal ID (visible on the HubSpot card)
- Approximate time the issue started
We’ll dig in from our side and respond within one business day.
Frequently asked questions
-
My HubSpot card shows 'Token expired'. What now?
Click **Reconnect** on the card. SourceLoop runs the OAuth flow again and gets a fresh access + refresh token. Tokens usually rotate automatically (HubSpot access tokens last 30 minutes; SourceLoop uses the refresh token to renew them), but if the refresh token itself is revoked (e.g., someone removed SourceLoop from HubSpot Connected Apps), a manual reconnect is required.
-
A specific contact isn't getting synced. What should I check?
Three common causes. (1) Email mismatch, SourceLoop matches by email, so if the contact's email in HubSpot is different from what SourceLoop captured, they won't link. (2) The contact was created more than a week before you connected and has no deals, so SourceLoop skipped them. Turn on Add contacts Sourceloop has not seen on the Sync tab and click Resync. (3) Bring HubSpot data in is switched off on the Sync tab.
-
Sync says 'Pipelines not loaded'. Why?
SourceLoop couldn't read your HubSpot pipeline schema. Most common cause is missing scope, the connecting user needs the `crm.objects.deals.read` and `crm.pipelines.deals.read` scopes. Disconnect and reconnect with a HubSpot user that has Super Admin permissions.
-
My HubSpot connection works but no contact properties are being written. What's wrong?
Outbound sync may be disabled. Open **Setup -> CRM -> HubSpot** and confirm **Send leads to HubSpot** is switched on in the **Sync** tab. If it's on but properties still aren't showing in HubSpot, check the Fields tab, are there any mappings, and are they set to direction 'outbound' or 'bidirectional'?
-
How do I do a full re-sync (pull everything again)?
Open the HubSpot drawer under Setup -> CRM and click **Resync** at the top. This bypasses the delta cursor and pulls every contact, company, and deal again. It's safe to run, all writes are idempotent.
-
I'm getting 'Rate limit exceeded' from HubSpot. What now?
HubSpot rate-limits API calls per account. SourceLoop respects the limits and backs off automatically. If you're seeing repeated rate-limit errors, check whether other tools (HubSpot's own backups, third-party sync tools, custom integrations) are sharing the same daily quota.
-
How do I completely disconnect HubSpot from SourceLoop?
Open the HubSpot drawer under Setup -> CRM, go to the **Overview** tab, and click **Disconnect**. Confirm. SourceLoop stops syncing immediately and the OAuth token is revoked. Your SourceLoop data stays intact, but no new HubSpot data will sync in until you reconnect.