GuideHow toSmart CRM

Plan a CRM migration from spreadsheets and exports: the steps that kept a bank's load clean

A community bank's banking platform export had 15,820 logins. After cleanup it was 14,251 people. Planning for that gap is most of a migration.

Subscription
All tiers
Permissions
Import access; property create access; Super Admin to set marketing contact status
Time
10 min · Advanced
Last verified

Short answer

Before importing, find out how many real people and companies the source actually holds. A bank's export of 15,820 logins was 14,251 people, because 1,483 email addresses were shared between users. Then choose match keys and test them: the bank's two systems shared no common ID, so matching went email first, then phone plus last name, because one phone number appeared on 311 users. Load a 25-record canary before the full run, keep every loader re-runnable, create new contacts as non-marketing, and export conflicts for a person to review.

1. Count real records first

The bank's export had one row per online banking login. Several family members or business staff often shared one email address. Importing logins as contacts would have merged unrelated people on email. The rules we set:

  • Identical names across logins on one email merge into one contact.
  • Different people on one email: one keeps the contact, the rest get a shared-email field so nothing is lost.
  • Role mailboxes like info@ go to the company record instead of becoming an invented person.
Data integration page with Import a file, Sync from apps and a Monitor your imports section
Data integration: one-time file imports (1) and the import history you will check after each stage (2).

2. Pick and test match keys

The bank's CRM and its banking platform shared no common key. Email matched most records. For the rest we used phone plus last name, not phone alone, because a single phone number appeared on 311 different users. Measure how unique a key is before trusting it.

3. Decide who wins

On conflict, the existing system's value stayed, and all 1,315 disagreements went to a CSV for a person to review. Silent overwrites are what make migrated data untrustworthy.

4. Load in stages

  • Canary: push 25 deliberately varied records first, then look at them in HubSpot.
  • Re-runnable loaders: each step checks what is already in the portal first, so a crash mid-load can resume without duplicates.
  • Rollback file: record every ID created so a bad batch can be removed.
  • Non-marketing by default: every new contact was created as non-marketing, and that field was never written on existing contacts.

For one-off spreadsheet loads, HubSpot's importer can do much of this. Advanced imports cover all objects and associations.

Import start screen with Quick import, Advanced imports and Repeat a past import options
Advanced imports (1) handle multiple objects and associations.

5. After the load

The last phase built segments from the new data. Build a few check lists too, such as contacts with no company or companies with no owner, and expect them to be empty. Related: duplicates after an import and finding the records from an import.

Sources

New field notes by email

One email when a new article publishes.

Still stuck?

If this did not fix it, the problem is probably specific to your setup. Book a call and we will look at it together.

Book a call with Sam