Browse the documentation

Importing a CSV

Importing takes three screens: choose a file, match the columns, and confirm. The reading happens in the background and Issue Mint emails you when it is done, so you can close the tab. Imported readers arrive active, with the source recorded as Imported, and they can receive your next issue.

What the file needs to look like

One row per person, and one column holding the email address. Everything else is optional.

A first name column can be mapped if you have one. No other column is read, so a file exported from another platform can be uploaded as it is rather than trimmed down first. Issue Mint works out the separator for itself, which matters more than it sounds: Excel writes semicolon-separated files in every locale where the comma is the decimal separator, and a sheet saved as .txt is separated by tabs. Commas, semicolons and tabs are all read correctly, counted outside quotes so an address line holding Leeds, Yorkshire is not mistaken for a comma file.

Uploading it

The upload takes a CSV file up to 20 MB. Over that, split the file and import in parts.

Matching your columns

The second screen shows the first few rows of your file, the total row count, and how many subscribers you already have.

Issue Mint guesses the columns from the header names, recognising the usual spellings of email and first name, and falls back to the first column containing an at sign if the headers are unhelpful. Check the guess and change it if it is wrong. There is a tick for whether the first row is a header rather than a person, on by default, and the preview redraws when you change it so you can see which reading is right. Anybody already on your list is skipped rather than duplicated, and the screen says how many people that could apply to before you commit.

The permission tick and the source note

Two things are asked for before an import can start, and neither can be skipped.

The tick says the people in the file gave you permission to email them. It is not pre-ticked, deliberately, because imported readers are added as active without a confirmation email and that decision has to be yours. The note asks where the list came from, in at least ten characters, and a sentence is plenty: signups from my website since 2023, exported from Mailchimp. It is a useful record if delivery ever goes wrong, it helps us tell a genuine list from a bought one, and being asked to write it down stops a certain number of imports before they start, which is the honest third reason.

Neither is a formality. A bought or scraped list produces bounces and spam complaints at a rate that will pause hosted sending and damage the reputation of the address you send from, whether that is ours or your own sending account.

What happens to each row

Rows are read in a stream and written in batches, so a large file neither times out nor loads into memory. Each row ends up in one of four places.

  • Imported. A new subscriber, active, with the confirmation date set to the moment of the import.
  • Skipped. Already on your list, or repeated inside the file itself, or on the suppression list because that address previously hard bounced or reported spam. A suppressed address is never revived by an import.
  • Not usable. Either not a readable email address, or on a domain with no way to receive email. The two arrive under one count in the email, and the addresses trimmed for their domain are listed by name on your subscriber list afterwards.
  • Waiting for review. The whole file, if it tripped one of the thresholds that hold an import for a check.

Watching it run, and the email afterwards

The counts on the import update as it goes rather than only at the end, so a large file shows progress you can trust.

The email that follows says how many were added, how many were skipped, and how many could not be used. If the import stops partway through, which a very large file occasionally does, the email says so and gives the counts of what actually landed: those people are live subscribers, not a half-finished state to undo, and re-running the same file adds the rest. Nothing about the import is left for you to reconcile by hand.

Moving from another platform

Exports from the platforms people usually arrive from have their own pages, because each one names its columns differently and some of them hide the export behind an unexpected menu. Start with the guide for a Mailchimp export or a Substack export if that is where your list is now.

Questions

Can I run the same file again?

Yes, and it is safe. Addresses already on your list are skipped, so a second run adds only what is missing. That is also the answer when an import stops partway through: re-upload the same file rather than trying to work out where it got to.

What happens to a column of full names?

It is stored as it is, up to 255 characters, so a first name column holding Ada Lovelace gives you Ada Lovelace. Issue Mint does not split names, and it does not guess which half is which.

Do I have to import at all to start sending?

No. A newsletter can send from the day you sign up, to whoever has signed up through your own form. Importing is how you bring a list you already have, not a step you have to clear first.

Last updated 21 August 2026.

Try it on your own list.

14 days, every feature, no card. Sending works from the moment you sign up.

Start your trial