Import contacts
Import a CSV file from Contacts › Import. Kula checks every address before adding it, subscribes the contacts to the list you choose, and tells you which rows it skipped and why.
Prepare your file
- A header row, then one contact per line.
- A column with the email address. Every other column is optional.
- Comma, semicolon or tab as separator: Kula detects it.
- UTF-8, or the Windows encoding Excel uses by default: both are read correctly.
- Up to 50 MB.
email,first_name,last_name,plan,company
ada@example.com,Ada,Lovelace,pro,Analytical Engines
grace@example.com,Grace,Hopper,free,
Export the file from your previous tool as it is: Kula recognizes the usual column names.
| Column | Recognized headers |
|---|---|
email, email_address, e_mail, mail, courriel, adresse_email | |
| First name | first_name, firstname, first, fname, given_name, prenom |
| Last name | last_name, lastname, last, lname, surname, family_name, nom |
Headers are matched without regard to case, spaces or accents: First Name and Prénom work too.
Import step by step
Drop your file
Open Contacts › Import and drop your CSV. Kula reads the header row and a few lines to suggest a mapping.
Match the columns
Each column goes to Email, First name, Last name, an Attribute, or Ignore. Columns with another name become attributes by default, with a key derived from the header (Company becomes company). Attribute keys use lowercase letters, digits and underscores. Attributes.
Choose the list
Pick the list the contacts join in Add the contacts to. They are subscribed right away, without a confirmation email: only import people who agreed to receive your emails.
Import and review
Click Import. Large files are processed in the background: you can leave the page and come back. When the import is done, Kula shows how many contacts were created, updated and skipped.
Rows Kula skips
A row is skipped when:
| Reason | Example |
|---|---|
| Invalid address | ada@, ada.example.com |
| Role addresses | info@, support@, noreply@, admin@, postmaster@: shared mailboxes nobody subscribed with |
| Duplicates in file | The same address twice in the file: only the first row counts |
| Domain without mail | The domain has no mail server, so the email would bounce |
| On the suppression list | The address bounced or complained before. Suppressions |
The import report keeps the first 50 skipped rows with their reason, so you can fix them in your file.
Contacts already in your space
An import never overrides a choice the contact made:
- names and attributes in the file update the existing contact;
- a contact who unsubscribed from the list, or from everything, is not subscribed again;
- a bounced or complained contact is skipped.
After the import
- No flow starts. Imports never trigger a flow or a welcome email.
- Contacts who never opened are under review. Each campaign reaches a capped share of them. The cap grows when your sends show healthy results, and review ends for each contact on its first open or click. Contacts under review.
Import from your app
The API has a bulk import endpoint, for JSON or CSV, with the same checks. Contacts API.