Quick-search for anything

Migrating from BeeHiiv

Migrate from BeeHiiv and import your content to Ghost with this guide

The Ghost Concierge team, at your service

Let us handle the BeeHiiv migration for you! This migration is included when you make an annual payment on the Ghost(Pro) Creator, Team, or Business plans. Learn more about the Concierge service.

Exporting your subscribers

To get started, download your full subscriber list (Export Subscribers (Full)) from BeeHiiv.

start export download export

Import subscribers to Ghost

If all of your subscribers are free, you can import this into Ghost directly.

import members

If you have paid subscribers, you need to relate Stripe Customer IDs with your subscribers emails.

import members

If you cannot connect your Ghost site to the same Stripe account you used with BeeHiiv, you may need to migrate customer data, products, prices, coupons to a new Stripe account, and then recreate the subscriptions before importing into your Ghost site. The Ghost Concierge team can help with this.

Migrating Content

Developers can migrate content from BeeHiiv to Ghost using our migration CLI tools.

You will first need to export your posts from BeeHiiv. This will be a CSV file which includes all post content, titles, dates, etc.

export posts download posts

First, make sure the CLI is installed.

# Install CLI
npm install --global @tryghost/migrate

# Verify it's installed

To run a basic migration with the default commands:

# Basic migration
migrate beehiiv --posts /path/to/posts.csv --url https://example.com

There are more options, such as the ability define a default author name and choose where /subscribe links go to.

Once the CLI task has finished, it creates a new ZIP file which you can import into Ghost.

Using custom domains

If you’re using a custom domain on BeeHiiv, you’ll need to implement redirects in Ghost to prevent broken links.

BeeHiiv uses /p/ as part of the public post URL, where as Ghost uses it in the URL for post previews. This means the redirect regular expression is quite complex, but necessary so that post previews in Ghost function correctly.

# redirects.yaml
  ^\/p\/(?![0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})(.*): /$1
  ^\/polls\/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}(.*): /
  ^\/t\/(.*): /tag/$1


This means that if a visitor or crawler goes to https://mysite.com/p/awesome-post, they will automatically be redirected to https://mysite.com/awesome-post.


Congratulations on your migration to Ghost πŸ™Œ. All that’s left to do is check over your content to ensure the migration has worked as expected. We also have a guide on how to implement redirects to make your transition smoother.