Import contacts or companies via CSV
An authorized you upload a CSV file to create or update multiple Contact or Company records using a guided field mapping wizard.
When this happens: You click Import on the Contact or Company list view.
Step by step
- 1
Click Import on the list view and selects CSV Import.
EasyCRM shows the Import Wizard — Step 1: File Upload.
- 2
Select a CSV file (max 10 MB) and uploads it.
EasyCRM reads the CSV headers. EasyCRM checks: file is valid CSV, UTF-8 encoding, ≤ 10,000 rows. EasyCRM shows header preview (first 5 rows). Import Wizard — Step 2: Field Mapping. EasyCRM shows two columns: CSV headers on the left, CRM fields on the right (dropdowns). Auto-maps matching headers. EasyCRM shows Unmapped badge for unmatched headers.
- 3
Review and adjust mappings. Marks required CRM fields (e.g. Company Name, Contact First Name/Last Name).
- 4
Click Next.
Import Wizard — Step 3: Duplicate Handling. EasyCRM shows options: When a duplicate is found: — Skip / Update existing / Create new. Duplicate key: Email for Contacts (then phone, for an individual customer's row), Name+Domain for Companies.
- 5
Select duplicate handling strategy. Clicks Next.
Import Wizard — Step 4: Preview & Validation. EasyCRM checks all rows: data types, required fields, format. EasyCRM shows: [N] rows valid, [M] rows with errors Error rows shown with specific issues (e.g. Row 42: Invalid email format). Two rows of the file with the same email, or the same phone number (normalized), get a warning.
- 6
Review. Can fix the CSV and re-upload (back to step 3) or proceed with valid rows only. Clicks Start Import.
EasyCRM processes import in background. For each row: validates, checks duplicates, creates or updates record per strategy. On completion, displays import summary: Created: [N], Updated: [M], Skipped (duplicate): [P], Failed: [Q] Results downloadable as a CSV containing row-level status and error details.
Other paths
Update existing on duplicate
If a row matches an existing record. With Update existing strategy: merges the CSV values into the existing record (non-blank CSV values overwrite). Each updated record gets its own audit log entry / CompanyUpdated.
Skip on duplicate
Matching row is skipped. Counted in Skipped total.
Import companies with contacts
CSV includes both Company and Contact fields (e.g. Company Name, Contact First Name, Contact Email). If maps to both entity types. EasyCRM creates Companies first, then creates Contacts linked to the corresponding Company.
Individual customers (contacts without a company)
Upload a CSV of customers who are people, not businesses: a row's Company is empty, or no Company column is mapped. EasyCRM imports each such row as an individual customer, a Contact with no Company. A row that names a Company that does not exist is still an error unless Create missing companies is chosen.
Matching an individual customer by phone
If a Contact row names no Company and its email matches no existing Contact. EasyCRM matches the row's phone or mobile phone (normalized) against the existing Contacts' phone numbers and the numbers customers called or wrote from, read once, when the file reaches its first row without a Company. The row matches only when exactly one Contact holds the number, that Contact has no email or the row's email, existed before this import, and is still an individual customer and not erased when the row is applied (a Contact given a Company or anonymized while the import runs is no match). Otherwise the row is new. With Create new no row is matched by phone. A match is a duplicate for the chosen strategy. With Update existing, the Contact keeps its first and last name, and gets the row's email when it has none, unless the Contact belongs to someone whose records the importing user may not see (below).
If something goes wrong
File too large or too many rows
If file exceeds 10 MB or has > 10,000 rows. EasyCRM shows: File exceeds the maximum size. Please reduce to 10,000 rows or less
Invalid CSV format
If file is not valid CSV. EasyCRM shows: Unable to parse the file. Please ensure it is a valid CSV file with UTF-8 encoding
Required field not mapped
If a required CRM field is not mapped to any CSV column. EasyCRM shows: Required field '[FieldName]' is not mapped. Please assign a CSV column
Partial import failure
If some rows fail (invalid data, concurrent conflicts). Successfully imported rows are committed. Failed rows are tallied in Failed count with per-row error details in the downloadable report.
The match belongs to someone else
If a Contact row matches, by email or by phone, a Contact owned by someone whose records the importing user may not see (a role sees its own customers, its team's, or all). An unowned Contact, one not assigned to anyone yet, is matched for every user. With Update existing, the Contact is not changed and no Contact is created: the row is counted as skipped, and the downloadable report lists it with the warning This row matches a contact that belongs to someone outside your access, so it was not updated With Skip the row is skipped, and with Create new it is inserted, as for any match.
Good to know
- Maximum 10,000 rows per import.
- Imported records are owned by the importing user.
- Duplicate detection uses email for Contacts (then, for an individual customer's row, phone), Name+Domain for Companies.
- Import runs in the background for large files.
- An import never updates a Contact owned by someone whose records the importing user may not see; unowned Contacts are matched for every user.