Goal: bring your existing WordPress content across into VBWD, keep its URLs and SEO intact, and put the premium parts behind a subscription — turning a content site into a membership business without losing your search rankings on the way.

Who this is for (and when to stay on WordPress)

This is for a content site that wants to monetise by subscription — gated articles, a members' area, paid archives — and is tired of stitching a membership plugin onto WordPress and hoping it holds. If your site is a simple blog with no paywall ambitions, stay on WordPress; it's the right tool and there's no reason to move. The migration pays off when "gate this content by who paid" and "own the whole stack" become things you actually need, and the WordPress-plus-membership-plugin approach has started to feel fragile.

Prerequisites

Step 1 — Export from WordPress

In WordPress, produce a full export of posts, pages and their metadata. Grab the media too — you'll re-host images on VBWD rather than leaving them pointing at the old server, which would break the day you decommission WordPress. Note your current permalink structure now; you'll need it in Step 3 to preserve URLs.

Success looks like: you have the export file(s) and an inventory of your existing URLs and media.

Step 2 — Run wp-import

Run the wp-import against your export. The important property: it UPSERTs on type + slug — it matches content by type and slug and updates rather than duplicating. That means you can run the import more than once safely (fix a mapping, re-run, no doubled posts), which is exactly what you want during a migration you'll iterate on.

Gotcha: run it against a staging instance first, not production. Migrations are never clean on the first pass — a category that didn't map, a shortcode that didn't translate, an image path that broke — and you want to find those on staging where re-running is free.

Success looks like: your posts and pages appear in the CMS; a second run of the same import updates them in place rather than creating copies.

Step 3 — Map content types and preserve URLs

Map WordPress's model onto the CMS: posts become CMS posts, pages become CMS pages, and categories/tags become CMS terms. The critical discipline here is URL preservation. Every existing URL that changes is a broken link and a lost search ranking, so keep your slugs and permalink shape identical where you can, and where a URL genuinely must change, set up a redirect from the old path to the new one.

Carry the SEO metadata across too — titles, meta descriptions, and canonical intent. Losing your carefully-written meta descriptions in the move is a silent way to shed click-through you spent years earning.

Success looks like: your top existing URLs resolve to the migrated content (directly or via redirect), with their titles and meta descriptions intact.

Step 4 — Gate premium content by plan

Now the point of the exercise. Use the platform's access levels and subscription engine to gate the premium content: mark which posts/pages require a subscription, and the entitlement system shows them to paying members and withholds them from everyone else — automatically, and reversing the moment a subscription lapses.

Decide your paywall model deliberately, because it affects both revenue and SEO: hard paywall (non-members see nothing), metered (a few free reads then a wall), or teaser (an excerpt visible, the rest gated). A teaser/excerpt approach is usually the SEO-friendly choice — search engines and non-members see enough to index and to be enticed, while the full value sits behind the subscription. A hard wall protects content best but gives search engines the least to work with.

Success looks like: a logged-out visitor (or a lapsed member) sees the free portion or teaser of a premium post and is prompted to subscribe; a paying member sees the whole thing; cancelling a subscription re-gates it.

Step 5 — Wire the SEO renderer

Your content now lives in a Vue SPA, so a naive crawler gets an empty shell unless you serve it rendered HTML. Point the SEO renderer at the site so bots receive fully rendered pages (headless Chromium) while humans get the SPA. For gated content, make sure the renderer serves the public portion — the teaser or excerpt — to crawlers, not the full members-only text (you don't want your paywalled content indexed in full and readable from a search cache).

Verify with a bot user-agent:

curl -A "Mozilla/5.0 (compatible; Googlebot/2.1)" https://yoursite/your-post-slug | grep -i "<title>"

Success looks like: that returns the migrated post's real title and its public excerpt in the HTML — not an app shell, and not the full gated body.

Verification checklist

Limits & next steps

WordPress plugins don't come across. This migrates content, not your WordPress plugin ecosystem. Any functionality you relied on from a WP plugin has to be replaced by a VBWD plugin or rebuilt. Inventory what your site actually does before you migrate, not just what it contains.

URL preservation is the whole ballgame for SEO. Get the redirects wrong and you'll watch rankings you spent years building evaporate in a week. Test your top URLs specifically, and keep the old WordPress site up until you've confirmed the new one is indexed and serving.

A paywall changes your SEO surface. Gating content necessarily reduces what crawlers see. The teaser model mitigates it; a hard wall maximises protection at the cost of discoverability. Choose with your eyes open.

Next: set up your subscription plans and pricing, and add a members' dashboard so subscribers have a home — the migration gets the content in; the membership experience is what retains the subscribers you convert.

Takeaway

Turning a WordPress content site into a membership business usually means bolting a membership plugin onto WordPress and hoping. Migrating instead gives you a cleaner base: wp-import brings posts, pages and terms across with an idempotent UPSERT you can re-run safely, you preserve URLs and SEO so you keep your rankings, the access-level and subscription engine gates premium content by who paid, and the SEO renderer keeps the public portion indexable. The result is your content, migrated once and monetised behind subscriptions you own — not a paywall plugin fighting your CMS. Because it's self-hosted and source-available under BSL 1.1 (free for commercial use while annual VBWD-attributable sales stay under the value of 6.7 BTC per year), the content, the members, and the billing relationship are yours.

Moving off WordPress? See the docs for wp-import and content mapping, the features for subscriptions and access levels, and the architecture for how the SEO renderer serves gated content.