Bring your readers from Substack, beehiiv, Ghost, Mailchimp, Kit or anywhere else. Any CSV file with an email column works.
Before you import
- Finish Connect Resend first, including Run setup. Imported readers go to Resend right after the import.
- Only import people who subscribed to you. Mail to people who did not ask for it gets reported as spam, and that can get your domain blocked.
Export your list
Most newsletter tools have an export button on their subscribers page. Save the file as CSV. Commas, semicolons and tabs all work.
Leaving Substack? Use the Export button on your Substack Subscribers page, and upload that file as it is. The subscriber CSV inside Substack’s full export .zip works too. LetterWP knows both by their columns.
Upload and review
- Go to Subscribers → Import/Export.
- Under Import, choose your file and click Upload and review. Nothing is imported yet.
- Read the review screen. If it looks right, click Import N subscribers. If not, click Choose another file.
The review screen shows:
- The file name, with “looks like a Substack export” when it is one.
- Which column feeds what, for example Email from the “Email” column.
- What will happen: how many new subscribers, and who is left out and why.
- The first 10 new people, with name, status and the date they subscribed.
Columns LetterWP recognises
Column names are matched without case, spaces or punctuation, so “Email Address” and “email_address” both work. Only an email column is needed. A plain list of addresses with no header row works too.
- Email: email, email address, mail, subscriber email, contact email.
- First name: first name, first, given name, fname.
- Last name: last name, last, surname, family name, lname.
- Name: name, full name, subscriber name, display name. Split into first and last name when the file has no separate columns.
- Date subscribed: start date, created at, created, subscribed at, signup date, subscription date, date added, date subscribed, joined, optin time. A missing or future date becomes today.
- Status: status, subscription status, subscriber status.
- Emails turned off: Substack’s email_disabled column.
- Gets emails: Ghost’s subscribed_to_emails column.
- Topics turned off: topics_off, from LetterWP’s own export.
What happens to each person
- New active subscribers: they get your next post, with no confirmation email. This is everyone whose status doesn’t say otherwise, and everyone in a file with no status column.
- Unsubscribed, inactive, cancelled, opted out, complained or spam: kept as Unsubscribed. On the list, never emailed. So are Substack rows with email_disabled set to true, and Ghost rows with subscribed_to_emails set to false.
- Bounced, cleaned, invalid or undeliverable: kept as Bounced. On the list, never emailed.
- Pending, unconfirmed or unverified: left out. They never confirmed their subscription.
- Already on your list: left exactly as they are. An import never brings back someone who unsubscribed.
- The same email twice in the file: imported once.
- Rows without a valid email: left out. The review screen shows a few of them.
Imported people show Import in the Source column on Subscribers, and keep the date they first subscribed.
Adding them to Resend
After the import, you see “Imported N subscribers from your-file.csv.” Then Adding them to Resend starts, with a progress bar and a line like “120 of 500 added. 380 to go…”
Resend takes people one at a time, about one or two a second. 500 people take 5 to 10 minutes. Keep the page open.
Imported readers get newsletters only once they are in Resend. Wait for “Everyone is in Resend. They get your next post.” before you send.
If you leave the page
Leaving the page pauses the work. Nothing is lost. Subscribers then shows “N imported subscribers are not in Resend yet.” with a Carry on link. Click it to pick up where it stopped.
If Resend turns someone down, the page says so and moves on. Sync to Resend now, at the bottom of Subscribers, tries them again and adds anyone else who is missing.
Export your list
- Go to Subscribers → Import/Export.
- Under Export, pick All or one status: Active, Pending, Unsubscribed or Bounced.
- Click Download CSV.
The file holds email, names, status, the topics each person turned off, source and dates. LetterWP’s import reads the same file back, on this site or another.
Tell readers you moved
Your first email comes from a new address. Before your next issue, send a short post that says you moved your newsletter to your own site, and how to unsubscribe. Readers who recognise you don’t mark you as spam.
