Skip to content

Manual imports

Move a list you keep in a spreadsheet or another email tool into XOXO with a CSV file, match its columns, and tag everyone in the batch.

A file import brings in a list you keep in a spreadsheet, or one from a platform XOXO can’t connect. Start one from Import on the Audience page, under Manual imports. 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 subscribers to confirm, so an imported address goes straight into your audience. Our Acceptable Use Policy applies to everyone you import.

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
  • 50 MB
  • 64 KB in any one cell

A file over any of these fails to import. If your list is larger, split it and import each part.

Import a file

These are in the order you meet them after choosing a file.

Choose a file to import

  1. Open Audience.
  2. Select Import.
  3. Under Manual imports, choose CSV.
  4. Select Choose a CSV and pick your file.

If you’re leaving beehiiv, Buttondown, Flodesk, Ghost, Kit, Mailchimp, MailerLite, or Substack, choose its name under Manual imports instead of CSV. XOXO shows how to export your file from it first.

Set the source

Under Source, say where these people signed up to hear from you, such as a giveaway on Instagram or your website. It’s required, and the Acceptable Use Policy asks you to be able to show how each person signed up, so keep it accurate.

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 empty, or isn’t empty, then pick or type the value to keep.

The line reads “Only import when” followed by your choices. Only rows matching the filter are imported. Leave it out to import everyone.

Match your columns

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

  1. Under Fields, choose where each CSV column lands.
  2. Point one column at Email. It’s the only required match.
  3. Leave any column you don’t want set to Skip.
  4. To keep a column that has no field yet, choose a type under New field. XOXO creates a field named after the column when you start the import.

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

A date column imports when the year comes first, like 2024-03-13, or the month is written out beside a four-digit year, like Mar 13, 2024. Any other shape, like 03/04/2024 or 13/03/2024, is skipped, so the field stays empty or keeps the value it already had.

Tag subscribers from a column

If your file has a column of tags, like the Tags or Labels column another email tool exports, each person can keep their own.

  1. Open the column’s menu under Fields.
  2. Choose the item under New tag. It shows the first tags XOXO found in that column.

Separate tags in a cell with commas. XOXO matches tags you already have, whatever their capitalization, and creates the rest, up to 100 new tags per import. Only one column can hold tags.

Tag everyone in an import

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

Run the import

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.

What happens to each row

  • Someone already in your audience is updated, not duplicated.
  • The date each person joined is the day of the import. To keep the date they joined your old list, import that column into a date field.
  • Invalid addresses are skipped, along with the other addresses XOXO skips.

When the import finishes, its notification counts how many people were added, updated, and skipped.

If an import fails

A failed import’s notification says why. For a file, these are the common messages.

This file isn’t a valid CSV. Check its formatting and try again.

Open the file in a spreadsheet app, export it again as CSV, and retry.

This file exceeds the 50 MB, 50,000 row, 100 column, or 64 KB cell import limit

Split the file and import each part.

This file doesn’t line up with the columns you mapped. Upload it again and map the columns once more.

Choose the file again and redo the column matches.