Import Contacts from a Spreadsheet
Import Contacts from a Spreadsheet
Purpose: This article walks you through importing contacts into Sure Send from a CSV file, including preparing your file, mapping columns to fields, configuring import settings, and understanding how duplicates are handled.
Note: This article covers the Import Contacts feature for adding contacts to your CRM database. If you're uploading a list for email marketing, see the newsletter list import under Newsletters → Lists. That's a separate feature with a different field set.
Download the Import Template
The fastest way to get a clean import is to start from our template. It has every supported column, in the right order, with the exact header names Sure Send recognizes automatically.
Download the Sure Send CSV Import Template
The template includes an Instructions tab, a Field Reference tab listing every supported field, and the Import Template tab itself with a sample row. Copy the Import Template tab into a new spreadsheet, delete the sample row and any columns you don't need, then add your data.
Before You Begin
To import contacts, you'll need:
- Admin or Owner access to your Sure Send account
- A CSV file (.csv format only) with a header row
- At least one contact method column: an email address or a phone number
Important: Import Contacts is an admin and owner function only. Member users (agents) do not see this option in their settings and cannot run imports themselves. If an agent on your team has a spreadsheet they need imported, an admin or owner will need to handle it on their behalf. When running the import, you can use the "Assigned To" column to map each contact to the correct agent automatically, so contacts land on the right person's desk even though you're running the import centrally.
Recommended: scrub your data first. If you're exporting from another CRM like HubSpot, Follow Up Boss, or Sierra Interactive, most platforms let you export your contacts as a CSV. That export will import, but we strongly recommend cleaning it up first and moving it into our template rather than uploading it raw.
Scrubbing your data means:
- Removing old, stale contacts you'll never work again
- Deleting rows with bad or missing contact information
- Fixing formatting so it matches what Sure Send expects (dates, phone numbers, zip codes, tags)
- Consolidating duplicate columns so each piece of information lives in exactly one place
- Renaming your column headers to match the template
The recommended sequence: export from your old CRM, scrub the data in a spreadsheet, paste it into the Sure Send import template, then import. Auto-mapping works best when your headers match the template exactly, and a clean file is the difference between an import that just runs and an import you can actually trust.
A migration is the one chance you get to start clean. It is worth the extra hour.
Other Ways to Get Contacts Into Sure Send
| Method | Who Can Do It | How It Works |
|---|---|---|
| Add New Lead (manual entry) | All users (including agents) | Click Add New Lead in the top navigation to create contacts one at a time |
| Email Parsing | All users (including agents) | Forward emails to your team's lead email address (on your Profile page) to automatically create contacts |
| Integrations (Sierra, FUB, Lofty, etc.) | Admin/Owner only | Connect a third-party CRM under Settings → Integrations to sync contacts continuously |
| Forms | Admin/Owner only | Build lead capture forms under Settings → Forms |
| API Tokens | All users (own scope); Admin/Owner (team scope) | Create API tokens under Settings → API Tokens |
| Pixel Tracking | Admin/Owner only | Install tracking code under Settings → Pixel Tracking |
Preparing Your CSV File
Your CSV file should have column headers in the first row. Sure Send supports 36+ built-in fields plus all of your team's custom fields.
Requirements
Every contact needs at least one way to reach them. A row must have a value in at least one of these: Email Address, Email 2, Phone, Phone 2, or Phone 3. Rows with none of these are skipped.
File format:
.csvonly. If your data is in Excel (.xlsx), save it as CSV first.- Comma-delimited only. Sure Send does not auto-detect other delimiters. If your export uses semicolons or tabs (common with European exports), the whole file will read as a single column. Re-save it comma-delimited.
- Encoding: UTF-8 is preferred. Files with a byte-order mark, or saved as Windows-1252 or ISO-8859-1, are also handled.
- Fields containing commas or line breaks must be wrapped in double quotes. Standard spreadsheet apps do this automatically.
- Maximum file size: 250MB
Formatting tips
- Dates: Use
2025-01-15(year-month-day). This is the safest format and is never ambiguous. Sure Send also accepts01/15/2025,01-15-2025, and long forms likeJanuary 15, 2025. Avoid two-digit years like15-Jan-25, which can be misread. - Phone numbers: Include area codes (at least 10 digits). Country codes are fine. Remove extensions before importing. Sure Send does not store phone extensions, and a number like
555-123-4567 x89will not save or match correctly. Put the extension in the Notes column if you need to keep it. - Zip codes: Spreadsheet apps often strip leading zeros, turning
07302into7302and00716into716. Format the zip column as Text before entering data, or add the zeros back before exporting. Sure Send will import a broken zip without complaint, so check this yourself. - Tags: Comma-separated within a single cell (e.g.,
Buyer, Referral, VIP). - Names: Use separate First Name and Last Name columns whenever possible. If you only have a Full Name column, Sure Send splits on the first space. That works for
John Smith, butSmith, JohnandJohn & Mary Smithwill not split correctly.
Available Fields
Contact Information
| Field | Notes |
|---|---|
| Email Address | Used to match existing contacts |
| Email 2 | Secondary email. Also used for matching. |
| Full Name | Splits on the first space into first and last name |
| First Name | |
| Last Name | |
| Phone (Primary) | Include area code. Also used for matching. |
| Phone Type | mobile, home, or work |
| Phone 2 / Phone 3 | Additional numbers. Also used for matching. |
| Phone 2 Type / Phone 3 Type | mobile, home, or work |
Address Fields
Up to three addresses per contact.
| Field | Address 1 | Address 2 | Address 3 |
|---|---|---|---|
| Street | ✅ | ✅ | ✅ |
| Line 2 (Apt/Suite) | ✅ | — | — |
| City | ✅ | ✅ | ✅ |
| State | ✅ | ✅ | ✅ |
| Zip | ✅ | ✅ | ✅ |
| Country | ✅ | ✅ | ✅ |
Note: The Address 1 - Line 2 column does not auto-map. Select it manually from the dropdown on the mapping screen, or the apartment and suite data will be skipped.
CRM Fields
| Field | Notes |
|---|---|
| Stage | Matches an existing stage by name, case-insensitive. If no stage matches, the contact still imports and falls back to the Default Stage you set (or no stage). No error is shown. |
| Assigned To | Matches a Sure Send user by email address, case-insensitive. If no user matches, the contact still imports and falls back to the blanket Assignment you set (or unassigned). No error is shown. |
| Lead Source | Sets the lead source. Created automatically if it doesn't exist. |
| Company Name | Links the contact to a company, creating it if needed |
Timestamps
| Field | Notes |
|---|---|
| Created Date | Preserves the original created date from your previous CRM |
| Last Activity Date | |
| Last Contacted Date |
Important: If a date can't be read, Sure Send skips that value silently and does not show an error. For Created Date specifically, the contact's created date will then default to the time of import. If preserving your database history matters, use
2025-01-15format and spot-check a few contacts after importing.
Other
| Field | Notes |
|---|---|
| Notes | Creates a note on the contact record. The note is timestamped at import time, not backdated. |
| Tags | Comma-separated. Created automatically if they don't exist. |
| Suppression Type | marketing or global. Applied to new and existing contacts. |
Custom Fields
Every custom field your team has created also appears as a mapping option, grouped under Custom Fields. All types are supported (text, number, date, dropdown, multi-select).
Important: Custom field values are not validated on import. A value that doesn't match a dropdown's defined options is stored as-is. Unreadable dates are skipped. Number fields strip out non-numeric characters. None of these fail the row, so check your custom field data before importing.
Tip: Create custom fields in Sure Send before starting the import, or they won't appear as mapping options.
How to Import
Step 1: Upload Your File
- Click Settings in the left navigation
- Under Lead Capture, click Import Contacts
- Drag and drop your CSV file, or click to browse
- Wait for the file to upload and process
Step 2: Map Your Columns
You'll see each column from your CSV alongside a dropdown to select the matching Sure Send field.
- Sure Send auto-maps columns based on common header names.
First Name,fname, andgiven nameall map to First Name. - Review each mapping and adjust any that weren't matched correctly.
- Use -- Skip Column -- for columns you don't want to import.
- At least one email or phone column must be mapped before you can continue.
Watch for these: Two columns that both match the same field will only map once. The first one claims the field and the second is skipped, with no warning. Consolidate duplicate columns before uploading.
Also note that a column named Status auto-maps to Stage, and columns named Agent or Owner auto-map to Assigned To. If those columns mean something else in your file, remap or skip them.
Step 3: Review and Configure
- Source Label — Defaults to "CSV Import." If you mapped a Lead Source column, the per-row value wins and this label is only used for rows with no source.
- Duplicate Handling — By default, contacts matching an existing record by email or phone are updated. Check Allow creating duplicate contacts to skip duplicate detection entirely and create a new record for every row.
- Assignment — Optionally assign new contacts to a user, pond, or group. If you mapped an Assigned To column, the per-row value wins for new contacts. Check Also update assignment for existing contacts to overwrite assignment on records already in Sure Send.
- Default Stage — Optionally set a stage for new contacts. A mapped Stage column takes priority.
- Preview — Shows the first 5 rows with mapped fields.
Tip: Leave Source Label, Assignment, and Default Stage blank, and your mapped column values pass through untouched.
Step 4: Processing
You'll see live progress: total processed, added, updated, and failed. The import runs in the background, so you can navigate away and come back. Large imports resume automatically if interrupted.
How Duplicates Are Handled
Sure Send checks each row against your existing contacts in this order, stopping at the first match:
- Email Address (case-insensitive)
- Email 2
- Phone, then Phone 2, then Phone 3
Phone matching compares the last 10 digits, so (555) 123-4567, 5551234567, and +1 555 123 4567 all match each other.
Because email is checked first, a row whose email matches one contact and whose phone matches a different contact will update the email match only.
When a match is found, the import merges new data without overwriting existing data:
| Field | What Happens on Duplicate |
|---|---|
| Name | Fills in first/last name only if currently blank |
| Email 2 | Adds if it's a new address |
| Phones | Adds numbers not already on the record |
| Addresses | Adds a primary address only if the contact has none; adds Address 2/3 if the street is new |
| Notes | Always creates a new note |
| Tags | Adds any tags not already on the contact |
| Company | Links only if the contact isn't already linked |
| Stage | Not changed |
| Lead Source | Not changed |
| Assignment | Not changed, unless you check "Also update assignment for existing contacts" |
| Custom Fields | Overwrites existing values |
| Suppression Type | Applied if mapped |
Re-importing is safe. Because matching is by email and phone, running a corrected file again updates the existing contacts rather than duplicating them. This is not true if you check Allow creating duplicate contacts, which creates a new record for every row every time.
After the Import
- Imported contacts appear in All People. There's no separate import view.
- Automations are not triggered by imported contacts. This is by design, so a bulk import doesn't fire hundreds of automated emails or texts. Lead routing rules, assignment notifications, and webhooks are all suppressed during import.
- Engagement scores are not calculated during import.
- Sure Send reindexes your database after the import, so contacts appear in Smart Lists and search shortly after.
Tip: To identify imported contacts later, add a Tags column with something like "Jan 2026 Migration" before importing.
Deleting an import record does not undo the import
The trash icon next to an entry in Recent Imports removes that entry from the list. It does not delete or revert the contacts that were imported, and it does not undo merges into existing contacts.
There is currently no way to roll back an import. If you imported the wrong file, you'll need to remove the contacts manually or with a bulk action from a Smart List. Review your file carefully before importing.
Error Handling
If rows fail, the error count appears on the processing screen and you can expand the details to see which rows failed and why. Sure Send shows the first 100 errors. Beyond that, it reports the total count only. Error details are on-screen only and cannot be downloaded.
What actually fails a row:
| Error | Cause | Fix |
|---|---|---|
| Missing contact information | Row has no email, Email 2, or phone number | Add a contact method, or remove the row |
| Invalid email format | Email is missing an @ or a domain |
Correct the address in your CSV |
What does NOT fail a row (and shows no error):
| Problem | What happens instead |
|---|---|
| Unreadable date | Value is skipped. Created Date defaults to import time. |
| Stage name doesn't match | Falls back to your Default Stage, or no stage |
| Assigned To email doesn't match a user | Falls back to your blanket Assignment, or unassigned |
| Custom field value doesn't fit the field type | Stored as-is, or skipped for dates |
| Two columns map to the same field | Second column is skipped |
| Malformed zip code | Imported exactly as provided |
| Phone number with an extension | Extension is not stored and the number may not save correctly |
This is the most important thing to know about importing. A "0 errors" result means every row was created or updated. It does not mean every value came through correctly. After a large migration, open a handful of contacts and check created dates, stages, assignments, and zip codes before you trust the data.
Import Contacts vs. Newsletter List Import
| Import Contacts | Newsletter List Import | |
|---|---|---|
| Location | Settings → Lead Capture → Import Contacts | Newsletters → Lists → [List] → Import |
| Purpose | Add contacts to your CRM database | Build an audience for email marketing |
| Who can access | Admin/Owner only | Admin/Owner only |
| Available fields | 36+ built-in plus custom fields | 11 basic fields |
| Tags, notes, stage | ✅ | ❌ |
| Assigned To | ✅ | ❌ |
| Custom fields | ✅ | ❌ |
| Max file size | 250MB | 10MB |
Troubleshooting
My import is stuck or taking a long time. Large imports can take several minutes to hours. Progress updates every few seconds. If it appears stuck, navigate away and come back. Interrupted imports are re-queued automatically and resume where they left off.
I uploaded the wrong file. If processing hasn't started, go back and re-upload. If it has started, let it finish and then remove the contacts manually or with a bulk action. Deleting the import record from Recent Imports does not remove the contacts.
My columns didn't auto-map. Auto-mapping matches known header names. Non-standard headers like "Cell #" need to be selected manually. Renaming your headers to match the import template is the fastest fix.
Address 1 - Line 2 didn't import. That column doesn't auto-map. Select it manually on the mapping screen.
I don't see my custom fields in the dropdown. Create them first under Settings → Custom Fields & Data → Custom Fields, then restart the import.
Some contacts weren't assigned to the right user. The Assigned To column needs user email addresses, not names. An unmatched value silently falls back to your blanket assignment.
Stages aren't being set on existing contacts. By design. Stage is only set on newly created contacts. To bulk-update stages on existing contacts, use a Smart List and bulk edit.
My whole file imported as one column. Your file isn't comma-delimited. Re-save it as comma-separated CSV.
All my contacts show today as their created date. Your date format wasn't readable. Re-export using 2025-01-15 format and re-import the file. Because matching is by email and phone, the re-import will update the existing contacts rather than duplicating them.
My phone numbers look wrong or created duplicates. Check for extensions. Sure Send doesn't store them, and they interfere with duplicate matching. Strip extensions before importing.
What's Next
[Tags: Setup & Use →]