Skip to content

CRM Sync with HubSpot

Connect your HubSpot portal to Clynto to pull accounts, contacts, and deal stages straight out of your CRM — no CSV uploads, no manual re-entry. Once connected, Clynto keeps itself in sync with HubSpot automatically and reacts in near real-time when deals move between stages you care about.

This guide walks you through setup, explains what you'll see afterwards, and covers the most common questions and error states.


What you get

Once HubSpot is connected, Clynto starts using your CRM data in several places:

  1. Accounts auto-populate from HubSpot companies — no CSV import required. Companies in the deal stages you pick are pulled in and matched (or created) as Clynto accounts, enriched with name, domain, industry, and location.
  2. Contacts on every account — HubSpot contacts associated with a synced company land on the account's Contacts section with name, email, job title, and phone. CSMs no longer have to hunt for who to email.
  3. Deal-stage-triggered account creation — when a deal in HubSpot moves into one of your selected stages, Clynto creates the account in near real-time via webhook, so new opportunities show up in the CSM feed right after the deal is qualified — not the next morning.
  4. CRM-sourced vs CSV-sourced accounts — every HubSpot-synced account is tagged with crm_source = hubspot, so you can tell at a glance which accounts came from your CRM and which were added manually or via CSV.
  5. Foundation for other integrations — Mixpanel account matching and several signals use external_crm_id (HubSpot's company ID) as their reliable join key. Connecting HubSpot makes every downstream integration sharper.

Before you start

You'll need:

  • Admin or Owner role in your Clynto workspace. Members can view the integration once it's set up but cannot connect, reconfigure, or trigger syncs.
  • Admin (or equivalent) access to your HubSpot portal — enough to approve an OAuth app and grant CRM read scopes. If you're not a HubSpot admin, ask yours to run the connect flow.
  • A decision about which deal stages matter. Clynto doesn't pull every company in your HubSpot portal — it only pulls companies attached to deals in the stages you pick. Most customers pick stages from "qualified" through "closed-won" (and sometimes "closed-lost", if they want churn context). You'll select these in the wizard, but it's worth thinking about in advance.

You do not need a HubSpot API key. The integration uses OAuth — Clynto never sees or stores your HubSpot password.


Setup walkthrough

The setup wizard has two steps. The whole thing usually takes about a minute — most of which is HubSpot's OAuth consent screen.

Step 1 — Connect

  1. Go to Integrations in the left nav.
  2. Find the HubSpot card under the CRM section and click Connect HubSpot.
  3. You'll be redirected to HubSpot's OAuth consent screen. Sign in (if you aren't already) and review the scopes Clynto is requesting:
  4. crm.objects.companies.read
  5. crm.objects.contacts.read
  6. crm.objects.deals.read
  7. Click Allow on HubSpot's screen. HubSpot bounces you back to Clynto.

Clynto exchanges the OAuth code for access and refresh tokens, looks up your portal ID, and pulls your deal pipelines and stage list in the background. You'll see the Stage picker open automatically as soon as that finishes (usually under 5 seconds).

Scopes are read-only. Clynto never writes to HubSpot — no companies are created, no deal stages change, no contacts are updated. The integration is strictly one-way.

Step 2 — Pick deal stages

The stage picker shows every deal stage across every pipeline in your HubSpot portal. Tick the stages that represent deals you want Clynto to follow.

A few rules of thumb:

  • Pick stages where the customer is committed or close to it. Anywhere from "contract sent" through "closed-won" is typical. Earlier stages produce more noise than signal.
  • Include "closed-won" if you want Clynto to manage post-sale success on those accounts (most customers do — this is the primary value loop).
  • Include "closed-lost" if you want to retain churn data and run win-back plays.
  • Skip early/exploratory stages like "lead" or "prospecting" unless you specifically want marketing-qualified leads in your CSM workflow. Including them will dilute your portfolio with accounts that may never close.

Click Save & Sync. The wizard closes and the card flips to a Syncing... state with a step-progress bar (Companies → Contacts → Deals). Initial sync typically takes 1–5 minutes depending on portfolio size.

The initial sync pulls up to 2,000 companies from your selected stages. If you have a larger HubSpot portal, contact support — we can raise the limit on your workspace.

When it finishes, the card flips to Connected and your accounts page will populate with HubSpot-sourced accounts immediately.


What you'll see after setup

On the HubSpot card (Integrations page)

  • Status — Connected, Syncing, or Error
  • Records synced — count of companies pulled in the last successful sync
  • Last sync — when the most recent sync completed
  • Configure button — reopen the stage picker to change which stages you track
  • Re-sync button — trigger a sync immediately instead of waiting for the nightly run

On the Accounts page

Accounts synced from HubSpot appear alongside any CSV-imported accounts. Each HubSpot-sourced account is tagged with a small HubSpot badge. Click into an account to see:

  • Name, domain, industry, region — enriched from HubSpot company properties
  • Contacts — a list of HubSpot contacts associated with this company, showing name, job title, email, and phone
  • External CRM ID — the HubSpot company ID, used as the canonical join key for other integrations

In other integrations

  • Mixpanel account mapping becomes more reliable once HubSpot is connected — the CRM ID mapping option uses the HubSpot company ID, so usage data joins cleanly to the right account.
  • Quarantined Mixpanel events (group values that couldn't match a Clynto account on arrival) get re-checked nightly against the latest HubSpot-sourced accounts. So a new HubSpot company synced overnight can automatically absorb the last few days of accumulated Mixpanel events on its next sync.

Staying in sync

Clynto keeps HubSpot data fresh in two ways:

Real-time (webhooks)

Clynto subscribes to HubSpot's deal property change webhooks. When a deal's stage changes into one of the stages you picked, HubSpot pings Clynto within seconds. Clynto then:

  1. Fetches the associated company (and creates a Clynto account if one doesn't exist)
  2. Pulls the company's contacts
  3. Makes the account visible in the CSM feed immediately

This means a deal moving to closed-won in HubSpot surfaces in Clynto before your CSM has a chance to switch tabs.

Daily sync (4 AM UTC)

Once a day at 4 AM UTC, Clynto re-pulls every company associated with a deal in your selected stages — plus their contacts. The daily sync is a safety net: it catches anything webhooks missed, picks up edits to company properties (industry, domain, etc.), and reconciles any contact changes.

You don't need to trigger anything manually. If you want a fresh sync right now — for instance, after bulk-editing companies in HubSpot — click Re-sync on the HubSpot card.

Only one sync runs per workspace at a time. If you click Re-sync while a sync is already in progress (from the nightly job, a webhook-triggered pull, or a previous click), Clynto will skip the duplicate instead of running two in parallel. You'll see a short "sync already in progress" notice — wait a minute and try again if needed.


Troubleshooting

The HubSpot card surfaces a few distinct states. Each one tells you something specific.

"Syncing..." (blue, step progress bar)

What it means: A sync is in progress. The bar walks through Companies → Contacts → Deals.

What to do: Nothing — wait for it to finish. A typical portfolio syncs in 1–5 minutes. If the bar appears stuck for more than 15 minutes, contact support.

"Connected" with a warning under "Last sync"

What it means: The last sync ran into a transient error (rate limit, temporary HubSpot outage, network hiccup), but the integration is still healthy overall. Clynto automatically retries these up to three times before escalating.

What to do: Usually nothing — the next sync will recover. If you want to force-retry immediately, click Re-sync.

"Error — Reconnect HubSpot" (red)

What it means: Clynto's OAuth refresh token failed, which typically happens because someone revoked the app in HubSpot or the portal was disconnected. Clynto can't pull data until a HubSpot admin re-authorizes the connection.

What to do: Click Reconnect HubSpot and run through the OAuth flow again. Your previously picked stages are remembered — you won't have to re-pick them unless you want to change them.

"Error — Configure Stages" (red)

What it means: The sync hit an error that isn't an authentication problem — for example, your pipelines changed in HubSpot and the stages you originally picked no longer exist.

What to do: Click Configure Stages to reopen the picker, verify the selected stages still exist, save, and the sync will retry.

"Records synced: 0"

What it means: The sync completed, but no companies matched your selected stages.

What to do: 1. Open the Configure modal and double-check the stages you picked. 2. In HubSpot, confirm there are actually deals in those stages. 3. If you're just starting out with HubSpot and have no deals yet, this is expected — come back once you have pipeline movement.


Frequently asked questions

Does Clynto write anything back to HubSpot? No. The integration is strictly read-only. The only scopes Clynto requests are the three .read scopes listed above. Clynto never creates, updates, or deletes anything in your portal.

What happens to accounts I already imported via CSV? They stay exactly as they are. HubSpot-synced companies are matched against existing Clynto accounts by domain, normalized domain, name, and fuzzy matching in that order. If a HubSpot company matches a CSV-imported account, Clynto merges the HubSpot data in and marks it as CRM-sourced going forward. If there's no match, a new account is created. CSV-only accounts that don't exist in HubSpot are left untouched.

Can I change which deal stages I track after setup? Yes. Click Configure on the HubSpot card to reopen the stage picker. Changes take effect on the next sync (webhook or daily). If you narrow the selection, already-synced accounts stay — Clynto does not retroactively remove accounts just because their deal left a tracked stage.

How large a HubSpot portal can I sync? The initial sync pulls up to 2,000 companies associated with deals in your picked stages. For larger portfolios, contact support — we can raise the cap on your workspace.

Why do some HubSpot contacts show up on the wrong account? Clynto uses HubSpot's own company↔contact associations. If a contact is associated with multiple companies in HubSpot, it will appear on all of them in Clynto too. If the association looks wrong, fix it in HubSpot — Clynto will reconcile on the next sync.

How do I disconnect HubSpot? There isn't a one-click disconnect button in the Clynto UI yet. If you need to fully sever the connection:

  1. Revoke the Clynto app from HubSpot (Settings → Integrations → Connected Apps in HubSpot).
  2. Contact support to have us clear the stored tokens on our side.

Synced accounts and contacts remain in Clynto after disconnecting — disconnecting HubSpot never deletes your data. You'll just stop receiving fresh updates.

Are my HubSpot tokens encrypted? Yes. Access and refresh tokens are stored encrypted at rest, the same way we store credentials for every other integration (Mixpanel, Stripe, Freshdesk). Tokens are decrypted only inside the sync workers at the moment a request is made.

Can I connect multiple HubSpot portals to one workspace? No. One HubSpot portal per Clynto workspace. If you need to switch portals, reconnect — the new OAuth grant will replace the old one.

Rate limits — is this going to burn through my HubSpot API quota? No. Clynto honors HubSpot's rate limit headers, batches company lookups 50-at-a-time with small delays between batches, and paces contact reads at 0.3 seconds per batch of 100. A daily sync typically consumes a few hundred API calls, well inside HubSpot's standard quota even on the lowest tiers.

Which HubSpot plan do I need? Any plan that exposes the CRM Objects API — which is every HubSpot tier from Starter upward. The integration uses standard objects (companies, contacts, deals) and standard scopes, so there's no Enterprise-only feature required.


Need help?

If something's not working and the troubleshooting above doesn't cover it, contact support and include:

  • Your workspace name
  • The exact text of any error shown on the HubSpot card
  • Roughly when you last had a successful sync (the "Last sync" timestamp on the card)
  • Your HubSpot Portal ID if you know it (visible in HubSpot's URL: app.hubspot.com/contacts/<portal-id>/…)

We can pull the integration's recent sync history from our side and tell you exactly what happened.