Skip to main content

Import contacts from a CSV file into an e-mail list

How to prepare the file — the columns Push knows, extra columns, dates — the consent checkbox, what happens to people already on the list, and the import errors.

M
Monfri Team
Updated ·4 min read

The fastest way to fill a list is a CSV file exported from your shop, your old e-mail tool or a spreadsheet. Push imports it into one list.

Prepare the file

  • A CSV file (.csv or .txt), at most 10 MB. Every file is checked for viruses.
  • The first row holds the column names. Upper or lower case does not matter.
  • An email column is required; every other column is optional.
Column What it fills
email The address. Required, and it must be a valid e-mail address.
name The full name — split into first and last name for greetings when those columns are empty.
first_name, last_name The name, for {{first_name}} in your e-mails.
country, city Where they are.
gender male, female, other or prefer_not_to_say.
date_of_birth A date written as YYYY-MM-DD, for example 1990-05-17.
anything else Kept as Custom Metadata on the subscriber and usable as a merge tag — a column vip_level becomes {{vip_level}}.

Save the file as UTF-8 so Cyrillic and other letters stay as they are.

Import

  1. Open the list in Push → Email → Lists. To start a new one: Lists.
  2. Under Import / Export, choose the file in CSV File (email, name columns).
  3. Tick Everyone in this file opted in to marketing email. only if they did. Without it, the people are stored but left out of every campaign.
  4. Click Import. Push answers Import started. The result appears on this page when it has finished — you can leave the page meanwhile.

The import runs on its own, so a big file is not cut off half-way. The list's page shows Importing … — … of … rows, then the result: Import complete: … created, … updated. — … of them unsubscribed earlier and stay unsubscribed. when the file has people who left through an unsubscribe link, … errors. with the first rows that failed, and what the address check found: how many addresses cannot receive e-mail, which domains look like typos (gmial.com → gmail.com) and how many are risky. Push checks every new domain of the file during the import.

While the import runs, the next file for the same list waits, and so does a campaign to the list — it goes out by itself when the import has finished.

People already on the list

An address that is already on this list is not added twice — whatever mix of capital and small letters the file has: [email protected] and [email protected] are one person, and Push keeps the address in small letters. Its name, the profile columns and the metadata are updated from the file. Its state and consent stay as they are — an import never brings back someone who unsubscribed, and never gives consent to someone who did not have it. Someone who left through an unsubscribe link in one of your e-mails comes in Unsubscribed on any list, whatever the file says.

The same address on another list is a separate person there; importing into one list does not change the other.

From the API

POST /api/v1/email/subscribers/import takes the same file and answers at once with the import and its address; GET /api/v1/email/imports/{id} gives the progress and then the result. The API reference: Push → API Reference.

Contacts from the setup guide

Bring your contacts in the Hub's setup guide imports into CRM, not into an e-mail list. For e-mail campaigns, import the file into a list here.

If something doesn't work

Missing required "email" column.

The first row has no column named email. Rename the column that holds the addresses, or add the row of names if the file starts with data.

Column count mismatch.

That row has more or fewer values than the first row — usually a comma inside a value that is not in quotes. Put such values in double quotes, or save the file again from a spreadsheet.

Empty email. / Invalid email: …

The row has no address, or the address is not valid — for example a missing @. Fix it in the file and import again; rows that were imported are only updated.

An import into this list is still running. Import the next file when it has finished.

One import at a time per list. Wait for its result on the list's page, then import the next file.

The import stopped unexpectedly.

The import was cut off, for example during an update of Push. Import the same file again — the addresses already on the list are only updated, not added twice.

Everyone imported, but a campaign reaches nobody

They were imported without consent. See Lists.

Didn't find your answer?

Write to us and tell us what you were trying to do.