Get Help Your Way

OR

Knowledge Base

How to migrate from Ghost to beehiiv

How to migrate from Ghost to beehiiv

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

  • Migrate your newsletter content.
  • Migrate your subscribers.

Simply click the sections below to reveal the instructions for each.


Content Migration

    How to migrate your Ghost 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 Ghost content

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

    2. Select your import source. Choose Ghost and click Next in the top-right corner.

    Copy your API credentials into beehiiv

    1. Retrieve your Ghost Content API key and Content URL. In a separate browser tab, log in to your Ghost account. Go to Settings > Integrations and select Add custom integration

    2. Name the integration (e.g., Migration) and click the Add button.

    3. Add the API credentials to beehiiv. Copy the Content API key and API URL from Ghost and paste them into the corresponding fields in beehiiv. Click Save on the Ghost popup. 

    Note for Ghost Starter users:

    Starter-level Ghost plans do not allow custom integrations.

    As a workaround to get your API key, we suggest trying this:

    1. Open the Web version of any published post.
    2. Right-click, then select Inspect (in Chrome) to access your browser developer tools.
    3. Navigate to the Elements/HTML section, then search (CMD/CTRL + F) for ‘data-key’.
    4. The value after ‘data-key’ can be used as your Content API Key, copy it. 
    5. Lastly, the API URL is simply your Ghost homepage (e.g., https://nighthawk.ghost.io/).

    For paywalled content

    1. If you have paywalled content, you will need to temporarily remove paywalls in Ghost to complete the content import. Ghost’s Content API only exposes public content. To import paywalled posts, you must temporarily change their access level to Public.

      To bulk-edit:
    • Hold Shift or CMD while selecting multiple paid posts.
    • Right-click any or all selected posts.
    • Choose Change access >Public > Save.

    You can then restore paywalls after the migration by recreating them in your beehiiv posts.

    Choose whether to import authors and tags

    1. If you don’t want to carry over authors and/or content tags from Ghost, toggle those options off. After making your selections, click Next in the top-right corner.

    Monitor your import progress

    1. Imports typically take 5-15 minutes, depending on the number of posts you are moving over. 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.

    Review your imported content

    1. 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.

    Restore paywalls in Ghost (if needed)

    1. As a reminder after importing, please be sure to either change access for your paid posts in Ghost back to Paid-members only, or hide your site with the Make site private setting. This prevents paid content from remaining publicly visible after the content import.

    Notes on paywalls

    • When paid posts are imported from Ghost, they are added as free posts to beehiiv and are visible to any visitors on your website until paywalls are added manually to the posts. For this reason, we strongly recommend enabling the Private Publication setting in General Info until all paywalls are restored.
    • To hide paid content, you’ll need to manually add a Paywall block to the post and click Update web in the top-right corner.
    • Imported paywalls display without tier benefits and use default language (‘Subscribe to Default’) unless customized.

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

     

How to migrate free Ghost subscribers

Export your subscribers from Ghost

  1. Log in to your Ghost account and navigate to the Members tab. 
     
  2. Click Filter, then add the condition: Newsletter subscription > is > Subscribed, and click Apply filters. This ensures only active newsletter subscribers are exported.

  3. Click the gear icon and select Export selected members from the dropdown list. 

Import your subscribers into beehiiv

  1. In beehiiv, go to Settings > Subscribers Import, then click the New Subscribers Import button. 

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

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

    When ready, click Confirm subscribers import.
  1. 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.
     
  2. 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. Labels can be assigned to the Subscriber Tags option. 
     
  3. Once your mapping selections are complete, click Import at the bottom of the screen.

Review your import results

  1. 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.
     
  2. 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) Segment to exclude inactive subscribers

To help protect email deliverability while you transition to beehiiv, you may want to exclude unengaged subscribers from your initial sends (for the first 2-4 weeks). Here's how:

  1. Filter your Ghost subscribers and export them. To identify unengaged subscribers, we recommend creating a filter in your Ghost account for subscribers who signed up over 90 days ago that have opened less than 10% of the emails they’ve received. Export a CSV of your filtered subscribers.

  2. Create a segment of your Ghost subscribers in beehiiv. After exporting subscribers identified by those conditions, create a manual segment in beehiiv using the CSV export from Ghost. 
     
  3. Exclude the segment from your posts as needed. To exclude that segment from one of your post sends, select it under Excluded segments on the Audience page of the post editor.

Subscription Date Note: By default, beehiiv assigns the import date as each subscriber’s subscription date. If you’d like to retain their original signup dates from Ghost, complete your import first, then visit the Help page to contact our Support team and request that those dates be added manually.

How to map your paid Ghost 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 Ghost-connected Stripe account, then click Customers in the left-hand menu.
  1. On the Customers page, click Copy › Copy all customers.

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

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

  5. Click Confirm request to start the transfer.

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

  7. 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.

  8. 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 Ghost-connected Stripe account from the dropdown in the upper-left corner of the screen.

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

  5. Back in Stripe, navigate to Developers > API keys. Make sure that you’re still in your Ghost-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.
  3. Return to your beehiiv tab, paste the API key into the Restricted API key field, and click Continue in the bottom-right corner.

  4. On the Select products and map to beehiiv tiers page, map your existing paid subscription tiers from Ghost 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 Ghost pricing.
     
  1. When finished mapping, click Continue at the bottom of the screen.

  2. 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.
     
  3. 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.

  1.  A progress bar will appear while the migration is processing. 

  2. 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 info about billing post migration 

After migrating, you must bulk pause the subscriptions in your Ghost account to prevent double billing. If you don’t, subscribers will be charged twice — once by Ghost and once by beehiiv.

Ghost doesn’t offer a bulk pause option, so the subscriptions will need to be paused indefinitely in the Ghost-connected Stripe account.

Most publishers choose to pause subscriptions indefinitely, since the change is immediate and doesn’t require any actions to be completed via the Stripe API. 

To pause subscriptions indefinitely:

  1. In the Ghost-connected Stripe account, go to Settings › Billing > Subscriptions and Emails.
  2. Under Pause payment collection for all existing subscriptions, click the Set up button.
  3. In the popup, select Indefinite for Pause Duration and Void Invoices before clicking on the Pause button. 

Once your paid subscribers are fully migrated and billing is paused in Ghost, 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 Ghost to beehiiv as smooth as possible, there are some 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:

    • Previous paywall placements will not be migrated.
    • Comments will not be migrated.
    • Internal post links may break or need manual adjustment after migration, especially if the link URLs change structure.
    • Blockquotes will migrate, but their visual styling may differ slightly from Ghost.
    Additional tips after migrating content and subscribers
    If your Ghost 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.
    Hire a beehiiv Expert
    If you prefer hands-on help with your migration from Ghost 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