CRM Import Overview
CRM Import lets you bulk-migrate a tenant's buyer accounts and their contacts out of a connected CRM (Salesforce, HubSpot, or Microsoft Dynamics) and into DealHub. Instead of syncing one quote or opportunity at a time like the CRM Integration API, you hand over a list of buyer-account CRM ids and DealHub does the rest: fetching each account and all of its contacts from the CRM and persisting them in the background.
Buyer Account vs. OpportunityA buyer account is the customer/company record in your CRM (with its contacts). This is different from the opportunities and quotes covered by the CRM Integration API. CRM Import is about bringing customer master data into DealHub, typically as a one-time or periodic migration rather than a per-deal action.
How the Import Works
Because a migration can span many thousands of accounts and contacts, the import runs asynchronously:
- Your system sends the list of buyer-account CRM ids to Start CRM Import.
- DealHub immediately returns a
request_idand begins processing the ids in the background, concurrently and in batches. - DealHub fetches each account (and its contacts) from your CRM and persists it in DealHub, skipping ids that are already imported or that no longer exist in the CRM.
- When every id has reached a terminal state, DealHub publishes a
crmImportwebhook event carrying the samerequest_idand the final counts. - At any point, while running or after completion, you can poll the tracking services with that
request_idfor progress and per-record outcomes.
sequenceDiagram
participant System
participant DealHub
participant CRM
System->>DealHub: POST /crm-import (buyer_account_crm_ids)
DealHub-->>System: 200 OK (request_id)
DealHub->>CRM: Fetch accounts + contacts (background, batched)
System->>DealHub: GET /crm-import/status (request_id)
DealHub-->>System: counts + failures
DealHub-->>System: crmImport webhook (on completion)
TipIf an import is already running for the tenant when you call Start, DealHub returns that import's
request_idinstead of starting a second one. It's always safe to call Start again.
Tracking Services
CRM Import exposes its own tracking services, richer than the generic asynchronous request summary used by other Open APIs:
| Service | Use it when you need... |
|---|---|
| Get CRM Import Status | Aggregate progress (totals, succeeded/failed/skipped) plus a flat list of failures, the one to poll. |
| Get CRM Import Detail | The full picture: every buyer account and each of its contacts, with individual states and reasons. |
| Lookup CRM Import Id | To resolve one specific CRM id (e.g. answering "did account X make it over?") without scanning the whole import. |
All three (plus Retry) accept an optional request_id; if you omit it, DealHub uses the tenant's most recent import.
Safe to Repeat
Accounts that already exist in DealHub (matched by CRM id) and ids not found in the CRM are skipped, not treated as errors. That means:
- Running Start again with the same ids is a no-op for anything already imported.
- A partially failed import can be re-run with Retry CRM Import, which reprocesses only the failed (and any unfinished) ids.
Supported IntegrationsCRM Import only works for tenants connected to Salesforce, HubSpot, or Microsoft Dynamics. A tenant on any other CRM (or none) receives an
Unsupported integrationerror on Start or Retry.
Ready to Get Started?
- Start a CRM Import - kick off a migration for a batch of buyer accounts
- Track Import Progress - poll status, drill into detail, or look up a single id
- Retry a Failed Import - re-run the ids that didn't make it over
Updated 12 days ago
