Audience

Import contacts

Import your list from another tool with a CSV file

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.
contacts.csv
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.

ColumnRecognized headers
Emailemail, email_address, e_mail, mail, courriel, adresse_email
First namefirst_name, firstname, first, fname, given_name, prenom
Last namelast_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:

ReasonExample
Invalid addressada@, ada.example.com
Role addressesinfo@, support@, noreply@, admin@, postmaster@: shared mailboxes nobody subscribed with
Duplicates in fileThe same address twice in the file: only the first row counts
Domain without mailThe domain has no mail server, so the email would bounce
On the suppression listThe 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.
Send your first campaign to your most engaged contacts, or to a recent segment. Good early results lift the cap faster.

Import from your app

The API has a bulk import endpoint, for JSON or CSV, with the same checks. Contacts API.

Contacts under review

How the review cap works and when it lifts

Migrate from another tool

Move your list, templates and automations