Import Contacts from a Spreadsheet

1650 views Updated 6 days ago Victor Ayala

Purpose: This article walks you through importing contacts into Sure Send from a CSV file: preparing your file, mapping columns to fields, bringing over relationships, choosing import settings, and understanding how duplicates are handled.

iNote: This article covers Import Contacts, for adding contacts to your CRM. To upload a list for email marketing, use Newsletters > Lists. That's a separate feature with its own fields.

!Before you import

  • Nothing imports until you confirm. Check Matching Contacts on the review screen first (files up to 20,000 rows). Those rows update contacts you already have instead of creating new ones.
  • Relationship types outside the standard list come in as Other. The standard types are Spouse, Child, Parent, Sibling, Business Partner, Friend, Relative and Other. Relabel Wife, Husband, Daughter and the like in your file first. Re-importing does not change a link that already exists.
  • Review your file before you import. Stage, Lead Source and dates are set only on new contacts, and deleting an import does not remove its contacts.

Download the Import Template

The fastest way to get a clean import is to start from our template. Its column headers are names Sure Send recognizes automatically.

Download the Sure Send CSV Import Template

The template includes an Instructions tab, a Field Reference tab, 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. To import relationships, add the columns described under Relationships.

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
  • An email address or phone number on every row

!Important: Import Contacts is an admin and owner function only. Member users (agents) can't run imports. If an agent on your team has a spreadsheet they need imported, an admin or owner will need to handle it on their behalf. Map an Assigned To column with each agent's Sure Send login email, and each new contact lands on the right agent even though you're running the import centrally.

iRecommended: scrub your data first. Most CRMs 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
  • Relabeling relationship types to the ones Sure Send accepts
  • 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.

Preparing Your CSV File

Your CSV file should have column headers in the first row. Sure Send can import every standard contact field, up to 3 relationships per contact (Name, Email, Phone and Type for each), and 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. A row with none of these is not imported. It is counted as failed with the reason "Missing contact info".

Email addresses must be valid. An invalid Email Address fails the whole row, even if the row has a phone number. An invalid Email 2 fails the row only when it is the row's only contact information.

File format:

  • .csv only. 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. For dates written like 01/15/2025, Sure Send works out whether a column is month first or day first from the dates in that column. Two-digit years are expanded: 00 to 30 become 2000 to 2030, and 31 to 99 become 1931 to 1999, so 12/01/26 is read as 2026. Four-digit years remove any doubt.
  • Phone numbers: Include area codes (at least 10 digits). Sure Send does not store phone extensions. A number like 555-123-4567 x89 imports as 555-123-4567, and the results show a warning. Put the extension in the Notes column if you need to keep it. A number that can't be read is dropped with a warning, and the rest of the row still imports.
  • Zip codes: Spreadsheet apps often strip leading zeros, turning 07302 into 7302 and 00716 into 716. Format the zip column as Text before entering data, or add the zeros back before exporting. Sure Send imports the zip as it appears in your file, 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, but Smith, John and John & Mary Smith will not split correctly. Use Full Name instead of First Name and Last Name, not together with them.
  • Leading symbols: As a guard against spreadsheet formulas, Sure Send removes a leading =, +, - or @ from every cell. A note that starts with a dash followed by a space loses the dash.

Available Fields

The first column in each table is the header to use. Sure Send also recognizes the other headers listed, so many exports map without edits. Header matching ignores capital letters, and a space, underscore or hyphen between words works the same, except where noted.

Contact Information

Header Also maps from Notes
First Name fname, given name, forename
Last Name lname, surname, family name
Full Name Name, Contact Name, Client Name Splits on the first space into first and last name. Use instead of First Name and Last Name.
Email Address Email, E-mail, Email 1, Primary Email, Contact Email Used to match existing contacts. An invalid address fails the whole row.
Email 2 E-mail 2, Secondary Email, Alternate Email Secondary email. Also used for matching.
Phone Phone 1, Mobile, Cell, Telephone, Tel, Primary Phone, Home Phone, Work Phone Primary phone. Include area code. Also used for matching.
Phone Type Phone 1 Type See Phone Type values below
Phone 2 / Phone 3 Mobile 2, Cell 2 / Mobile 3, Cell 3 Additional numbers. Also used for matching.
Phone 2 Type / Phone 3 Type Same values as Phone Type

Phone Type values: Mobile, Home, Work, Fax, Main, Support, Sales, Toll Free, Other. These also work: cell or iPhone (saved as Mobile), landline or residence (saved as Home), office or business (saved as Work). Any other value is saved as Other. A blank Phone Type stays blank.

Address Fields

Up to three addresses per contact.

Field Address 1 Address 2 Address 3
Street Yes Yes Yes
Line 2 (Apt/Suite) Yes No No
City Yes Yes Yes
State Yes Yes Yes
Zip Yes Yes Yes
Country Yes Yes Yes

Address 1 headers:

Header Also maps from
Address 1 - Street Address, Address 1, Street, Street Address, Address Line 1, Address 1 - Line 1, Mailing Address
Address 1 - Line 2 Address Line 2, Address 1 Line 2, Apt, Suite, Unit
Address 1 - City City, Town, Municipality
Address 1 - State State, Province, Region, State Province
Address 1 - Zip Zip, Zip Code, Postal Code, Postcode
Address 1 - Country Country, Nation

Addresses 2 and 3 use the same pattern: Address 2 - Street, Address 2 - City, Address 2 - State, Address 2 - Zip (or Address 2 - Postal Code), Address 2 - Country, and the same for Address 3.

iNote: For Address 2 and Address 3, only headers written with a spaced dash map automatically: Address 2 - City maps, Address 2 City does not. A city with no street still saves as an address.

CRM Fields

Header Also maps from Notes
Stage Pipeline Stage, Lead Stage New contacts only. 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 warning is shown.
Assigned To Assigned User, Lead Owner Matches a Sure Send user by their login email address, case-insensitive. If no user matches, a new contact falls back to the blanket Assignment you set (or unassigned), and the results show a warning for each unmatched value.
Lead Source Source, Origin, How Found, Referral Source New contacts only. Created automatically if it doesn't exist. If a lead source with the same name was archived, it is restored.
Company Name Company, Organization, Org, Employer, Business, Business Name, Brokerage Links the contact to a company, creating it if needed

Dates

Header Also maps from Notes
Created Date Created, Created At, Created On, Date Created, Add Date New contacts only. Preserves the original created date from your previous CRM. A future date is changed to today, and a date before 1900 is dropped. Both show a warning.
Last Activity Date Last Activity, Activity Date New contacts only
Last Contacted Date Last Contact, Last Contacted, Contact Date New contacts only

!Important: If a date can't be read, Sure Send skips that value and the results show a warning with the row number. For Created Date specifically, a new contact's created date will then be the time of import. If preserving your database history matters, use 2025-01-15 format and spot-check a few contacts after importing. A column named Date Added does not map automatically. Map it to Created Date yourself.

Other

Header Also maps from Notes
Notes Note, Comment, Comments, Description, Remark, Remarks Creates a note on the contact record. An identical note already on the contact is not added again. Notes with HTML formatting display formatted on the contact's timeline.
Tags Tag, Label, Labels, Category, Categories Comma-separated. Created automatically if they don't exist.
Suppression Type Suppressed, Unsubscribed, Opt Out, Email Status marketing (also true, yes, 1, unsubscribed) or global (also all, full). Any other value is ignored. Applies to the row's Email Address, or to Email 2 if there is no Email Address.

Relationship Fields

Name, Email, Phone and Type for up to 3 relationships per row. See Relationships below.

Custom Fields

Every custom field your team has created also appears as a mapping option, grouped under Custom Fields. A column whose header matches the custom field's name maps automatically.

  • Multi-select: separate the values with commas.
  • Number: non-numeric characters are stripped out.
  • A value the field rejects is skipped with a warning. The rest of the row still imports.

iTip: Create custom fields in Sure Send before starting the import, or they won't appear as mapping options.

Headers That Don't Auto-Map

These headers are common in exports from other systems but are not mapped automatically. Choose a field for them on the mapping screen, rename them, or skip them:

  • Email 3, Phone 4, Cell Phone, Mobile Phone
  • Date Added, Birthday, Background, Spouse Name
  • Status, Agent, Owner
  • Address headers written without the spaced dash, such as Address 1 Street or Address 2 City

Also keep the template's short headers. The longer labels from the mapping dropdown, such as Full Name (will split into First/Last), Address 1 - Line 2 (Apt/Suite), Suppression Type (marketing/global) or Tags (comma-separated), do not auto-map when used as headers.

Relationships

Each row can carry up to 3 relationships, such as a spouse, a child or a business partner. Sure Send finds or creates a contact for each related person and links the two contacts.

Relationship columns

Header Also maps from Notes
Relationship 1 - Name Relationship 1 Name, Relationship 1 Full Name, Relationship Name One name column. Relationship 1 First Name does not map.
Relationship 1 - Email Relationship 1 Email, Relationship 1 Email 1, Relationship Email One email per relationship
Relationship 1 - Phone Relationship 1 Phone 1, Relationship 1 Mobile, Relationship 1 Cell One phone per relationship, saved as Mobile
Relationship 1 - Type Relationship 1 Type, Relationship Type See relationship types below

Relationships 2 and 3 use the same headers with the number changed, for example Relationship 2 - Name. For 2 and 3 the number is required. Columns for a fourth relationship or beyond do not map.

Importing a Follow Up Boss export: its Relationship 1 Name, Relationship 1 Email 1, Relationship 1 Phone 1 and Relationship 1 Type columns map with no edits, and so do the same columns numbered 2 and 3. Only the first email and first phone of each relationship come through. The Email 2 and Phone 2 relationship columns (for example Relationship 1 Email 2) are skipped.

Relationship types

The Type column accepts Spouse, Child, Parent, Sibling, Business Partner, Friend, Relative and Other, in any capitalization. A blank Type is saved as Other.

Anything else, such as Wife, Husband, Daughter, Son, Mom or Dad, comes in as Other, and the results show one warning for each different value. Relabel these in your file before you import: Wife and Husband to Spouse, Daughter and Son to Child, Mom and Dad to Parent. Custom relationship types your team has added can't be set by an import.

How the related person is found or created

Sure Send looks for an existing contact using the relationship's email first, then its phone (last 10 digits):

  • The email is a contact's primary email: that contact is used, even if the name is different. The results show a warning naming both.
  • The email is a contact's secondary email: that contact is used only if the relationship has a name and it matches. Otherwise a new contact is created, with a warning.
  • The phone matches a contact: that contact is used if the relationship has no name, or the names match. Otherwise a new contact is created, with a warning.

Names match when the first and last words agree: Doe, Jane and Jane M Doe both match Jane Doe, but Janey Doe does not. A contact created earlier in the same file is found too, so a spouse who also has their own row is linked to that row's contact. An existing contact found this way is never changed by the relationship.

What a new related contact gets

When no existing contact is found, Sure Send creates a full contact with the relationship's name, email and phone. Its lead source is the import's Source Label (CSV Import unless you changed it). It gets no stage, no tags and no assignment, and it does not go through lead routing.

If that person also has their own row later in the same file, that row fills in their details and gives them the row's Assigned To, or your blanket Assignment. If they appear only as a relationship, they stay unassigned.

How links work

  • The link shows on both contacts.
  • A relationship is skipped, with a warning, when it has a name but no email and no phone, when its email is invalid, or when it points back to the row's own contact.
  • Re-importing the same file does not duplicate relationships. An existing link between two contacts is kept as is, and its type is not overwritten. To change the type of a link that already exists, edit it on the contact.

iNote: A Spouse Name column does not map on its own, and a name alone is not enough: a relationship needs an email or a phone number. Rename the column to Relationship 1 - Name, add a Relationship 1 - Email or Relationship 1 - Phone column, and add a Relationship 1 - Type column set to Spouse.

How to Import

Step 1: Upload Your File

  1. Click Settings in the left navigation
  2. Under Lead Capture, click Import Contacts
  3. Drag and drop your CSV file, or click to browse
  4. 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 (see Available Fields). First Name, fname, and given name all 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 auto-map to the same field show a warning on the mapping screen. For example, Home Phone and Work Phone both map to Phone. Map one of them to Phone 2, or skip it.
  • Two columns with the same header are both kept. The second one shows with its column number, for example Notes (column 12).
  • Status, Agent and Owner columns don't auto-map. They are left on -- Skip Column --. If they hold your stages or your agents' Sure Send login emails, map them to Stage or Assigned To yourself. A Lead Owner column does map to Assigned To automatically, so make sure it holds login emails, not names.

Step 3: Review and Configure

  • Source Label: Defaults to "CSV Import". If you clear it, "CSV Import" is used. If you mapped a Lead Source column, the per-row value wins and this label is only used for rows with no source. Contacts created from relationship columns get this label as their lead source.
  • Allow creating duplicate contacts: By default, rows that match an existing contact update it (see How Duplicates Are Handled). Check this box 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 replace the assignment on records already in Sure Send.
  • Default Stage: Optionally set a stage for new contacts. A mapped Stage column takes priority when its value matches a stage.
  • Preview: Shows the first 5 rows with mapped fields.
  • Matching Contacts: Shows which rows will update a contact you already have. See Matching Contacts Preview.

iTip: For new contacts, your mapped columns win over these settings: Lead Source over Source Label, Assigned To over Assignment, and Stage over Default Stage. The settings only fill in rows where the column is blank, or where an Assigned To or Stage value doesn't match a user or stage.

Step 4: Confirm and Process

Nothing is imported until you confirm. After you confirm, you'll see live progress: total processed, added, updated, and failed. A row that updated an existing contact counts as updated, not added. The import runs in the background, so you can navigate away and come back. If an import is interrupted, it resumes from where it stopped.

How Duplicates Are Handled

Unless Allow creating duplicate contacts is checked, or a row is marked Import as a separate contact, Sure Send checks each row in this order and stops at the first match it accepts:

  1. Earlier rows in the same file, by Email Address, then Email 2
  2. Email Address, then Email 2, against every email on your team's contacts (exact address, case-insensitive)
  3. 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.

The name check

An email or phone hit is not always used. Sure Send checks the name first:

The row matches The match is used when
A contact's primary email Always
A contact's secondary email The row has a name and it matches the contact's name
A contact's phone The names match. If the row has no name, the match is used unless the row also has an email that matched no one.
A contact with no name Always
  • If a contact has no email marked as primary, its oldest email counts as its primary email, unless another contact has the same address.
  • Shared household phone: every contact with that number is checked, and the one whose name matches is updated. Two people who share a phone are not merged into one contact.
  • When a match is turned down, Sure Send creates a new contact and the results show a warning that starts "Created a new contact instead of updating" followed by the existing contact's name. Up to 10 of these are shown per import.
  • Because email is checked first, when a row's email and phone point to two different contacts, an accepted email match wins.

What changes on a matched contact

When a match is used, the import merges new data without overwriting most existing data:

Field What Happens on Duplicate
Name Fills in first/last name only if currently blank
Emails and phones Adds addresses and numbers not already on the record
Phone Type Fills in a blank type on a number the contact already has
Address 1 Added only if the contact has no primary address
Address 2 and 3 Added unless the contact already has the same street
Notes Adds the note, unless an identical note is already on the contact
Tags Adds any tags not already on the contact
Company Links only if the contact isn't already linked
Custom Fields A value in your file overwrites the existing value
Relationships Adds new links. An existing link is kept and its type is not changed.
Stage Not changed
Lead Source Not changed
Created, Last Activity and Last Contacted dates Not changed
Assignment Filled from a mapped Assigned To column only if the contact has no assignment. Replaced only if you check "Also update assignment for existing contacts".

iRe-importing is safe. Because matching is by email and phone, running the same or a corrected file again updates the contacts from the first run rather than duplicating them. Identical notes and existing relationships are not added again. Two exceptions: Allow creating duplicate contacts creates a new record for every row every time, and if you changed the name on a row that matches only by phone or a secondary email, the name check can create a new contact (the results show a warning).

Matching Contacts Preview

For files of up to 20,000 rows, the review screen shows Matching Contacts: the rows that will update a contact you already have instead of creating a new one.

  • Check this list before you confirm. A row matched to the wrong person will update that person.
  • To keep a row as its own contact, mark it Import as a separate contact. That row skips duplicate matching and creates a new contact. You can mark up to 500 rows.
  • To create a new contact for every row, check Allow creating duplicate contacts instead.

After the Import

  • Imported contacts appear in All People.
  • 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, stage and field automations, stage and assignment notifications, and webhooks are all suppressed during import.
  • Changes made by an import do not appear in Change Log.
  • Search and Smart List counts are refreshed when the import finishes, so contacts appear in Smart Lists and search shortly after.

iTip: To identify imported contacts later, add a Tags column with something like "CSV 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.

An import can't be rolled back. If you imported the wrong file, you'll need to remove or fix the contacts yourself. Review your file carefully before importing.

Results, Errors and Warnings

When the import finishes, the results show which rows failed and which rows imported with a warning, by row number. Sure Send keeps details for up to 100 failed rows and 25 warnings per import, so a large file can have more problems than the list shows.

What fails a row (the row is not imported):

Problem Cause Fix
Missing contact info Row has no Email Address, Email 2, Phone, Phone 2, or Phone 3 Add a contact method, or remove the row
Invalid email address Email Address isn't a valid address (this fails the row even if it has a phone), or Email 2 isn't valid and is the row's only contact information Correct the address in your CSV
Contact couldn't be saved Something in the row was rejected when saving The message on the row says what went wrong

What imports with a warning (the row imports, and the warning explains what changed):

Problem What happens
Date can't be read Value is skipped. A new contact's created date is the time of import.
Created Date in the future Set to today
Created Date before 1900 Dropped
Phone number with an extension Extension removed, number imported
Phone number that can't be read Number dropped, rest of the row imported
Same phone number in more than one column Rest of the row imports normally
Assigned To email doesn't match a user New contact falls back to your blanket Assignment, or unassigned
Custom field value the field rejects Value skipped, rest of the row imported
Match turned down by the name check New contact created instead of updating the existing one
Relationship type not recognized Saved as Other
Relationship with no email and no phone, an invalid email, or pointing to the row's own contact That relationship is skipped
Relationship email or phone belongs to a contact with a different name See Relationships

What shows no warning: a Stage value that doesn't match one of your stages. The contact falls back to your Default Stage, or no stage.

!This is the most important thing to know about importing. A result with no failed rows means every row was created or updated. It does not mean every value came through the way you intended. Read the warnings, and after a large migration open a handful of contacts and check created dates, stages, assignments, relationships, and zip codes before you trust the data.

Troubleshooting

My import is taking a long time. Large files take longer. If an import is interrupted, it resumes from where it stopped, so let it finish rather than uploading the file again.

I uploaded the wrong file. Nothing is imported until you confirm, so if you haven't confirmed yet, start again with the right file. If the import has already run, remove or fix the contacts yourself. Deleting the import record from Recent Imports does not remove the contacts.

My columns didn't auto-map. Auto-mapping matches known header names. Headers like "Cell #", Cell Phone, Mobile Phone, Date Added, Status, Agent, and Owner need to be selected manually. Renaming your headers to match the import template is the fastest fix.

Address 2 or Address 3 didn't import. For these, only headers written with a spaced dash map automatically, such as Address 2 - City. Rename the headers or select the fields 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 users' Sure Send login email addresses, not names. An unmatched value falls back to your blanket assignment and shows a warning. Agent and Owner columns don't map to Assigned To on their own.

Stages aren't being set on existing contacts. By design. Stage is only set on newly created contacts. Also check the spelling: a stage name that doesn't match falls back to your Default Stage with no warning.

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. The dates in your file couldn't be read. Check the warnings in the results. Dates are only set when a contact is created, so re-importing a corrected file won't change them on contacts that already exist. Use 2025-01-15 format and test a few rows before a large import. Contact support if you need help.

A row updated the wrong contact, or created a second one. Check the warnings. A secondary email or phone match is used only when the names agree, so a different name on the row creates a new contact. Before your next import, check Matching Contacts and use Import as a separate contact for rows that should stay separate.

My phone numbers look wrong. Extensions are removed during import, and a number that can't be read is dropped. Both show a warning, so check the warnings for the rows involved.

Relationship types show as Other. Only Spouse, Child, Parent, Sibling, Business Partner, Friend, Relative, and Other are recognized. Relabel the Type column in your file before importing. For links that already exist, change the type on the contact. Re-importing does not change it.

Some relationships are missing. Each row carries up to 3 relationships, each with one email and one phone. A relationship needs an email or a phone, so a name alone is skipped. A fourth relationship, and second emails or phones for a relationship, are not imported.

Was this article helpful?

Related Articles

Search Help Center