Get Help Your Way

OR

Knowledge Base

How to migrate from Substack to beehiiv

How to migrate from Substack to beehiiv

In order to successfully migrate from Substack to beehiiv, you’ll need to do two things:

  • Migrate your subscribers.
  • Migrate your newsletter content.

The steps you’ll need to take to do this vary based on whether you have only free content, paid content, or a mix of both in Substack. Refer to the chart below to determine which parts are relevant to your needs.

Migration TypeSubscriber MigrationPaid Subscriber MappingFree Content MigrationPaid & Combo Content Migration
Only Free Subscribers & ContentX X 
Only Paid Subscribers & ContentXX X
Both Free & Paid Subscribers & ContentXX X

Free Content Migration

    How to migrate your free Substack content into beehiiv

    Create your default template in beehiiv 

    Before migrating your content, it’s best to create a newsletter template in beehiiv with your preferred styling. When setting up the template, select Set as default post style so those design choices automatically apply to all imported posts.

    After migration, styling can only be adjusted on a post-by-post basis.

    beehiiv offers several pre-built templates you can use as a starting point. For step-by-step instructions on creating templates and setting a default post style, see: Getting started with the Post Builder: Creating newsletter templates.

    Import your free Substack content

    1. Copy your Substack publication URL. In Substack, go to Settings > Website to copy your publication URL. Alternatively, you can copy the URL directly from your browser’s address bar while viewing your Substack homepage.

    2. Open the Content Import tool in beehiiv. From your beehiiv account, go to Settings > Content Import and click the Start Import button.

    3. Select your import source. Choose Substack and click Next in the top-right corner.

    4. Select Free content, then click Next.

    5. Paste your Substack publication URL into the field, then click Finish import.

    Monitor your import progress

    1. Wait for your posts to migrate. Migration usually takes 5-10 minutes, depending on the number of posts. During this time, your import status will display as Pending or Processing on your Historical Imports table.

    2. Refresh your browser to check progress. Once the import is complete, the status will show Complete, along with the number of posts successfully created.

Free and Paid Content Migration

    How to migrate both paid and free Substack content into beehiiv

    Before migrating your content, it’s best to create a newsletter template in beehiiv with your preferred styling. When setting up the template, select Set as default post style so those design choices automatically apply to all imported posts.

    After migration, styling can only be adjusted on a post-by-post basis.

    beehiiv offers several pre-built templates you can use as a starting point. For step-by-step instructions on creating templates and setting a default post style, see: Getting started with the Post Builder: Creating newsletter templates.

    1. From your Substack account, go to Dashboard > Settings > Import/Export. Click the New export button. 
    2. Once the export file is ready, click the download icon to save it. 

      IMPORTANT NOTE FOR SAFARI USERS: By default, Safari may automatically unpack zipped files after download. To prevent this, go to Safari > Settings > General and make sure Open “safe” files after downloading is unchecked. This ensures your paid content remains in a zipped format, which is required for upload to beehiiv.

    Import your Substack content into beehiiv

    1. In beehiiv, go to Settings > Content Import. Click the Start Import button. 

    2. Select Substack and click Next in the top-right corner.

    3. Select Free content and Paywalled content, then click Next again.

    4. Under Free content, paste your Substack publication URL into the field. Then, under Paywalled content, click Select File and upload your Substack export zip file.

    5. After your Substack URL is validated and your file uploads successfully, click Finish import in the top-right corner.


    Monitor your progress

    Migration typically takes 5-10 minutes, depending on the number of posts. During this time, you’ll see a Pending or Processing message in the Historical Imports table.


    Refresh your browser to check progress. Once complete, the status will update to Complete with the total number of posts migrated.


    Review your imported content

    After migration, your imported posts will appear under Posts in your beehiiv dashboard. You can also view live versions of your posts on your beehiiv website.

    Example: Below is a paid Substack post that’s been migrated into beehiiv.


    Notes on paywalls

    • When paid posts are imported from Substack, the exact paywall placement is not carried over. No portion of the post will be visible to free readers by default.
    • To display a preview or partial content in beehiiv, you’ll need to manually add a Paywall block to the post, then go to the Audience page of the post flow and click Update web in the top-right corner.
    • Imported paywalls display without tier benefits and use default language (‘Subscribe to’) unless customized.

    To customize the copy and appearance of your paywall, follow the steps in: How to add and use paywalls for paid subscriptions.

Subscriber Migration

    How to migrate free Substack subscribers
    If you’d like to retain certain data fields (like for unique segmentation in beehiiv), review Optional: Structuring advanced data fields before moving on to the next steps.
    1. Log in to your Substack account and go to Subscribers. Access the dropdown menu on the right and select to Export a CSV list of all your subscribers.

    2. In beehiiv, go to Settings > Subscribers Import and click the New Subscribers Import button. 

    3. You’ll be prompted to choose an import method. Select Upload a CSV file, then choose your file. Once uploaded, click Next.

    4. Under Advanced Configuration (Optional), you can apply tags to all subscribers in the CSV. You’ll also be able to map any tags from your CSV in the next step.

      When ready, click Confirm subscribers import.
       
    5. A confirmation will appear asking you to verify that all contacts in the import have knowingly opted in to receive emails from you. Click the Import button to proceed.
       
    6. Next, you’ll start mapping out the fields. Match the columns from your CSV file to fields in beehiiv. For any fields that don’t already exist, you can create new ones under the Custom Field column by selecting Create new custom field.

    7. Review your results. After processing, you’ll see how many subscribers were successfully imported.

      If some were rejected, refer to the FAQs in this article for common reasons and troubleshooting steps.
       
    8. To view the subscribers from your newly imported list in your account, go to Audience > Subscribers.

      To view custom fields for a specific subscriber, click their email address, then scroll to the Custom Fields section on the left side of the subscriber profile.

Optional: Structuring Advanced data fields

    How to cleanup your list for import

    In beehiiv, publishers are able to create custom segments using a wide range of unique data points and custom fields. Some of these fields exist in Substack but need to be reformatted in Microsoft Excel or Google Sheets to import properly.

    Recommended fields to import from Substack

    • Email
    • Name
    • Start date
    • Subscriber country
    • Subscriber source (free)
    • Activity

    Prepare your file

    1. Open your downloaded CSV list of subscribers in Google Sheets or Microsoft Excel.
    Note: For best results, convert the file to a native Google Sheets format or save it as an Excel (.xlsx) file to unlock full formula functionality.
    1. Remove all unnecessary columns, keeping only the recommended fields listed above.
      Then, rename the columns as follows:
    Substack Export Namebeehiiv Import Name
    Start datesubscription_date
    Subscriber countrycountry
    Subscription source (free)utm_source
    ActivitySubstack Activity Rating

    Split subscriber names

    1. In your spreadsheet, use formulas to split subscriber names into first and last names.

    After splitting names:

    • Ensure the data is saved as values (not formulas).
    • In Excel, copy and paste as values.
    • In Google Sheets, use the Power Tools extension.

    Import and map your subscribers

    1. Once your file is cleaned and formatted, follow the steps in How to migrate free Substack subscribers to import your list and map your custom fields.
    Pro Tip: After import, use your custom field data to create segments for tracking engagement or sending targeted campaigns.

    (Optional) Segment to exclude inactive subscribers

    1. If you’ve included the Substack Activity Rating custom field, we recommend excluding subscribers with an activity rating of 0 for your first 2-4 weeks of sending.
    • A rating of 0 means the subscriber hasn’t opened previous emails sent from Substack.
    • Excluding them initially helps protect deliverability while your audience transitions.

    Create a segment with these conditions: Active subscribers with an Activity Rating of 0 in a Free tier.


    To exclude that segment from one of your post sends, select it under Excluded segments on the Audience page of the post editor.

    Note regarding subscription dates: By default, the subscription date in beehiiv will display as the date you import your subscribers. If you’d like to retain their original signup dates from Substack, complete your import first, then visit the Help page to contact our Support team and request that those dates be added manually.

Paid Subscriber Mapping

    Mirroring your paid Substack subscriber details

    Before you begin mapping your paid subscribers from Substack to beehiiv, please note the following: 

    • Connect your Stripe account to beehiiv: When setting up your account, Stripe should automatically detect your existing Substack-connected account and offer to pre-fill your business information. This new Stripe account will host the paid subscriptions recreated from your Substack-connected Stripe account. 
    • Step-by-step instructions for creating a new Stripe account through beehiiv are available here.
    • Set up paid tiers in beehiiv: Your paid subscription tiers must already exist before migration. Follow this guide for details on creating pricing tiers, and be sure your beehiiv tiers mirror your Substack tiers. 
    • Maintain the same currency: When mapping paid subscriptions from Substack to beehiiv, it's crucial to maintain the original currency because you cannot change the currency of subscriptions during migration.
    • The migration tooling also doesn’t support combining multiple currencies for a single customer.
    • Example: If your Substack price was $150 (USD) but localized pricing charged some users €140 (Euros), those users will not migrate successfully since their currency differs.

    How to map your paid Substack subscribers

    1. In beehiiv, go to Settings > Subscribers Import. Under Import paid subscriptions from Stripe, click Start a New Migration.

    2. On the next screen, click Start a New Migration again to confirm.

    3. In a separate browser tab, log in to your Stripe account. From the dropdown in the upper-left corner, select your Substack-connected Stripe account, then click Customers in the left-hand menu.
    4. On the Customers page, click Copy › Copy all customers.

    5. Navigate back to the beehiiv tab and copy the beehiiv Stripe account ID under step 2. 

    6. Return back to Stripe, paste the beehiiv Stripe account ID into the Account ID field, and click Continue
       
    7. Paste your beehiiv account ID into the Account ID field and click Continue.

    8. Click Confirm request to start the transfer.

    9. In your beehiiv-connected Stripe account (the recipient), navigate back to Customers and click Accept to approve the customer data transfer.

    10. A notification will appear confirming that the transfer has started. Although Stripe notes it may take up to three days, most transfers complete within 5-15 minutes, depending on the size of your customer list.

    11. Once the transfer is complete, refresh your Stripe window to view the migrated customers. 

      You’ll now see the customer profiles and payment details successfully copied into your beehiiv-connected Stripe account.

    Pro Tip: For additional details regarding migrating PAN data in Stripe, refer to this resource from Stripe.
    1. Next, the paid subscriptions will need to be recreated. Navigate back to your beehiiv tab and click the I’ve completed these steps button.

    2. In Stripe, switch back to your Substack-connected Stripe account from the dropdown in the upper-left corner of the screen.

    3. Go to Settings > Business, then copy your Substack-connected Stripe account ID.
       
    4. Return to your beehiiv tab and paste the Substack account ID into the required field.

    5. Back in Stripe, navigate to Developers > API keys. Make sure that you’re still in your Substack-connected Stripe account.

    6. Click Create restricted key.  

    7. When prompted, select Providing this key to another website, then click Continue at the bottom of the screen.

    8. In the form that appears:
    • Enter beehiiv in the Name field.
    • Enter beehiiv.com in the URL field.
    • Click Create restricted key.
       
    1. Complete the verification steps required by Stripe to finalize the API key creation.

    2. After creating the restricted API key, copy the key and click Done.
    Tech Note: Save your API key in a secure place. Once the window is closed, the key cannot be retrieved and you’ll need to create a new one if lost.
    1. Return to your beehiiv tab, paste the API key into the Restricted API key field, and click Continue in the bottom-right corner.

    2. On the Select products and map to beehiiv tiers page, map your existing paid subscription tiers from Substack to your tiers in beehiiv.

      You can also map legacy price points to existing tiers or create new tiers to preserve older pricing for existing subscribers.

      1. Select the checkbox for each tier or price point you want to migrate. 

        The dropdown list will show any paid subscription tiers you already have in beehiiv, choose the one you want to map to.

      2. For any subscription products that don’t yet have a beehiiv price point (such as legacy or discounted tiers):
        • You can assign them to an existing beehiiv tier using the Map to beehiiv tier dropdown, or
        • Click Create new tier to make a separate tier.
        • In both cases, subscribers retain their current Substack pricing.
           
      3. When finished mapping, click Continue at the bottom of the screen.

      4. Depending on how many subscription products you have, generating the migration preview may take 2–10 minutes. If the page doesn’t update, refresh your browser window.
         
      5. Once the preview is ready, you’ll see a table listing all mapped paid subscriptions.
        • We recommend clicking Download CSV for record-keeping and reviewing your mappings before proceeding.
        • When ready, click Start import.
      6.  A progress bar will appear while the migration is processing. 

      7. When the migration completes, you’ll see a confirmation page showing which subscription products were successfully mapped to beehiiv.

        To view migrated subscribers with a paid tier, click View audience and select All tiers from the dropdown filter.

    Important note about billing post migration:

    After migrating, you must either pause or cancel paid subscriptions in your Substack account to prevent double billing. If you don’t, subscribers will be charged twice — once by Substack and once by beehiiv.

    Most publishers choose to pause subscriptions indefinitely, since the change is immediate and doesn’t require Substack’s assistance.

    If you prefer to fully cancel your Substack account or paid subscriptions instead of pausing them, contact Substack Support directly. Be sure to confirm that no refunds are issued during this process.

    To pause subscriptions indefinitely:

    1. In Substack, go to Dashboard › Settings › Payments.
    2. Click Pause subscription billing.
    3. In the popup, select Pause indefinitely.

    Once your paid subscribers are fully migrated and billing is paused in Substack, your transition to beehiiv’s paid tiers is complete. Your audience, payments, and subscriber data are now fully managed in one place — ready for you to grow, monetize, and engage your community on beehiiv.

Known limitations and additional tips

    Current list of limitations

    While the migration tools are designed to make moving from Substack to beehiiv as smooth as possible, there are a few limitations to be aware of. These are mostly due to differences between the two platforms and how certain content types are structured.

    Current limitations include:

    • Videos will not be migrated. 
    • Podcasts will not be migrated.
    • Previous paywall placements will not be migrated.
    • Tags will not be migrated. 
    • Authors will not be migrated.
    • Photo galleries will not be migrated.
    • Comments will not be migrated.
    • Category structures will not be migrated.
    • Code blocks will migrate as plain text and will need to be recreated using the HTML Snippet option in the post editor.
    • Embeds will not be migrated. 
    • Block quotes will migrate, but their visual styling may differ slightly from Substack. 
    Note: While audio and video posts are not currently migrated through the content importer, you can recreate them in beehiiv using the steps in this guide: Ways to migrate audio and video posts from Substack to beehiiv.
    Additional tips after migrating content and subscribers
    If your Substack publication uses a custom domain, you can mirror that setup in beehiiv so that all backlinks and web traffic to past posts redirect to your new beehiiv site.
    • Because beehiiv uses the same “/p/” post URL structure as Substack (e.g., news.beehiiv.com/p/name-of-post), you don’t need to configure redirects manually.
    • We’ve partnered with Entri, a DNS management service, to make this process seamless, no manual DNS changes are required. Refer to this step-by-step guide: How to use a custom domain for your publication.
    • If you previously used the Recommendations feature in Substack, we recommend Setting up your Top 4 Recommendations in beehiiv to help replicate that as a free subscriber growth channel.
    • To help ensure your post content is visible in search results, we also recommend verifying your site ownership with Google Search Console. This improves SEO and web traffic for your beehiiv site. For instructions, refer to Google Search Console: Ownership verification and indexing setup for SEO.
    Hire a beehiiv Expert
    If you prefer hands-on help with your migration from Substack to beehiiv, you can work with a specialist from the beehiiv Experts Directory. These trusted partners offer professional migration services to help ensure a smooth transition to your new platform.

Related Articles

Want More Features?

Upgrade your plan to access more beehiiv tools and supercharge your growth

the one place to build
the one place to build
the one place to build
the one place to build
the one place to build
the one place to build
the one place to build
the one place to build
the one place to build
the one place to build
the one place to build
the one place to build