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.
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.
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.
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.
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.
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.
Trial on request · contact our sales team.