Skip to content
For independent news publishers
Free guide

Leaving Substack: a migration guide

Move your publication to WordPress or a custom site on your own domain. This guide walks through the archive, email list, paid memberships and launch checks, so you know what can move and what needs separate work.

By OpsHelpUpdated 13 min readNo email wall

Start here

Before you change anything

  • Keep Substack running while you build and test a private copy of the new publication.
  • Export the archive and subscriber records, and keep untouched copies.
  • Choose the publishing, email and membership tools together.
  • Confirm the paid-subscription route before promising readers an automatic transfer.

01

Choose WordPress or a custom build

Start with how you publish. List the jobs your next site must do: editing, multiple authors, newsletters, search, comments, free sign-ups, paid access, podcasts and subscriber support. Mark which are essential on launch day.

WordPress is a practical starting point when you want an established editor, a large archive, several authors and room to add features. Choose a maintained theme, membership system and email service that work together. WordPress core alone is not a complete replacement for Substack’s newsletter and billing workflow.

A custom build makes sense when the publication needs a distinctive reading experience, unusual editorial workflow or integrations that an existing system handles poorly. Agree who maintains the code, how editors publish, how data is exported and how another developer could take over. Building custom software brings a continuing maintenance obligation.

Use a domain registered in your name or your organisation’s name. Keep administrative ownership of hosting, email delivery and payment accounts wherever the provider permits it. Ask for documentation and an exit process as part of the project.

Price the whole publication

Budget separately for the initial build and migration, ongoing hosting and maintenance, email delivery at your list size, membership licences, payment processing, and any agreed response cover. A low-cost website plan is not a realistic allowance for moving a paid publication.

Our WordPress services and website builds describe the wider options. A Substack migration needs its own scope based on the archive, subscribers, billing and launch work.

02

Inventory and export what you have

Create a migration worksheet with five headings: content, readers, billing, domains and integrations. Record totals before moving anything, so you can explain differences afterwards.

From Substack’s publication settings, request a content export and download it when ready. Open a copy and confirm that the expected posts and data are present. Separately, export the subscriber records from the Subscribers dashboard; clear any filters when you want the complete list. Substack’s export instructions describe the current controls.

Keep an untouched, dated copy in restricted, encrypted storage. Subscriber exports contain personal data. Do not upload them to an online converter or send them through a general support chat.

Record these separately:

  • Content: published posts, drafts, authors, dates, sections, tags, paywall boundaries, images, audio, video and attachments.
  • Readers: free, paid, complimentary, trial and cancelled subscribers; newsletter preferences; unsubscribed, bounced and suppressed addresses.
  • Billing: the payment account, customer and subscription identifiers where available, prices, currencies, renewal dates, discounts and access already paid for.
  • Links: the current domain, post URLs, popular pages, RSS feeds, podcast feeds and external links you can update.
  • Other features: automations, comments, community activity, forms and analytics.

Do not assume Notes followers, recommendations, chat history, comments or app-specific features will be recreated by a content import. Check what your export actually contains and agree which parts will be archived, rebuilt or left behind. Record anything that needs a separate export or provider support.

03

Rehearse the content import privately

Set up a private staging site before touching the public domain. Password-protect it, keep it out of search, disable outgoing newsletters and welcome messages, and use test payment credentials. Use dummy reader accounts until you have an access-controlled environment for real subscriber data.

For WordPress

Agree the importer or conversion route for the actual installation. WordPress.com has a Substack import workflow, but its hosted-service features are not automatically available on an independently hosted WordPress site. Do not assume a raw Substack ZIP can be uploaded to any WordPress importer.

For a site hosted elsewhere, your developer should select a supported importer or convert the export into a format the chosen tools accept. Map the fields explicitly: title, body, original date, author, slug, categories and access level. Import images into the destination’s media storage where possible; an image that still loads from Substack is still a dependency.

For a custom site

Define the content model first, then map the export into it. Keep a stable source identifier or old URL for each record. The import must be repeatable without duplicating posts or overwriting subsequent edits. Keep a report of skipped records and missing assets.

Check representative posts before the whole archive

Try a short article, a long article, a paid post, a multi-author post and anything with audio, embeds or unusual formatting. Compare titles, dates, links, captions, images and paywall boundaries. Test as a logged-out visitor as well as an editor.

After the full rehearsal, reconcile the totals against the worksheet and investigate every discrepancy. Agree how new posts published during the project will be included in the final transfer.

06

Set up and test email delivery

Website hosting and newsletter delivery are separate services. Confirm who sends newsletters, who sends login and receipt emails, and what each costs at your current and expected volumes.

Use a recognisable sender name and a reply address someone monitors. Have the provider supply the correct DNS records for SPF, DKIM and DMARC. Avoid adding a second SPF record at the same hostname; the configuration must cover all legitimate senders.

Send test messages to accounts at several major mailbox providers. Inspect authentication results, links, images, mobile layout, replies and unsubscribe behaviour. Test password-reset or login emails as well as the newsletter itself.

Google’s sender guidelines distinguish general and bulk-sender requirements, including authentication and one-click unsubscribe. Your provider should meet the applicable requirements before launch.

A new sending setup does not inherit a guaranteed inbox placement. Start at a volume agreed with the delivery provider and watch bounces, complaints and deferrals. Do not repeatedly resend to rejected addresses. Use clicks, replies and delivery errors alongside open rates, which can be affected by privacy features.

Before the first real campaign, confirm that only one platform is scheduled to send it and that the final suppression list has been applied.

08

Tell readers what will change

Send a clear notice through your existing publication before the move. State the date, new web address, sender address, what changes for free and paid readers, and where to get help. Explain that a Substack login will not necessarily sign them into the new site.

Use the same publication name and recognisable sender identity during the transition. Put a matching notice on the old publication and the new website so readers can check an unexpected email.

Here is a starting point to adapt:

We’re moving [publication name] to [new domain] on [date]. You’ll still receive [newsletter name], now from [sender address]. Free readers: [explain any action]. Paid readers: [state the confirmed billing and access arrangements, including any action required]. You can check this announcement at [old publication link]. For help, contact [support address].

Replace every bracketed field with confirmed details. Only say that billing and prices remain unchanged if that has been verified for the reader’s category. Send separate instructions where some subscribers need to re-subscribe or update payment details.

Explain how to log in to paid content and how to unsubscribe. Give readers time to ask questions before any billing change. Do not bury an action that affects access inside a general announcement.

09

Run the launch checklist

Agree a quiet launch window and one person who can decide to pause. Keep the old publication and exports available. A rehearsal is complete only when the checks below have passed.

  1. Reconcile the final data. Briefly freeze edits where needed, take fresh exports and apply new posts, sign-ups, unsubscribes and billing changes since rehearsal. Use a delta process that avoids duplicate records.
  2. Check public and paid content. Test old URLs, archive search, images, author pages, mobile reading and paywall boundaries. A private article must remain private when logged out.
  3. Check reader accounts. Test sign-in or reset links, free registration, preferences, paid access and cancellation. Verify that imported passwords have not been assumed to work.
  4. Check billing ownership. Confirm renewal dates, access entitlements and the single system responsible for charges. Resolve exceptional subscriber categories before making promises to them.
  5. Check email. Confirm authentication, delivery, reply handling, suppression lists and unsubscribe. Ensure old automations cannot send a duplicate campaign.
  6. Take a recoverable backup. Include the destination database, media and configuration. Record the old DNS settings and how to restore them.
  7. Switch and inspect. Change the agreed website records, verify HTTPS and redirects, remove launch-only restrictions, and check the live site as a reader.
  8. Send the agreed announcement. Start normal publishing only after the public and subscriber checks pass.

Know what a rollback can and cannot undo

Pause the launch for missing paid access, unexplained billing differences, exposed private content or failed delivery. Returning DNS to the old website does not undo new payments, emails or reader changes. Keep a change log and reconcile both systems before trying again. Never restore an old database blindly over payments or sign-ups received after launch.

10

Monitor, then retire the old setup

For the first few days, check missing-page reports, support requests, email delivery and paid access daily. Review the first newsletter and actual renewal outcomes, including annual and exceptional subscriptions as their dates arrive.

Compare results with your pre-migration worksheet: archive totals, active email recipients, paying readers and billing records. Investigate differences rather than assuming a successful import message proves the move is complete.

Keep the old account, exports and relevant logs until the agreed checks and retention period are complete. Disable old publishing and billing paths only according to the confirmed migration plan. Do not delete the old publication simply because the new homepage works.

Update profile links, directories, RSS and podcast distribution settings where applicable. Leave a clear notice wherever you cannot redirect, and keep redirects working for readers following old links.

At handover, make sure you have:

  • Ownership and recovery details for the domain, site, newsletter and payment accounts.
  • A record of the import, exceptions, redirect map and billing arrangements.
  • A tested backup and restoration process.
  • An agreed maintenance plan, response hours and third-party costs.
  • Instructions for publishing, supporting readers and exporting your data again.

The move is finished when you can publish, reach readers, manage memberships and recover the site without depending on an undocumented workaround.

Keep reading

Security guide for independent journalists