Import contacts

    Prepare a CSV, map its columns to list fields, import it into IGSendMail, and understand what happens to duplicates and suppressed addresses.

    On this page

    Importing is how most lists get filled. You upload a CSV, tell IGSendMail which column is which, and the file becomes contacts on a list. When you finish this page you will have your contacts on a list and you will know how to read the import result.

    Before you start

    You need a list to import into. If you do not have one, see Create a list. If you want to store more than email addresses, define your fields first, because a column with no matching field cannot be mapped.

    Prepare the file#

    The import expects a CSV: one header row, one contact per row after it.

    • Save as CSV, not XLSX. Export from your spreadsheet with Save as or Export, and choose comma separated values. Renaming an .xlsx file to .csv does not convert it and the import will fail.
    • Use UTF-8 encoding. This matters if your data has accented characters, non-Latin scripts, or currency symbols. Without it, names arrive mangled.
    • Give every column a header. Headers are what you map against. A blank header is hard to identify in the mapping step.
    • One email address per row. A cell holding two addresses separated by a semicolon imports as one invalid address, not two contacts.
    • Strip the noise. Remove merged cells, subtotal rows, blank rows, and any explanatory text above the header row. The header must be the first line of the file.
    • Split names if you want to personalize. A single "Sarah Chen" column can only ever produce "Hi Sarah Chen". Separate first and last name columns give you "Hi Sarah".

    Run the import#

    Open the list you are importing into

    Go to Lists and open the list. Import runs against one list at a time, so make sure it is the right one before you upload a file with 40,000 rows in it.

    Choose the import option and upload the CSV

    Select the CSV from your machine and start the upload. Large files take a while to process. You do not need to keep the page open while it runs, but note when you started so you know which result to read afterwards.

    Confirm the delimiter

    The file should be comma separated. If your export used semicolons or tabs, either set the delimiter to match or re-export with commas. Getting this wrong produces one giant column instead of several, which is easy to spot in the mapping preview.

    Map columns to fields

    Every column in your file is matched to a field on the list. The email column is required, so check that mapping first. Then map the rest: first name to your first name field, company to your company field, and so on. Columns you do not need can be left unmapped and their values are ignored.

    Start the import and wait for it to finish

    Processing runs in the background. Do not upload the file a second time because it is taking a while, or you will queue two imports of the same data.

    Check the result

    When the import completes, read the summary. It tells you how many rows were imported, how many were skipped, and why. Open the list and confirm the contact count moved by roughly the amount you expected, then open one contact and check that the field values landed in the right fields.

    What happens to duplicates#

    If an address in your file already exists on that list, the import does not create a second contact. The existing record is updated with the values from your file.

    That is useful and occasionally surprising. If your CSV has an empty cell where the contact already has a value, check the result before assuming it was preserved. The safe habit is to only include columns you actually intend to write.

    Duplicates within the file itself resolve the same way: the last row for a given address wins.

    Unsubscribed and blacklisted addresses#

    Suppression survives an import. This is deliberate and you should not try to work around it.

    • An address that unsubscribed from this list stays unsubscribed. Re-importing it does not resubscribe it.
    • An address on the account Blacklist is not mailable, whatever the import does with the row.
    • A previously hard-bounced address stays suppressed.

    Importing a file to "reset" a suppressed contact is the single most damaging thing you can do to your sending reputation. See Blacklist and suppression for what lands there and why.

    Add a single contact by hand#

    For one address, an import is overkill. Open the list, choose the option to add a contact, enter the email address, fill in whatever field values you have, and save. The contact is created subscribed to that list.

    Use this for a colleague who needs to see the campaign, or for a signup someone passed you by phone.

    Troubleshooting#

    Everything landed in one column. The delimiter is wrong. Your file is semicolon or tab separated and the import read it as comma separated. Re-export with commas, or set the delimiter to match the file.

    Some columns are empty on every contact. Those columns were not mapped, or were mapped to a field that does not exist. Create the field on the list, then re-import the file. Because duplicates update in place, re-importing the same file is safe and fills in the missing values.

    Rows rejected as invalid email addresses. Usually a stray space, a missing @, a typo in the domain such as gmial.com, or two addresses jammed into one cell. Open the rejected rows in your spreadsheet, fix them, and import that corrected subset as a second smaller file.

    The count went up by less than the file had rows. Duplicates updated instead of creating, suppressed addresses were skipped, or invalid rows were rejected. The import summary breaks this down. It is normal for a file you have imported before to add almost nobody.

    Names arrived with question marks or odd symbols. The file was not saved as UTF-8. Re-export with UTF-8 encoding and import again to overwrite the bad values.

    Nothing imported at all. Check that the first line of the file is the header row.

    Verify before a large first send

    A list you imported from an old file usually contains addresses that no longer exist. Run verification over it before you send, or your bounce rate will do the damage instead.

    Last updated September 10, 2026

    Was this page helpful?