Skip to content

Manual imports

Import a CSV file once: prepare the file, match its columns to subscriber fields, filter out rows you don't want, and tag everyone in the batch.

A file import suits a list you keep in a spreadsheet, or a platform XOXO can’t connect. It runs once, and you can run another whenever you have a new file.

Caution

Only import people who agreed to hear from you. Imports don’t ask for confirmation, so an imported address goes straight into your audience.

Prepare your CSV

Your file needs column names in the first row, like Email or Name, and one column holding email addresses. Everything else is optional.

A single file can hold up to 50,000 rows, 100 columns, and 50 MB. If your list is larger, split it and import each part.

Tip

Exporting from another tool usually gives you a usable file already. Manual imports has the export steps for the platforms people move from most.

Start the import

  1. Open Audience.
  2. Select Import.
  3. Under Manual imports, choose CSV. If you’re leaving beehiiv, Buttondown, Flodesk, Ghost, Kit, Mailchimp, MailerLite, or Substack, choose it instead to see its export steps first.
  4. Select Choose a CSV and pick your file.
  5. Match each column to a field.
  6. Select Import.

The import runs in the background, so you can keep working. A progress notification counts the rows as they go, then shows what happened when it finishes. An import that’s interrupted picks up where it left off.

Match your columns

XOXO guesses the mapping from your column names, so check it rather than build it from scratch.

  1. In Fields, choose where each CSV column lands.
  2. Point one column at Email. It’s the only required match.
  3. Leave a column unmatched to ignore it.

Need somewhere to put a column? Select Edit fields to add a field without losing your place in the import.

Import only part of a list

If your file includes people who shouldn’t be imported (an unsubscribed column, a status you don’t want), filter them out instead of editing the file.

  1. Select Filter by a status column.
  2. Choose the column to check.
  3. Choose is, is set, or is empty, then pick or type the value to keep.

Only rows matching the filter are imported. Leave it out to import everyone.

Tag everyone in an import

Under Tags, choose any tags to apply to every subscriber in the file. It’s the easiest way to remember where a batch came from, and you can filter or group by it later.

What happens to each row

  • Someone already in your audience is updated, not duplicated.
  • Invalid addresses are skipped.
  • Addresses that previously unsubscribed, bounced, or complained are skipped.

When the import finishes, the summary counts how many were created, how many already existed, and how many were skipped.