How-to

How to import contacts from a CSV

Bulk-import contacts into NerdCRM with the built-in CSV importer. Field mapping, duplicate handling, and tips for clean data.

Updated May 7, 20262 min read

How to import contacts from a CSV

The fastest way to get started is to bring your existing contacts in. NerdCRM has a built-in CSV importer that handles field mapping, deduplication, and batched inserts.

What works as input

  • A CSV file with one row per contact
  • A header row with column names
  • UTF-8 encoding (export from Excel as CSV UTF-8, not the default)
  • Common columns we recognize: firstName, lastName, email, phone, company, jobTitle, tags, notes

We don’t require any of these; we let you map columns to fields manually.

Step 1 — Open the importer

Settings → Import → Contacts — drop your CSV file into the upload area, or click Choose file.

Step 2 — Map the columns

The importer auto-detects common header names. Review each mapping; you can:

  • Map any CSV column to a NerdCRM field
  • Skip columns you don’t want imported
  • Set a default value (e.g., a tag of imported-from-bigin) for every row
  • Choose what to do on duplicate emails: skip, update, or create

Step 3 — Choose how to assign company and pipeline

If your CSV has a company column, we’ll create or match companies as we go. If you also want to create a deal for each contact, check Create deal and pick the pipeline + starting stage.

Step 4 — Preview, then import

The preview shows the first 10 rows mapped to NerdCRM fields. If anything looks wrong (especially phone numbers), fix the CSV and re-upload. Once it looks right, click Start import.

Imports run in batches of 100 rows. For large files (10k+ rows), you’ll see a progress bar and a summary email when the import finishes.

Phone-number formatting

For call recording auto-link to work, phones should be in E.164 format (e.g., +15551234567, +8801711111111). If your source has formats like (555) 123-4567, we’ll auto-normalize during import — but it’s worth checking a few rows manually for accuracy.

Duplicate handling

Default behavior: if a contact’s email already exists in your org, skip the row. Override at import time:

  • Skip — never write, just log
  • Update — merge new fields onto the existing contact
  • Create — write anyway (creates a duplicate)

We dedupe by email; if your CSV doesn’t have email, dedup is by phone number, otherwise no dedup.

After the import

  • Review Imports → Recent to see counts: created, updated, skipped, failed
  • Failed rows are downloadable as a CSV with a reason column for each — fix and re-import
  • All imported records get a import-batch-{timestamp} tag so you can find them as a group later

Common gotchas

  • Excel auto-formats phone numbers — wrap them in quotes inside the CSV or save as text
  • Trailing whitespace in emails — we trim, but it’s better to clean upstream
  • Mixed encodings — save as CSV UTF-8 in Excel, not just CSV
  • Missing first/last name — we accept either or both; rows with neither are flagged

See it in action

A read-only demo with phone-heavy sales data, ready in one click. No signup required.

More from help