Skip to main content
The HubSpot integration imports contacts from HubSpot lists or from your due call tasks, and logs every dialed call back to HubSpot as a call engagement on the contact. Connect it from Settings → Connections & API → HubSpot.

Architecture

Salesfinity is a public HubSpot app installed through OAuth. It uses HubSpot’s CRM and engagements APIs only; nothing is added to your portal beyond the app itself, which appears under Settings → Integrations → Connected Apps once a user has connected.

Permissions required to connect

Salesfinity authorizes with HubSpot through OAuth. When you click Connect, HubSpot shows the permissions below. The first group is required: HubSpot will refuse the install if your portal cannot grant one of them. The second group is requested but optional: HubSpot grants each one only if your portal has the feature, and silently drops it otherwise, so a portal without deals or sequences can still connect.

Required

Optional

A permission that was optional at connect time cannot be added later without reconnecting. If a HubSpot feature returns “missing the Companies read permission” or “missing the Deals read permission”, disconnect and reconnect HubSpot and approve the full list. See Troubleshooting.
The person connecting needs a HubSpot seat that can grant these permissions. Super admins always can. A user with a restricted permission set may see the install refused.

For HubSpot admins: setup checklist

1

Decide who connects

Every rep can connect with their own HubSpot user, in which case calls are logged as that user and tasks are imported from that user’s queue. Or a team admin connects once and turns on Share with team, and reps who never connect use the admin’s connection while calls are still attributed to the owner the admin assigns them. Most teams have each rep connect.
2

Check who can install

Installing requires a HubSpot user who can grant every required permission. A super admin always can. A user with a restricted permission set may be refused at install time, and a portal whose subscription lacks a feature will silently drop the matching optional permission.
3

Connect and approve the full permission list

From Settings → Connections & API → HubSpot click Connect, choose the portal, and approve. Approve everything shown. A permission skipped now can only be added by reconnecting.
4

Set the call task source

In the integration’s configuration, pick the HubSpot user whose tasks “All due tasks” should import. It defaults to the connecting user. In a shared integration, set it per member under “Call task source per member”; a member without one cannot import tasks.
5

Map dispositions and fields

Use the automatic suggestion to map every Salesfinity disposition to a HubSpot call outcome, then map contact properties to Salesfinity fields and pick any custom properties you want on the contact card.
6

Import and check attribution

Import a small list, dial one contact, and open the call in HubSpot. The engagement should sit on the contact’s timeline under the rep’s owner, and any open call task on that contact should now be completed.

Objects and access

The dialer integration never deletes anything in HubSpot and never archives a contact.

How task completion works

When a call is logged on a contact, Salesfinity reads the engagements associated with that contact and finds the tasks that are call type and still not started. Each one is set to completed, keeps its original owner, and gets the body “Call was made.” Tasks of other types (email, to-do) and tasks already in progress are left alone. This is why a task imported through “All due tasks” disappears from the rep’s HubSpot queue after the call without anyone touching HubSpot.

Owner attribution

HubSpot separates the user who logs in from the owner record used on CRM objects. When a rep connects, Salesfinity resolves their owner ID from the owner list and stores both. Every engagement is created with that owner, and “All due tasks” filters on it. If a rep’s calls show up unowned in HubSpot, the rep has no owner record in the portal; create one for them in HubSpot and reconnect.

What Salesfinity imports

You can import from HubSpot in two ways.
  • A list. Pick any HubSpot list, active or static. Salesfinity reads its members and their mapped properties into a Salesfinity contact list named after the HubSpot list.
  • All due tasks. Import with no list selected and Salesfinity pulls the open tasks assigned to your configured call task source user whose due date has passed or is today, along with the contact each task is associated with. The list is named “All due tasks”. Tasks that are already completed are skipped.
Each imported contact keeps its HubSpot contact ID, which is how the call is routed back to the right record later. Contact fields are filled from your contact field mapping; unmapped properties are not imported.

What Salesfinity writes back

When you log a call on a HubSpot-sourced contact, Salesfinity creates a call engagement in HubSpot and associates it with the contact. The engagement carries: After creating the engagement, Salesfinity marks the contact’s open tasks as completed, so a task you imported disappears from your HubSpot queue once you have called it. Two more write paths run outside of call logging:
  • Contacts you dial from a CSV or custom list are logged to HubSpot too, if HubSpot is connected. Salesfinity searches HubSpot for the person by email or phone number. If nobody matches, it creates the contact first and then logs the call.
  • Phone numbers found by enrichment or edited in the dialer can be pushed back onto the HubSpot contact.
The call log in Salesfinity keeps a link to the created engagement so you can open it in HubSpot from call history.

Sequences

From the dialer you can enroll a contact in a HubSpot sequence. Enrollment needs the optional sequence enrollment permission and a sender email, which is the connected HubSpot user’s inbox. HubSpot has no public API to unenroll a contact, so remove and move between sequences are not available for HubSpot. Do those in HubSpot itself.

Configuration

Open the integration after connecting to reach these settings.
The HubSpot user whose call tasks are imported by “All due tasks”. Defaults to the user who connected. Change it if a manager connects on behalf of a rep, or if tasks are assigned to a shared owner.
Maps each Salesfinity disposition to a HubSpot call outcome. Salesfinity’s built-in dispositions fall into answered, no answer, left voicemail, gatekeeper, bad number, and cancelled. Every one must be mapped; when HubSpot has fewer outcomes than Salesfinity, several Salesfinity dispositions map to the same outcome. Use the automatic suggestion to fill the whole table, then adjust.
Which HubSpot contact property fills each Salesfinity field. A field can pull from more than one property, which is useful when a phone number may live in either “Phone” or “Mobile”.
Additional contact, company, and deal properties to bring across. Supported property types are text, textarea, number, select, radio, checkbox, and phone number. These show as custom fields on the contact in the dialer and can be used in filters.
Available to a team admin or owner on their own HubSpot connection. Shares the field and disposition mappings with every member, and lets members who have not connected HubSpot use this connection for import and call logging. See sharing an integration.

Rate limits

HubSpot enforces a per-portal limit on search requests that is shared by every user and app in the portal. Salesfinity throttles its own searches to stay under it, and retries automatically when HubSpot asks it to wait. A very large import or a busy portal can therefore take longer than usual without anything being wrong.

Questions admins ask

Reps need whatever HubSpot seat lets them create calls and tasks on contacts. Sequences, deals, and sales email history depend on Sales Hub features; without them the matching optional permissions are dropped and those features are simply absent in Salesfinity.
A call engagement carries duration, outcome, direction, recording URL, and both phone numbers as structured properties, so HubSpot reports and workflows can use them. A note would lose all of that.
Reps see every list their HubSpot user can see. Restrict list visibility in HubSpot and the picker follows.
HubSpot limits search calls per second per portal, shared by every app and user in the portal. Salesfinity throttles its own searches and retries when HubSpot asks it to wait, so large imports can take longer at busy times but do not fail.
Salesfinity stores the OAuth access and refresh token for each connected user in its credential store; they are never shown in the UI or returned by the API. Disconnecting deletes them; uninstalling the app in HubSpot invalidates them.

How data moves

Where a call goes after you log it, and what each sync state means.

Troubleshooting

Missing permissions, empty imports, and failed syncs.