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.
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 (
.csvor.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
emailcolumn 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
- Open the list in Push → Email → Lists. To start a new one: Lists.
- Under Import / Export, choose the file in CSV File (email, name columns).
- 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.
- 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.