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.
Import subscribers to Ghost
If all of your subscribers are free, you can import this into Ghost directly.
If you have paid subscribers, you need to relate Stripe Customer IDs with your subscribers emails.
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.
First, make sure the CLI is installed.
# Install CLI
npm install --global @tryghost/migrate
# Verify it's installed
migrate
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
301:
^\/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
302:
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
.
Summary
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.