closehunt
CRM · Integration

CloseHunt × Salesforce · your CRM stays in sync, both ways

Bi-directional Salesforce OAuth sync. Pull Contacts and Leads with smart multi-key deduplication, push CloseHunt prospects back as Contacts. SOQL incremental, never re-fetches everything.

What you get

The Salesforce integration ships with

OAuth 2.0 Web Server flow, refresh tokens handled automatically — no manual re-auth
Pulls both Contacts and unconverted Leads (SOQL incremental on LastModifiedDate)
Multi-tier dedup: exact email auto-merges; phone, LinkedIn or name+company matches go to a review queue
Outbound push idempotent — CloseHunt leads land as Contacts; subsequent syncs PATCH instead of duplicate
Sandbox-friendly: flip SALESFORCE_LOGIN_URL to test.salesforce.com for a dry run
01-04 · Setup

Connect Salesforce in 4 steps

01
In Salesforce Setup → Apps → App Manager, create a Connected App with OAuth 2.0
02
Add the CloseHunt redirect URI shown in your workspace settings
03
Grant the api, refresh_token and offline_access scopes
04
Copy the Consumer Key and Secret into CloseHunt env, then open /connections → CRM and click Connect Salesforce
FAQ · Questions, answered

About the Salesforce integration

Does the integration pull both Contacts and Leads from Salesforce?

Yes. Salesforce splits prospects into two objects — early-stage Leads and converted Contacts. CloseHunt pulls both and stamps the appropriate mirror id (salesforceLeadId or salesforceContactId) on each CloseHunt lead so future syncs route the right update path.

How does deduplication against my existing CloseHunt leads work?

We match in tiers: exact email (case-insensitive) auto-merges. Phone-number match, LinkedIn URL match, or a firstName+lastName+company match goes to a pending-review queue you resolve from /connections/salesforce-pending. You can merge into the existing record, import as new, or skip.

Is the sync incremental or full?

Incremental by default — we use SOQL with a LastModifiedDate > Integration.lastSyncAt filter so each sync only pulls what changed. The 'Full re-sync' toggle on the connections card bypasses that for a complete rebuild.

What scopes does CloseHunt request?

api (basic API access), refresh_token and offline_access (so we can keep the connection alive without you having to re-authorise every 2 hours). We never request data: access beyond Contacts, Leads and Accounts.

Can I push a CloseHunt lead to Salesforce on demand?

Yes — POST /api/integrations/salesforce/push with the lead id. We create a Contact if the lead has no salesforceContactId yet, otherwise we PATCH the existing record. The lead row is stamped with the returned Salesforce id so subsequent calls are always idempotent.

3 minutes to your first agent

Plug Salesforce into CloseHunt.

Trial on request · contact our sales team.