How to migrate from Substack to beehiiv

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

  • Migrate your subscribers
  • Migrate your newsletter content

You can follow the step-by-step instructions for each below. Due to the nature of these processes, we strongly recommend reading through this entire article before proceeding, ensuring a clear understanding of the necessary actions you should take.

The instructions vary based on whether your Substack content originates from free accounts, premium accounts, or a combination of both account types. Refer to the chart below to determine which parts are relevant to your needs. 

Migration Type Subscriber Migration  Premium Subscriber Mapping Free Content Migration Premium & Combo Content Migration
Only Free Subscribers & Content X   X  
Only Premium Subscribers & Content X X   X
Both Free & Premium Subscribers & Content X X   X

Subscriber Migration

  1. Log into your Substack account and export a CSV list of all your subscribers.



    Note: If you’d like to retain certain advanced data fields about your subscribers to create unique segmentation in beehiiv, see the instructions below for Optional: Structuring Advanced Data Fields prior to moving to the next step. 

  2. Log into your beehiiv account so you can import your Substack subscribers. From the left hand panel, go to Settings > Publication > then click on the Import Subscribers tab.

  3. If you're importing more than 10 subscribers into beehiiv, you'll first need to complete Stripe Identity Verification to verify your identity. You can do so by going to Settings > Publications > Import Subscribers, and then click on the Start Stripe Identity Verification button. Then, after you have completed the Stripe verification process, click on the Start New Import button.

    If you’d like to import more than 10,000 subscribers, you’ll need to complete the Stripe verification process as outlined above, then fill out a form to submit. You can access the form by going to Settings > Publication > Import Subscribers, then scroll down to Raise your import limit and click on Complete this form.



  4. After clicking on the black Start Import button, you’ll be prompted to choose an import method. Select Upload a CSV file and then choose the CSV file that you want to import.



    If you have a welcome email setup or an automation active in your beehiiv account, you can choose those options or leave them blank. You can also select or skip the email validation.

  5. Review your selections and click on Import Subscribers.

  6. A confirmation message will pop up where you will need to confirm that the contacts in the list have knowingly opted-in to receiving emails from you. Click on Import to confirm.



  7. Next, you’ll be able to start mapping out the fields from the CSV file as custom fields within beehiiv.
    For additional guidance, you can watch the video on this article.



  8. When done making your mapping selections, click on the Import button.

  9. Once completed, you will see how many subscribers were accepted



  10. You can then view the subscribers by navigating to the Audience section of your account.



  11. To see the newly imported custom fields, click on an individual subscriber’s name and navigate to the Custom Fields section. 


Optional: Structuring advanced data fields

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

The data we recommend exporting from Substack is the following:

  • Email
  • Name
  • Subscriber Country
  • Subscriber Date
  • Subscriber Source (Free)

 

To export data, simply click the Columns tab on the Substack subscriber page, check the above fields, and then select to export Only the selected columns.

 

 

Now it’s time to clean up your list!

  1. Upload your downloaded CSV list of subscribers to Google Sheets or open it in Microsoft Excel.
    Note: We recommend converting to a native Google Sheets document or saving the file as an .xslx file in order to unlock all formula features.

  2. Once complete, you should have six columns; some may need to be renamed, as listed below.

    Substack Export Name  beehiiv Import Name
    Email email
    Subscription type tier
    Subscriber country country
    Subscription source (free) utm_source
    Subscription date subscription_date
  3. Before continuing and before you import your list to beehiiv, we recommend creating three custom fields in your beehiiv account, named to mirror the data that is being imported, like so:
  • first_name
  • last_name
  • subscription_date
  1. On your Excel or Sheet document, you can use formulas to split subscriber’s names into two (first and last). We recommend using the methods outlined in this tutorial.
    Please ensure that the data is no longer a formula and is just a value. In Excel, that requires just a copy paste and selecting “paste as values.” In Google Sheets, we recommend the Power Tools extension.

  2. With that finished, you’re good to go. Import your list and move on to the next step. Now you can use this data to create segments.

Note: Previous subscription dates will not automatically populate in beehiiv. If you’d like to retain the subscription date of when a subscriber signed up on Substack for future reference in beehiiv, please complete the rest of these steps and contact our customer support team. Otherwise, the subscription date will show as the date you import them into beehiiv.


Premium subscriber mapping

Before you embark on mapping your premium subscribers from Substack to beehiiv, please note the following:

  • All beehiiv premium subscriptions require a Stripe account.
  • You will need to have the premium offerings set up in your account here.  
  • When mapping premium subscriptions from Substack to beehiiv, it's crucial to maintain both the subscription price and the original currency because you will not be able to alter the price or the currency during the migration process.
    • The migration tooling in beehiiv does not support combining currencies for a single customer.
    • For example, if you had set a price of $150 USD in Substack and enabled localized pricing, where someone in Europe might pay $140 euros, the migration tool will not transfer such users if their currency differs. This may result in errors during the migration process.
  • You can also watch this video for more information on setting up premium subscriptions and adding premium offerings to your beehiiv account. 
  1. Log into your Stripe account and navigate to where you can review the current customers and products that you have been offering your premium subscribers.



  2. In another tab, log into your beehiiv account and go here, then click on the Get Started button.



  3. After you click the Get Started button, you will be brought into a series of steps which will require you to migrate PAN (primary account number) data between your previous Subscription Platform Stripe account and the beehiiv connected Stripe account.



    Note: For additional guidance with this, you can refer to these directions from Stripe.

  4. Go back to the tab where your Stripe account is connected to your previous platform, and navigate to Customers.



  5. Click on the Copy button and then select the Copy all Customers option.

  6. A popup will appear where you will need to put in your recipient's account ID.



    Note:
    This is asking for the Stripe account ID that is connected to your beehiiv account, you can find it under your Stripe Profile settings here, just scroll down to the Accounts section, and grab the Stripe ID that is connected to your beehiiv account.



  7. Copy the account ID that is connected to your beehiiv account and paste it into the box titled: Enter recipient’s account ID.



  8. Click on Continue and then Confirm the Request.



  9. Go back to your Stripe Account that is connected to beehiiv (Recipient account) and navigate to the Customers area.



  10. You will see a notification up top that says your previous account wants to send you a copy of the customer data, click Accept



  11. You will immediately receive a new notification that says New customers are being added, depending on how many you have this might take some time.



  12. After the PAN data has been successfully copied between Stripe accounts, you should see all of your customers reflected in your beehiiv stripe account.
    Doing this will give you access to a file that maps the payment method IDs used by each customer in your previous Stripe account to the new payment method IDs that are in your beehiiv stripe account. In your Stripe account, this file can be found under Settings > Documents.



    Click on Download to retrieve the file. When it’s done, the file will automatically be saved to your device, make note of where it saves so you can easily access it for the next step.

  13. Go back to the tab with your beehiiv account and upload the new file. This will allow us to ensure that we are using the correct payment method for each customer when migrating over your subscriptions later in this process.



  14. Once the file is uploaded, click the Continue button in the bottom right to move onto the Enter Account Details phase.

  15. In the provided fields, enter your previous platform’s Stripe account ID and then generate a new Stripe API key that is linked to your previous platform.



  16. From the tab with your Stripe account, you can find the Stripe account ID that is connected to your previous platform in your Stripe profile settings under Accounts, here. Just scroll down to locate it and then copy the Account ID.



  17. Go back to the tab with your beehiiv account and enter or paste in the Stripe account ID.



  18. Go back to your Stripe tab (or open another one) and go to Developers > API keys. Be sure that you are in the Stripe account that is connected to your previous platform.



  19. Click on Create restricted key.



  20. Give the new restricted API key a name, and also give it Read permissions across all sections.



  21. Once you are done giving read permissions you will be at the bottom of the page, review everything and then click on Create Key.



  22. After creating a new key, you will have the option to copy the key. When finished, click Done.
    Note: Be sure to save the API key in a safe place because once you close the window, you will not be able to see it again. This is done for security reasons.



  23. Go back to the tab with your beehiiv account and add the API key into the field, then click the Continue button in the bottom right.



  24. You’ll now move into the Map Products phase where you’ll map your previous subscriptions to the beehiiv connected subscription products. To get started, click on Smart Mapping.



  25. Right  away, you’ll see that your previous subscriptions have been mapped to your beehiiv subscriptions.



  26. (Optional) If you have additional subscriptions products that do not have a beehiiv price point, you can click on Add beehiiv Price Points and map that product to the new beehiiv created price point.
    When done, click on Create Price Points.



  27. After you are done mapping your products, click on Next.
    The progress bar on your screen will show that you are in the Preview Subscriptions phase where you will be able to preview all the subscribers that will get migrated. You can also export the preview.



  28. Review all of the subscriptions details to make sure they are as you desire, then click on Start Import to begin the process.

  29. A new  progress bar will appear to let you know when the import is completed .



  30. Once done, you can verify this by going to Audience > Subscribers in your account where you will see your migrated premium subscribers included in your list.



  31. After you have mapped  your premium subscriptions into beehiiv, go back to your Stripe account and verify that those Substack customers now have a beehiiv subscription plan assigned to them.

    Look out for the following:
    • You should see two subscription plans under each customer, one from Substack and one from beehiiv. (In the example below, both show as canceled subscriptions but you should see them as active.)
    • The beehiiv plan should have the same renewal date and/or trial ends date as the Substack plan .



    IMPORTANT NOTE: You will need to cancel or pause your Substack account before the renewal date or your premium customers will get charged twice, once through Substack and once through beehiiv.

    Additionally, if you  prefer to cancel your Substack account, then instead of pausing your subscriptions in Substack, you will need to cancel the subscriptions in Stripe, be sure to issue no refunds, and then disconnect your Stripe account from Substack. Please reach out to Substack Support
    for assistance.

  32. Log into your Substack account and pause the premium subscriptions that were migrated to beehiiv. Or, see the note above if you prefer to cancel your Substack account.



  33. (Optional) For additional verification, we also recommend  going back to your Stripe account and verifying that the new beehiiv subscription plan is registered to the right customers.


 


Free content migration

  1. To migrate your free Substack content into beehiiv, you will need your Substack Publication URL, which you can copy from your Substack account.



  2. From the left hand panel in your beehiiv account, go to Settings > Publication > then click on the Import Content tab.

  3. Click on the Get Started button and select the Substack import option.



  4. Enter/paste your Substack Publication URL found under Step 1 on the form, then click the Import button.

  5. Depending on how many posts you are migrating it might take some time, so you may see a “pending” message while the import is going on.

  6. When import is complete you will see a “complete” status with the number of posts created.




Premium & free content migration

  1. From your Substack account, go to Settings > Exports and click on the Create new export button. 



  2. A new export will launch and when it’s ready, you will receive an email from Substack with a zip file that you can download.​​
IMPORTANT NOTE FOR SAFARI BROWSER USERS: Please ensure your browser settings do not automatically unpack your zipped content — which is often a default setting in Safari. Make sure that the 'Open “safe” files after downloading' option is unchecked to prevent Safari from automatically unpackaging your zipped premium content. This precaution is necessary as you'll need to submit a zipped file in your beehiiv account.




  1. After you have your Substack premium content exported and saved as a zip file, from the left hand panel in your beehiiv account, go to Settings > Publication > then click on the Import Content tab.

  2. Click on the Get Started button and select the Substack import option.

  3. Enter/paste your Substack Publication URL found under Step 1 on the form.

  4. Under Step 2, click on Select File and choose your exported zip file from Substack, then click the Import button.



  5. Depending on how many posts you are migrating it might take some time, so you may have a “pending” message while the import is going on.



  6. After your import is complete, you can view the status and see how many posts have been imported into your beehiiv account.

  7. Afterward, you can view them in the Posts section of your beehiiv account. Or additionally, you can verify on your beehiiv blog that the content is for premium members only.
    Here’s an example of a Substack premium post that’s been migrated to a beehiiv premium post.

 


Known Limitations

In our commitment to ensuring a seamless migration process, it's essential to acknowledge specific constraints while transferring content from Substack to beehiiv. Our content importers, although considered advantageous features, typically function effectively for the majority of our customers. Yet, achieving complete accuracy poses challenges due to the dynamic nature of third-party platforms, often subject to changes beyond beehiiv's control.

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 
  • Photo galleries will not be migrated
  • Comments will not be migrated
  • The categories structures of your content will not be migrated
  • Code blocks will get migrated in plain text, so then you will need to recreate them within beehiiv using the HTML Snippet option in the text editor
  • Embeds will not be migrated 
  • Author’s will not be migrated
  • Block quotes will get migrated but the actual style might vary in beehiiv then what you have had in Substack. 

Use a beehiiv services partner

You always have the option to access our internal services partner to help you and your team with any migration efforts to beehiiv.  

Please fill out this services form for assistance.

Was this article helpful?