Subscribers & Segments

Import subscribers from CSV

Upload a CSV file, map your columns to subscriber fields, and bring your existing list into Mally in minutes.

Preparing your CSV

Mally accepts any valid CSV file with a header row. The importer will let you map any column to any subscriber field — but preparing clean data ahead of time makes the process smoother.

Required column:

  • email — must be a valid email address. Rows without a valid email are skipped.

Recommended optional columns:

  • first_nameFirst name — used in personalisation tags like {{first_name}}.
  • last_nameLast name.
  • phonePhone number in E.164 format (e.g. +14155552671). Required if you want to send SMS to imported subscribers.

You can also include custom field columns. Give them any column header name — you will map them to custom fields during the import process.

email,first_name,last_name,phone,city
alice@example.com,Alice,Smith,+14155552671,New York
bob@example.com,Bob,Jones,,London
carol@example.com,Carol,,+442071838750,

Save the file as UTF-8 encoded CSV. Most spreadsheet apps (Excel, Google Sheets, Numbers) support this via "Save as CSV" or "Export to CSV".

Uploading the file

Go to Subscribers → Import. Click Upload CSV and select your file, or drag and drop it onto the upload area.

Mally parses the first few rows and shows a preview of the data along with detected column headers. If the preview looks wrong (e.g. garbled characters), re-export your CSV as UTF-8 and try again.

Maximum file size is 50MB. Files larger than that should be split into multiple imports.

Mapping columns

On the mapping step, each column in your CSV is shown with a dropdown to select the corresponding Mally subscriber field. Mally attempts to auto-detect common column names (email, first_name, etc.) — review these and correct any that did not map correctly.

For columns that contain custom field data, select the appropriate custom field from the dropdown. If the custom field does not exist yet, you can create it from the mapping screen — click Create new field and define the field name and type (text, number, date).

Also select:

  • Target list: Which list these subscribers will be added to. You must select a list — or create a new one — for the import.
  • Tags to apply: Optionally apply one or more tags to all imported subscribers. Useful for marking the source (e.g. "imported-from-mailchimp").

Handling duplicates

Mally deduplicates by email address. If a subscriber with the same email already exists on the platform:

  • Already on the target list: The subscriber is not added twice. Their existing record is updated with any new field values in the CSV (if you select "Update existing subscribers").
  • On a different list: The subscriber is added to the new list. Their global subscriber record is updated.
  • Unsubscribed: Unsubscribed subscribers are not re-subscribed by an import. They remain unsubscribed.
  • Hard bounced: Hard-bounced addresses are not added to any list. They are in the suppression list and will be skipped.

Import your suppression list first

If you are migrating from another platform, import your unsubscribes and bounces into the suppression list before importing active subscribers. This prevents accidentally emailing people who have previously opted out.

Checking import status

Once you click Start import, Mally processes the file in the background. You can leave the page — the import will continue and you will receive an email notification when it completes.

To check progress, go to Subscribers → Import history. Each import shows:

  • Status (processing, complete, failed)
  • Total rows in file
  • Rows imported successfully
  • Rows skipped (duplicates, invalid emails)
  • Rows failed (with error reason)
  • Time started and completed

You can download an error report for any failed rows to see which email addresses caused issues and why.