CSV import is how most CRM migrations actually happen. Whether you’re moving from HubSpot, Salesforce, a spreadsheet, or any other system, the process almost always goes through a CSV file at some point. Getting that file right before you upload it is the difference between a clean migration and hours of post-import cleanup.
This guide covers how to prepare a CSV for import into a WordPress CRM, what to check before uploading, and how to handle the most common problems.
What Makes a Good Import CSV
A CSV that imports cleanly has a few characteristics:
Free CRM Implementation Checklist
70% of CRM implementations fail. Don't be one of them. Get our 40+ point checklist covering all 5 implementation phases.
Get the Free Checklist- One row per contact, no exceptions
- Column headers in the first row only
- Consistent data in each column (no mixing of formats or types)
- Email addresses that are valid and unique
- No blank rows, merged cells, or extra worksheets
- UTF-8 encoding for international characters
Most import failures happen because one of these conditions isn’t met. Check each one before you upload.
Step 1: Get Your Export File
Every CRM has an export function. Your starting point depends on where you’re coming from:
- HubSpot: Contacts > Export > Choose properties > CSV
- Salesforce: Reports > Create report on Contacts > Export > CSV
- Pipedrive: Contacts > List > Export to CSV
- Google Sheets or Excel: File > Download as / Save As > CSV
- Any other CRM: Look for an “Export” or “Download” option in the Contacts or People section
Platform-specific export guides are available for HubSpot and Salesforce if you need the full walkthrough.
Step 2: Open and Inspect Your CSV
Open your CSV in Google Sheets or Excel. Do not double-click to open a CSV in Excel directly, as Excel sometimes auto-formats data incorrectly (especially phone numbers, which get converted to scientific notation). Instead:
In Excel: Open Excel first, then use File > Open or Data > From Text/CSV to import the file with the correct settings.
In Google Sheets: Upload the file directly to Google Drive, then open it.
Once open, look at the data:
- How many rows do you have?
- What are the column headers?
- Are there any obvious formatting issues in the data?
- Do any columns look wrong (phone numbers in scientific notation, dates formatted oddly)?
Step 3: Clean the Column Headers
Column headers from CRM exports are often verbose or include characters that import tools don’t handle well. Clean them up:
- Remove special characters from headers (avoid slashes, parentheses, brackets)
- Use simple, descriptive names: “Email”, “First Name”, “Last Name”, “Phone”, “Company”, “Status”
- Make headers consistent: all lowercase, or all title case, but not mixed
- Remove duplicate header rows if they exist (some CRM exports include the header twice)
Step 4: Validate Email Addresses
Email is the primary key for contacts in most CRMs. Duplicate or invalid emails cause import failures or create duplicate records.
In Google Sheets, you can check for basic email format with a formula:
=IF(ISNUMBER(FIND("@",A2)),IF(ISNUMBER(FIND(".",A2)),"OK","Invalid"),"Invalid")
This won’t catch every invalid email, but it filters out obvious problems. For a more thorough check, run your email list through a validation tool before importing.
To find duplicates in Google Sheets:
- Select the email column
- Format > Conditional Formatting
- Set “Format cells if” to “Custom formula is”
- Enter:
=COUNTIF($A:$A,A1)>1 - This highlights any email that appears more than once
Review and resolve duplicates before importing. Keep the most complete record and delete the duplicate.
Step 5: Standardize Your Data
Inconsistent data is the most common cause of post-import cleanup work. Go through each column and standardize:
Phone Numbers
Pick a format and apply it consistently. A simple standard: include country code, no spaces or dashes. Example: +447911123456. Or go with a national format: 07911 123456. Either is fine as long as it’s consistent across all rows.
Status or Stage Values
If you have a status column, the values need to be consistent. “Customer”, “customer”, and “CUSTOMER” will create three separate segments in your CRM. Use find-and-replace to standardize.
Country Names
Decide on a standard: full country names or two-letter codes (UK vs United Kingdom, US vs United States). Pick one and apply it throughout.
Date Formats
If you have date fields (last contacted, sign-up date), use a consistent format. ISO format (YYYY-MM-DD) is safest for imports.
Step 6: Handle Special Characters
Names with accented characters (Müller, García, Björk) need UTF-8 encoding to import correctly. When saving your CSV:
In Google Sheets: File > Download > CSV (it saves as UTF-8 by default).
In Excel: File > Save As > choose “CSV UTF-8 (Comma delimited)” from the file type dropdown.
If you’re unsure about encoding, open the saved CSV in a plain text editor and check that special characters look correct.
Step 7: Do a Test Import First
Before running your full import, test with a small batch. Pull 10 rows from your CSV (keep the header row) and save as a separate test file. Import that first.
Check:
- Did all 10 contacts appear?
- Did each field land in the right column?
- Are there any truncated values or character encoding issues?
- Did custom fields populate correctly?
If the test import looks good, run the full import. If there are issues, fix your CSV and test again before scaling up.
Step 8: Run the Full Import in SkunkCRM
- Go to SkunkCRM > Contacts > Import
- Upload your full CSV
- Use the column mapping interface to match each CSV column to the correct CRM field
- Review the mapping for any columns that didn’t auto-match
- Run the import
- Review the results report: check created, updated, and failed counts
If any rows failed, the results report will tell you why. Common failure reasons: duplicate email addresses, required fields missing, or invalid values in a field with constrained options.
Common Import Errors and How to Fix Them
Email already exists: A contact with that email is already in your CRM. Either delete the existing record first, or choose the “Update existing” option if your import tool supports it.
Required field missing: Your CRM requires a field that’s blank for some rows. Either fill in those values before re-importing, or relax the field requirement in your CRM settings.
Invalid field value: A field with a fixed set of options (like a status dropdown) received a value that’s not in the list. Add the missing option to your field settings, or update the CSV to use an existing option.
Character encoding errors: Names or addresses are showing garbled characters. Re-save your CSV as UTF-8 and try again.
After the Import
Once your contacts are in, spend 15 minutes spot-checking records before you do anything else. Pick 10 contacts at random from your original CSV and compare them against what appears in your CRM. Catching issues now is much easier than finding them later.
For the full migration framework, the pillar guide on how to migrate to a WordPress CRM without losing data covers everything from audit to post-migration verification. For more on preparing your data before the import, see the guide on CRM data cleaning before migration.
SkunkCRM’s import tool is designed to handle standard CRM CSV exports directly. Learn more at skunkcrm.com.