Import your contacts

    Create your first list, prepare a clean CSV, import it, and understand how duplicates and consent are handled.

    On this page

    Before you import#

    By the end of this page you have a list with your contacts in it, the extra data attached to the right fields, and a clear answer to the question of whether you were allowed to import those people in the first place.

    Import only people who agreed to hear from you

    Consent is not a formality. Contacts who do not recognize you mark your mail as spam, and complaints attach to your sending domain, not to the list. A purchased or scraped file can damage a domain in one send and take weeks to recover. If you cannot say where an address came from, leave it out.

    Create the list first#

    Contacts belong to a list, so the list has to exist before the import does.

    Open Lists and create one. Give it a name that describes the audience, not the source file: "Newsletter subscribers" rather than "export-final-v3". Set the from name, from address and reply-to for the list while you are there, since campaigns sent to it inherit those defaults.

    Resist the urge to create a list per campaign or per source. One list plus segments is easier to keep clean than five lists with overlapping people in them, and it stops you mailing the same person twice from two directions. Create a list goes into the structure in more detail.

    Prepare the CSV#

    Put one column per piece of data

    Row one is your header row. One column holds the email address. Every other thing you know about the contact gets its own column: first name, last name, company, city, signup date.

    Do not combine data into one column. Jane Doe, Acme, Chicago in a single cell cannot be split back out later, and it cannot be used for personalization.

    Create a field for each extra column

    Open ListsFields and add a field for every non-email column you are about to import. A column with no matching field has nowhere to go.

    Name fields in a way you will still understand in six months. first_name is fine. f1 is not.

    Clean the file

    Before you upload, do a quick pass:

    • Remove rows with no email address.
    • Strip leading and trailing spaces from the email column.
    • Check the encoding is UTF-8, so accented names survive.
    • Make dates consistent. Pick one format and use it in every row.
    • Delete columns you do not actually need. Data you never use is data you have to keep accurate for no reason.

    Import into the list

    Open the list and start an import. Upload the file, then map each CSV column to the field it belongs to. The email column maps to the contact's email address. Check the mapping screen carefully, because this is where an import goes wrong quietly: a mismapped column imports successfully and puts the wrong data in the wrong place.

    Run the import. A large file takes a while, and you can leave the page while it works.

    Verify the result

    When the import finishes, look at the list count and compare it to the number of rows in your file. A gap is normal, since duplicates and invalid rows are skipped, but a large gap is worth investigating.

    Open two or three contacts and confirm their fields are populated with the values you expected.

    What happens to duplicates#

    The email address identifies the contact within a list. If an address in your file already exists in that list, the import does not create a second copy of it.

    Two things follow from that:

    • Re-importing an updated file is a safe way to refresh data. Export, correct the company names, import again into the same list.
    • The same person can exist in two different lists. They are separate contacts, and if you send the same campaign to both lists, they receive it twice. This is the strongest argument for keeping one main list and using segments.

    Addresses that are on the Blacklist, including people who previously unsubscribed or hard bounced, stay suppressed. Importing them again does not resurrect them, which is intentional.

    Verify before you send#

    Old lists rot. People change jobs, domains lapse, and an address that worked two years ago may now bounce.

    Run an imported file through Email verification before the first campaign to it. Each address comes back as deliverable, undeliverable or risky. Remove the undeliverable ones. Decide deliberately about the risky ones, and if the list is old, leave them out of your first send and see how the clean portion performs.

    High bounce rates on a first send are the classic way a new sender gets throttled. Verification is the cheapest insurance available.

    If something goes wrong#

    The import rejected most of the file. Usually the email column was not mapped, or the file has a header row that was treated as data. Check the mapping and re-upload.

    Names appear with strange characters. The file was not saved as UTF-8. Re-export it as UTF-8 CSV and import again into the same list. Duplicates will not be created.

    Everything landed in the wrong fields. Fix the mapping and re-import the same file. Matching contacts are updated rather than duplicated.

    Contacts you imported are not receiving mail. Check the Blacklist before anything else. A previously unsubscribed address stays suppressed by design.

    Last updated September 10, 2026

    Was this page helpful?