NetSendo

How-to · Lists, forms and contacts

Import contacts from a CSV file into NetSendo

Import a CSV file, such as a Mailchimp export, into a NetSendo list: map the columns, check the file first, and handle duplicates, statuses and consent.

For NetSendo 2.7.0, checked against its source code on 2026-11-08.

In short

Open Contact Lists → Import, pick the target list and separator, choose the file and check the column mapping. Click Check the file for a dry run, then Import. Imported contacts are active on the list unless a list_status column says otherwise, and no confirmation email is sent.

Before you start

  • Consent. Import only people who agreed to receive your emails. NetSendo sends no confirmation email to imported contacts, even when the list has Double Opt-in on.
  • The target list. Create it first under Contact Lists → Email Lists. An SMS list needs a phone column instead of email.
  • Custom fields. Create them first under Address List → Field Management → Add Field. A column whose header equals a field's Label or Technical Name is mapped to it automatically.
  • Limits. CSV, TSV, JSON or NDJSON, up to 20 MB and 50,000 rows per file. The import runs while you wait, so split larger files.
  • A Mailchimp export is a ZIP with one CSV per contact status: subscribed, unsubscribed, non-subscribed and cleaned. Non-subscribed contacts never opted in to marketing, so leave that file out.
  • How duplicates are handled. Addresses are compared in lower case, and a second occurrence in the same file is skipped as "duplicate in the file". An address that already exists anywhere in your account is updated, not duplicated. A deleted contact is restored, taken off its old lists and counted as Restored.
  • Statuses. Without a list_status column every imported row becomes active on the target list. That includes people who unsubscribed from that list earlier, so check old files before you import them again.

Steps

  1. In the sidebar open Contact Lists → Import.
  2. In Target List, pick the list.
  3. Set Field Separator to the one your file uses: Comma (,) (default), Semicolon (;), Tabulator (\t) or Pipe (|).
  4. Under Select CSV File, click Choose file (or drag the file onto the box) and pick the subscribed CSV.
  5. Under Column mapping, make sure First row contains headers is ticked if the first row holds column names. NetSendo unticks it when it recognises none of the headers.
  6. Check the field chosen for every column. Headers such as email, e-mail, first name and last name are recognised; Email Address is not, so pick Email for that column yourself.
  7. Set every column you do not want to Do not import. A column headed tags is mapped to Tags: its values become tags, and missing tags are created.
  8. Under Import behaviour, choose Existing contacts: Fill empty fields only (default), Overwrite with the file's data or Leave their data alone.
  9. In Autoresponders and automations, choose Do not trigger at all (silent migration) when moving an existing audience. The default, Only for new signups (recommended), starts the list's autoresponders for every new contact.
  10. Click Check the file. NetSendo reads up to 2,000 rows, writes nothing, and shows how many contacts would be New, Updated, Restored, Unchanged or Skipped, then lists the first skipped rows with the reason.
  11. Click Import. You land on the subscriber list filtered to your list, with "Import finished: … added, … updated, … skipped."
  12. For a Mailchimp export, add a column list_status to the unsubscribed CSV with unsubscribed in every row, and to the cleaned CSV with bounced. Import both into the same list with steps 1–11; the column maps to Status on the target list.

Check that it works

  1. Read the counts in the message after the import.
  2. In Contact Lists → Subscriber List, filter by your list. Only active members are shown, so unsubscribed and bounced rows from step 12 do not appear, and campaigns skip them.
  3. Open one contact and check its name, custom fields and tags.

If it doesn't work

The mapping shows a single column, or values are split wrongly

The Field Separator does not match the file. Pick the right one, then check every column's field again: the automatic mapping is applied only when you choose the file.

Rows are skipped with "no email address" or "invalid email address"

The email column is set to Do not import or another field, or the value is not a valid address. Map the column to Email and run Check the file again.

"Select at least one recipient list"

No Target List is selected. Pick one and click Import again.

"The file was truncated to 50000 rows. Import the remainder as a separate file."

Check the file shows this when the file has more than 50,000 rows. Only the first 50,000 are imported. Split the file and import the rest separately.

Imported contacts received welcome emails

Autoresponders and automations was left on Only for new signups (recommended), so every new contact started the list's autoresponders. Emails already sent cannot be recalled. Choose Do not trigger at all (silent migration) next time.

Unsubscribed people are active again

The file had no list_status column, so their rows were imported as active. Re-import those addresses with list_status set to unsubscribed.

Do it with an AI assistant

The NetSendo MCP server has preview_list_import (dry run) and import_subscribers. They go through the API import, not this screen: up to 5,000 rows per call, a status option (active, inactive, unsubscribed), trigger_automations (default true) and tags. Unlike this screen, the API import skips addresses on the account-wide suppression list. suppress_emails adds addresses to that list and, by default, unsubscribes them from every list.

Preview importing this CSV into list 7, then import it with trigger_automations false and the tag mailchimp-import. Suppress the addresses from unsubscribed.csv with reason "mailchimp_unsubscribed".

Sources

Something different in your panel? Your instance may run another release; see the release notes or write to support@netsendo.com. Every page of these docs is also available as Markdown for AI assistants: request https://netsendo.com/en/docs/how-to/import-contacts with Accept: text/markdown.