Een Ghost CMS naar WordPress migratie overweeg je meestal op één van drie momenten: je content-project groeit voorbij wat Ghost’s plugin-ecosysteem aankan, je wilt een webshop toevoegen (WooCommerce is er niet voor Ghost), of je nieuwsbrief-focus verschuift naar een breder inhouds-platform met SEO-tools zoals Rank Math of Yoast. Ghost is uitstekend gebouwd voor pure newsletter-en-blog sites, maar zodra je meer types content, membership-modellen of e-commerce erbij wilt, loop je tegen grenzen aan. In dit artikel loop ik de acht stappen door voor een schone Ghost naar WordPress migratie, inclusief de JSON-naar-WXR conversie en de members-lijst.
Reken op één tot drie werkdagen voor een Ghost-site met tot vijfhonderd posts en een member-lijst tot vijfduizend. Grote publisher-sites met tienduizenden posts en een betaalde subscription-basis lopen op tot een week, vooral door de Stripe-koppeling en de MemberPress-configuratie.

Wanneer een Ghost naar WordPress migratie logisch is
De sites die ik overzet komen meestal om vergelijkbare redenen. Ghost’s plugin-ecosysteem is bewust klein gehouden, wat het platform stabiel en snel maakt, maar tegelijk beperkend als je bijvoorbeeld een affiliate-plugin, een form-builder of een pop-up wilt. In WordPress heb je voor elk daarvan tien opties.
Ook e-commerce speelt vaak mee. Ghost heeft geen native shop-functionaliteit. Als je naast content ook producten of digitale downloads wilt verkopen, koppel je in Ghost met een externe tool en betaal je meerdere abonnementen. In WordPress voegt WooCommerce dat gratis toe aan dezelfde installatie.
Het derde argument is SEO. Ghost heeft basis-SEO netjes ingebakken, maar mist de granulariteit van Rank Math of Yoast: schema-typen, keyword-analyse per post, redirect-manager, XML-sitemap-configuratie. Voor sites die serieus met organisch verkeer willen groeien, is dat een hindernis.
Wat je opgeeft is Ghost’s compromisloze snelheid en het minimalistische publishing-experience. De WordPress-editor voelt anders. Kies je thema en plugin-set bewust licht, dan blijft de front-end vergelijkbaar snel. Verbeteren boven herbouwen: als je Ghost-site prima loopt en je hebt geen concrete plannen voor plugins of e-commerce, is een migratie soms overbodig.
Wat je uit Ghost kunt exporteren en wat niet
Ghost heeft twee exports die je apart draait: de content-export (JSON) en de members-export (CSV).
| Ghost feature | WordPress equivalent |
|---|---|
| Posts (JSON) | Posts (WXR na conversie) |
| Pages (JSON) | Pages (WXR na conversie) |
| Tags (JSON) | Tags |
| Authors (JSON) | Users (met author-mapping) |
| Images (Ghost content-folder) | Media library (via importer of losse upload) |
| Members (CSV) | MemberPress users of Newsletter Glue subscribers |
| Subscriptions (Stripe) | MemberPress + Stripe of Paid Memberships Pro |
| Newsletter list | Mailchimp, MailerLite of Kit (native WP-koppeling) |
| Ghost integrations | Overeenkomstige WordPress-plugin |
Posts, pagina’s, tags en afbeeldingen via JSON-export
In je Ghost admin ga je naar Settings → Advanced → Import/Export. Je downloadt een JSON-bestand met al je posts, pagina’s, tags en author-informatie. Afbeeldingen zitten niet in de JSON: die haal je apart op via de Ghost content-folder of via de losse image-URL’s in de posts.
Members, subscriptions en Stripe-koppelingen (aparte export)
In Settings > Members > Export exporteer je je members-lijst als CSV met naam, e-mailadres, status en signup-datum. Voor betaalde subscribers werk je in Stripe: die subscription-data blijft in Stripe staan en je koppelt straks WordPress’ MemberPress aan hetzelfde Stripe-account.
Van Ghost JSON naar WordPress WXR: twee routes
Ghost’s JSON en WordPress’ WXR (WordPress eXtended RSS) zijn verschillende formats. Je hebt een conversie nodig.
Route 1: online converter (wpghostimport.com)
De snelste route voor kleine tot middelgrote sites is de Ghost naar WordPress converter: je uploadt je Ghost JSON, de tool converteert naar WXR en je downloadt het resultaat. Voor sites tot ongeveer duizend posts werkt dit foutloos. Voor grotere archieven of gevoelige data die je liever niet naar een externe tool stuurt, is Route 2 beter.
Route 2: handmatige conversie via WP-CLI voor grote sites
Voor grote sites of situaties waarin de JSON custom velden bevat, gebruik ik een klein Node.js-script of een Python-script dat de nested JSON-structuur van Ghost (db/data/posts/0/title) flatten en converteert naar WXR. De WXR laad ik daarna via wp-cli:
wp import ghost-export.wxr --authors=createHet --authors=create argument zorgt dat Ghost-auteurs als WordPress-gebruikers worden aangemaakt.

Content-import via Tools > Import > WordPress
Met een WXR-bestand in handen ga je in WordPress naar Tools > Import > WordPress. Upload het WXR, mapp de auteurs en zet vinkje bij “Download and import file attachments” om de afbeeldingen mee te trekken uit je Ghost content-folder.
Voor Ghost-sites waar de afbeeldingen op een CDN staan (bijvoorbeeld Digital Ocean Spaces of AWS S3), moet je die apart downloaden en via FTP naar /wp-content/uploads/ uploaden. Gebruik daarna de Better Search Replace-plugin om de oude CDN-URL’s in de posts te vervangen door je nieuwe WordPress-mediapad.
Verifieer na de import op vijf willekeurige posts: titel, publicatiedatum, tags, afbeeldingen en de auteur moeten overeenkomen met wat je in Ghost had.
Members migreren naar WordPress
Voor Ghost’s members zijn er twee scenario’s: alleen gratis subscribers, of gratis plus betaalde subscribers.
MemberPress voor betaalde subscribers
Voor betaalde members installeer je MemberPress in WordPress. Je koppelt hetzelfde Stripe-account dat aan Ghost hing, en importeert de members-CSV via de MemberPress import-tool. Bestaande subscriptions blijven bij Stripe actief: je hoeft ze niet opnieuw op te zetten, alleen te koppelen aan de nieuwe MemberPress-abonnementsvormen.
Reken op twee tot vier uur voor de MemberPress-configuratie: abonnementsvormen aanmaken die de Ghost-tiers spiegelen (bijvoorbeeld Free, Monthly, Yearly), Stripe-webhooks koppelen, e-mail-templates aanpassen.
Voor sites met een membership-focus is er ook een uitgebreidere gids over hoe je een membership site opzetten in WordPress, met de plugin-vergelijking (MemberPress, Paid Memberships Pro, Restrict Content Pro).
Newsletter-lijst overzetten
Voor de gratis subscribers die in Ghost je newsletter kregen, exporteer je de members-CSV en importeer je die in Mailchimp, MailerLite of Kit. Al die drie hebben een native WordPress-koppeling voor het ophalen van nieuwe signups.
Communiceer richting je subscribers voor de wissel: één mail met een re-opt-in (GDPR-veilig, voorkomt spam-klachten) is de manier om te bevestigen dat ze het nieuwsbrief-abonnement willen voortzetten.

Newsletter-workflow opnieuw opbouwen in WordPress
Ghost stuurt newsletters vanuit dezelfde tool waar je publiceert. In WordPress werkt het anders: je kiest een externe nieuwsbrief-service (MailerLite, Kit, ActiveCampaign) en koppelt die aan WordPress via een plugin of via de post-to-newsletter automation.
Voor bloggers die de Ghost-workflow (“publiceer een post + verstuur direct als newsletter”) willen behouden, is Newsletter Glue de meest complete plugin. Voor grotere publishers is een aparte ESP zoals Kit of ActiveCampaign flexibeler, met eigen segmentatie en automation.
Test met een kleine segment (jijzelf en een paar test-adressen) voordat je de eerste échte newsletter naar de volledige lijst stuurt.
Thema kiezen dat Ghost’s minimalistische stijl benadert
Ghost-users die van de minimale, snelle look houden, pikken in WordPress meestal een van deze drie thema’s:
- Kadence. Licht, snel, met een uitgebreide gratis versie en veel typografie-controle.
- GeneratePress. Al jaren de gouden standaard voor snelheid en flexibiliteit.
- Blocksy. Modern, Gutenberg-native, met Ghost-achtige typografie out-of-the-box.
Vermijd zware page-builders zoals Divi of Avada als snelheid en leesbaarheid je prioriteit zijn.
Post-migratie: canonicals, redirects en Search Console
Ghost gebruikt standaard /post-slug/ als URL-structuur. WordPress kan dat exact spiegelen via Instellingen > Permalinks > Post name. Als je Ghost een custom URL-structuur gebruikte (bijvoorbeeld met een /blog/ prefix), stel je hetzelfde in WordPress in of zet je 301-redirects van de oude structuur naar de nieuwe.
Verifieer op vijf posts dat de canonical-tag (<link rel="canonical" ...="">) naar de nieuwe WordPress-URL wijst. Dien je sitemap.xml opnieuw in bij Google Search Console. Voor de generieke aanpak van deze fase zie de algemene WordPress migratie best practices gids.
Voor Ghost’s officiële migratie-documentatie kun je ook terecht bij de officiële Ghost migratie-docs van Ghost zelf. Die zijn kort maar geven een tweede referentie op de export-stappen.
Kosten en tijdsinvestering
Voor migraties reken ik 95 euro per uur. Realistische ranges voor een Ghost naar WordPress migratie:
- Kleine blog (tot 200 posts, alleen gratis members): 8 tot 12 uur, circa 760 tot 1.140 euro exclusief BTW.
- Middelgrote publisher (500 tot 1.500 posts, gemixte member-tiers): 20 tot 35 uur, circa 1.900 tot 3.330 euro exclusief BTW.
- Grote publisher (5.000+ posts, complexe subscriptions): 50 tot 90 uur, 4.750 tot 8.550 euro exclusief BTW.
Bij deze bedragen zit content-conversie, members-import, MemberPress-configuratie, thema-inrichting en de eerste week nazorg. Custom-thema-ontwikkeling of maatwerk-plugins reken ik apart.
Multi-stack: aanpak werkt breder
Dezelfde acht-stappen-flow werkt met kleine aanpassingen ook voor migraties vanuit Substack (via de Substack-export als CSV), Medium of een Drupal-blog. De importer-tools verschillen, maar de fases (export, converteer, importeer, members, newsletter, redirects, canonicals, monitoring) zijn universeel.
Hulp bij je Ghost-migratie?
De members-migratie is meestal het lastigste onderdeel. Wie de Stripe-koppeling verkeerd zet, kan bestaande subscriptions verliezen of dubbele charges veroorzaken. Direct contact met de persoon die het werk uitvoert, scheelt tijd bij elke escalatie op livegang-dag. Bel of app, ik zie hetzelfde scherm.



