Digital nomads. The flavour of the day. Looking for a better digital experience? Every reason is good to move from one place to another in the digital world. It’s about having some fun.

I recently came across this blog post from Greg Morris where he writes: “I look at blog designs like* and think to myself “I want a blog like that” and then go out and try to build one.”*. I often tell myself the exact same thing. But then, not long after, I came across another blog post , but this time by Andy Nicolaides writing on his blog, The Dent:

“I’ve just gone through yet another blog migration, moving from Micro.Blog to Ghost (again). I was happily posting to Ghost a year or so ago, saw a nice looking blog on and jumped ship. I then sat there, not posting for half a year, before I saw Greg Morris’ updated site over on Ghost and my blog envy kicked off again. Let’s not even mention how incredible Matt Birchler’s Birchtree looks right now!”

Ghost has always been a source of curiosity for me, coming back to it from time to time to look and see how it is evolving. Following those two blog posts, I got back to one of my articles about a past experience with Ghost for photo sharing. At the time, it didn’t go well. Furthermore, I started using Substack to host my newsletter for unknown or clearly defined reasons. So, this time, I returned to Ghost to look at it as an alternative to Substack. Why? After all, I was quite happy with Substack. And yet… If I look at Substack and Ghost, there are many things that made me dubious of my choices.

  • I don’t get any subscribers from Substack Discovery because Substack is very popular these days.
  • I prefer the way Ghost handles the publishing process and the distinction between having a CMS and a newsletters publishing platform within the same platform.
  • Ghost’s API supports text editors like Ulysses, which would help speed up the process of creating newsletter issues. By working directly with Ulysses, each new issue would be much easier to put together, as Ulysses supports templates, while Substack doesn’t. Since the basic structure of my newsletter stays the same each month, using a template makes perfect sense.
  • Substack offers some visual customization options, but they are quite limited. On the other hand, Ghost offers themes that help make a more personal-looking website.
  • Ghost supports Unsplash, which is a must for me.
  • Ghost provides better support for photos than in Substack with photo galleries. This could prove to be useful for my photo legend series, among other use cases.
  • Integration of plausible analytics is easy, but it is not possible with Substack. Another must-have for me.
  • Stripe integration, which I already use for Medium payments, if I ever choose to add a paid tier to my newsletter.
  • Commenting is possible by tweaking the theme and adding some integration code. Yet, I wish there was a better and easier way to add this to a website. In the future, I could try to set up Commento for comments using this procedure. Ghost theme customization is available only on mid-tier and up-paid plans. This feature could replace the thread feature available on Substack.
  • Good integration with Buffer via Zapier. IFTTT integration is possible only via RSS feeds. As a paying member of IFTTT, I chose the latter.
  • Better RSS feeds support posts, tags, and pages just by adding /RSS to any URL. On top of that, it is possible to customize the webpage referring to a tag by adding a header image and a description, just like here for the Photo Legend Series.
  • Selecting a fully featured theme is challenging, as Ghost doesn’t provide an easy way to filter themes by supported features.
  • I’ll leave my Substack account active for the Substack Reader feature.
  • Easy migration path from Substack to Ghost using this procedure.
  • Should I import my content? After a short test run using the 14-day evaluation period, it was clear that I had to.

How Ghost could be improved for me?

One of the Ghost editor’s most powerful and useful features is the ability to create and reuse content snippets. If you’ve ever used an email client with saved replies, this will be immediately intuitive.

  • Integration features and custom themes for the entry-level paid plan (access to the API admin token).
  • A customizable dashboard.
  • A native client on Mac or iPad.

Steps to move from Substack to Ghost

  1. I exported my data from Substack, which took less than 10 minutes to complete. Substack makes this super easy.

  2. Import my subscribers list into Ghost’s members list.

  3. Download Xcode from the Mac App Store and launch it for default configuration (required for the next step).

  4. Install Homebrew to be able to install NPM modules later (importing content into Ghost requires Node.js and NPM modules):

  5. Install Node.js and NPM:

  6. Follow this procedure to import articles into Ghost CMS. This is done via the command line.

    `migrate substack numericcitizen-export-2021-11-14-m9k19kr99s/posts.csv –readPosts numericcitizen-export-2021-11-14-m9k19kr99s/posts –url –useMetaImage –useMetaAuthor –drafts false

    `A lot of my decision to switch depended on the success of this step. If content was successfully imported without too much required tweaks, I would consider this a success and go with the next steps.

  7. Import the created zip file (the migrate command generated a 230 MB zip file ready to import). This file was then imported using this procedure.

  8. Configure site pages and tags Once the import is complete and without error.

  9. Review imported content and set tags according to each post’s content. That step was tedious but was mandatory to recreate the same content structure currently on my Substack website.

  10. Configure and write a contact page so that users can click from the bottom portion of my Ghost website to contact me.

  11. Connect my Ghost account to my Stripe account just in case, even though my newsletter is free—you never know!

  12. Configure Ulysses publishing options to publish content from within the application to Ghost. After all, this was one of the main reasons I switched from Substack to Ghost, right?

  13. Do a test run with a fake article and check RSS feed content generation.

  14. Configure the support and reply-to email addresses.

  15. Set up Plausible analytics and add it to my Ghost website using the customization feature in the header section.

  16. Update all my IFTTT automations for cross-posting to Twitter via Buffer when a newsletter issue comes out.

  17. For mid-tier paid plans only: Add Twitter Revue new sign-up to Ghost via Zapier (this requires the Admin API token, which is not available in the entry-level paid tier).

  18. For mid-tier paid plans only: Add Ghost cross-posting to Buffer via Zapier (this requires the Admin API token unavailable in the entry-level paid tier.)

It took me about a day of work to accomplish all this, from the trigger to the final announcement post on Substack. I’m super happy with the end results.