If you're moving from another CRM, a spreadsheet, an email tool, or a paper Rolodex, you'll need to get those contacts into Intellivizz CRM. The import wizard handles standard fields (name, email, phone, address) automatically, plus custom fields you've created. This article covers preparing your CSV, the import process, deduplication, and what to do if something goes wrong.
Importing 50,000 contacts is the same effort as importing 50 — maybe 5 extra minutes of processing time. The work is in cleaning the data BEFORE you import. Garbage-in, garbage-out applies brutally here.
Every CRM and email tool has a contact export. Find yours and export to CSV. Some common locations:
HubSpot: Contacts → Actions → Export
Salesforce: Setup → Data Export → Schedule Export
Mailchimp: Audience → All Contacts → Export Audience
Google Contacts: contacts.google.com → Export
Outlook: File → Open & Export → Import/Export → Export to CSV
Most CRMs: look for a Contacts page with an Export button
Open your CSV in Excel, Google Sheets, or Numbers. Walk through these passes:
Remove duplicate rows (sort by email, eyeball; or use Excel's Remove Duplicates feature)
Standardize phone formats: prefer +1xxxxxxxxxx, but Intellivizz auto-normalizes most US/Canada formats
Verify email column has actual emails (not full names)
Split full-name columns into "First Name" and "Last Name" if needed
Remove deceased contacts, former employees, test entries, "DO NOT CONTACT" rows
Add a "Source" column noting where these came from (helps you remember context later)
Add a "Tags" column with pipe-delimited tags ("client|vip|2024" — we'll map this on import)
WARNING — Verify SMS opt-in status before importing
Importing a contact does NOT automatically grant you legal consent to send them SMS. Under TCPA in the US and CASL in Canada, you need documented prior consent. If your old system tracked opt-in status (a checkbox, a date, a source), preserve that as a custom field during import — then create a Smart List of opted-in contacts only, and use THAT list for any SMS campaigns. Importing 5,000 contacts and immediately blasting them SMS is the fastest way to get your A2P number flagged for spam and your business sued.
TCPA (47 U.S.C. § 227(b)(1)(A)) — Requires "prior express written consent" for automated SMS marketing in the US. Retain consent records for 4+ years.
CASL (S.C. 2010, c. 23) — Canadian Anti-Spam Legislation requires explicit, documented consent for any commercial electronic message.
122. Save just 5–10 rows of your CSV as test_import.csv
123. In Intellivizz CRM, go to Contacts → Import
124. Upload test_import.csv
125. Map columns: drag your CSV columns onto matching Intellivizz fields
126. For columns that don't match a default field, create a Custom Field on the fly
127. Preview what will be imported — check 2–3 rows look right
128. Click Import — should take seconds for 10 rows
129. Open Contacts → verify the test contacts look correct (name, email, phone, custom fields, tags)
130. If anything is wrong, fix your CSV and run another test — do NOT proceed to full import yet

131. Once test import looks correct, upload the full CSV
132. Apply the same column mapping (or save the mapping as a template)
133. Choose deduplication strategy: Skip duplicates (safest), Update existing (overwrite), or Always create new (rarely correct)
134. Click Import
135. For 10,000+ rows, the import processes in the background — you'll get an email when complete
136. Once complete, spot-check 10–20 random contacts to confirm everything imported correctly
| Intellivizz field | CSV column patterns it matches | Notes |
|---|---|---|
| First Name | first_name, fname, given_name | Required for personalization |
| Last Name | last_name, lname, surname, family_name | - |
| email, email_address, e_mail | Used for deduplication by default | |
| Phone | phone, mobile, cell, telephone | Auto-normalized to E.164 (+1xxxxxxxxxx) |
| Company | company, organization, employer | Optional B2B |
| Address | street, address1, addr_1 | Combines with city/state/zip |
| City | city, town | |
| State | state, province, region | 2-letter abbreviation preferred |
| Postal Code | zip, postal_code, postcode | |
| Country | country | 2-letter code preferred (US, CA) |
| Tags | tag, tags, labels | Pipe-delimited or comma-delimited |
| Source | source, lead_source, origin | Tracks where the contact came from |
| Custom fields | anything else | Map to existing Custom Field or create new on-the-fly |
Worked example: Migrating 8,000 contacts from HubSpot
Heritage Accounting exports their HubSpot contacts: name, email, company, phone, "Lifecycle stage" (lead/customer/etc.), "Source" field, "Last contact date".
They open the CSV in Google Sheets and clean: remove 240 duplicates, remove 80 deceased/inactive, standardize phone formats.
They create 4 Custom Fields in Intellivizz CRM matching: Lifecycle Stage, Source, Last Contact Date, Hubspot ID.
They run a 10-row test import — spot check, looks good.
They run the full import (8,000 rows) — takes 90 seconds. Email notification confirms 7,920 imported, 80 skipped (duplicates by email).
They spot-check 20 random contacts, verify everything mapped correctly, and tag the entire batch with "imported-from-hubspot-2026-04" so they can filter later.
Worked example: Importing 200 contacts from Mailchimp — with consent verification
Marco exports his Mailchimp audience: name, email, sign-up source, sign-up date, opt-in status.
He notices Mailchimp tracks "Email opt-in" (yes for all subscribed) but does NOT track SMS opt-in. So he creates a Custom Field "SMS Opt-In" defaulted to NO.
He maps Mailchimp's "opt-in date" to a custom Intellivizz field "Email Consent Date" — important for CASL compliance.
After importing, he creates a Smart List "Email-OK" filtered on Email Opt-In = YES — this is the only list he uses for email campaigns.
He never sends SMS to these contacts until they re-opt-in via a fresh consent flow.
| Symptom | Likely cause | What to do |
|---|---|---|
| Import says "Failed: file format error" | CSV has weird encoding (e.g., UTF-16) or hidden BOM bytes | Open in Google Sheets, re-save as CSV (UTF-8); or use Excel → Save As → CSV UTF-8 |
| Phone numbers come in mangled | Excel converted phone column to scientific notation (e.g., 4.155551234E+09) | Format the phone column as Text BEFORE saving; or prefix each number with a leading apostrophe (Excel ignores formatting) |
| Duplicate contacts are being created | Deduplication strategy set to "always create new" | Re-run with "Skip duplicates" or "Update existing"; clean up duplicates in Contacts → Bulk Actions → Merge Duplicates |
| "Permissions denied" or import button grayed out | User role lacks Import permission | Settings → Team → [user] → Permissions → enable "Import Contacts" |
| Import seems stuck at 99% for 30+ min | Background processing finishing up; or rare bug | Wait full 60 minutes; if still stuck, contact support with the import ID |
| Custom field values come in blank | CSV column was mapped to wrong field, or field doesn't exist yet | Create the Custom Field first in Settings → Custom Fields, then re-import |
| Tags come in as one big tag | CSV used commas as separators inside a single cell | Use pipe character (|) as separator, OR split the column into multiple columns first |
| Need to undo an import | Imported the wrong file, or wrong mapping | Contacts → Import History (within 7 days) → Revert. After 7 days, it's permanent — you'd need to filter by source-tag and bulk-delete. |
Success criteria
My CSV is cleaned: no duplicates, valid phones, valid emails
I ran a 10-row test import and verified results
Custom fields are created for any non-standard data
I ran the full import and got the success email
I spot-checked 10–20 random contacts and they look correct
I tagged the imported batch with a date-stamped tag for future filtering
I created a Smart List filtered on consent-status before any campaign sends