PPactDocs
Integrations

Connecting your CRM

Sync contacts, accounts, and opportunities from Salesforce or HubSpot into Pact.

Pact can sync data from Salesforce and HubSpot so you do not need to do a one-time CSV migration. The sync runs continuously — new records and field changes are reflected in Pact within minutes.

What syncs

ObjectSalesforceHubSpot
Contacts
Accounts / Companies
Opportunities / Deals
Activities (calls, emails)
Tags / Lists

Custom fields on any object are carried across as Pact custom fields.

Connecting Salesforce

Prerequisites

  • A Salesforce account with API access enabled (Professional, Enterprise, or Unlimited edition).
  • A Salesforce user with System Administrator profile, or a custom profile with API Enabled and Modify All Data permissions.

Steps

  1. Go to Settings → Integrations → Salesforce.
  2. Click Connect Salesforce.
  3. You are redirected to Salesforce's OAuth login. Sign in as the integration user.
  4. Approve the requested permissions.
  5. On return to Pact, the initial sync begins. Progress is shown on the integration settings page.

The initial sync can take 10–30 minutes for large orgs. Subsequent syncs are incremental and run every 5 minutes.

Field mapping

Pact maps standard Salesforce fields automatically. Review and adjust the mapping in Settings → Integrations → Salesforce → Field Mapping. Custom Salesforce fields appear at the bottom of the mapping screen with their API names (e.g., Lead_Source__c).

Connecting HubSpot

Prerequisites

  • A HubSpot account with CRM access.
  • HubSpot user role: Super Admin or a role with Contacts, Companies, and Deals read/write access.

Steps

  1. Go to Settings → Integrations → HubSpot.
  2. Click Connect HubSpot.
  3. You are redirected to HubSpot's OAuth screen. Select the HubSpot account you want to connect.
  4. Approve the requested scopes.
  5. The initial sync starts immediately.

Sync direction

By default, the sync is CRM → Pact (read-only from the CRM perspective). Pact does not write back to Salesforce or HubSpot unless you enable Bidirectional sync in the integration settings.

With bidirectional sync enabled:

  • Pact sequence activity (sent, opened, replied) is logged back to the CRM as activity records.
  • Consent status changes in Pact update the corresponding opt-out field in the CRM.
  • Stage changes made in Pact update the opportunity stage in the CRM.

Bidirectional sync is only available on the Growth and Enterprise plans.

Conflict resolution

When a record is updated in both systems between sync intervals, Pact uses last-write-wins by timestamp. The losing change is logged in the activity feed so you can audit it.

Stage mapping

When opportunities sync from Salesforce or HubSpot, their stages are mapped to your Pact pipeline stages. Pact auto-maps stages by name (case-insensitive). Unmapped stages appear in a Review required list in Settings → Integrations → [CRM] → Stage Mapping.

Assign each unmapped stage to an existing Pact stage, or create a new Pact stage to match.

Disconnecting

Go to Settings → Integrations → [CRM] and click Disconnect. Data already synced remains in Pact; no data is deleted. Future changes in the CRM will no longer sync.

Troubleshooting

Sync shows "Authentication expired"

OAuth tokens expire when the integration user's password changes or an admin revokes the token. Reconnect using the Reconnect button on the integration settings page.

Records not appearing after initial sync

Check the sync log in Settings → Integrations → [CRM] → Sync Log. Rows with status: skipped include a reason — typically a missing required field (email) or a record outside the sync filter.

Duplicate contacts

Pact deduplicates on email. If a contact exists in both the CRM and Pact with different emails, they will not merge automatically. Merge them manually from the contact detail page using Merge → Select duplicate.