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. Opportunity

A 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:

  1. Your system sends the list of buyer-account CRM ids to Start CRM Import.
  2. DealHub immediately returns a request_id and begins processing the ids in the background, concurrently and in batches.
  3. 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.
  4. When every id has reached a terminal state, DealHub publishes a crmImport webhook event carrying the same request_id and the final counts.
  5. At any point, while running or after completion, you can poll the tracking services with that request_id for 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)
📘

Tip

If an import is already running for the tenant when you call Start, DealHub returns that import's request_id instead 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:

ServiceUse it when you need...
Get CRM Import StatusAggregate progress (totals, succeeded/failed/skipped) plus a flat list of failures, the one to poll.
Get CRM Import DetailThe full picture: every buyer account and each of its contacts, with individual states and reasons.
Lookup CRM Import IdTo 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 Integrations

CRM Import only works for tenants connected to Salesforce, HubSpot, or Microsoft Dynamics. A tenant on any other CRM (or none) receives an Unsupported integration error on Start or Retry.

Ready to Get Started?



Did this page help you?