
Open the visual model ↗
Inventory what the publication must preserve
A newsletter is more than an email column. Inventory subscribers, newsletter choices, consent evidence, unsubscribe and suppression state, paid subscriptions, tiers, complimentary access, tags, signup source, post archive, canonical URLs, media, redirects, templates, sending domains, automations, analytics definitions, and billing identifiers. Mark each item as exportable, reconstructable, or unavailable before choosing a cutover date.
Ghost's current export documentation, for example, describes separate exports for content and members, including email-subscription and complimentary-plan fields in the member file. Its import documentation requires email and accepts fields such as subscription preference, labels, tiers, and an existing Stripe customer identifier. These specific capabilities show why field-level inspection matters; they do not establish portability between every pair of platforms.
Source notes: Exporting content and data · Import members
Treat suppression and entitlement as controlled state
Do not import one flat list of addresses. Preserve subscribed, unsubscribed, bounced or disabled, complained, and unknown states separately. A missing suppression export is a blocker, not permission to mail the address. Preserve newsletter-level preferences rather than converting every subscriber into every topic. Keep evidence and dates needed to explain how a person reached the destination state.
Build a separate entitlement crosswalk for free access, paid tier, billing interval, renewal state, complimentary access, and expiration. Ghost's member-management documentation distinguishes newsletter status from membership and notes that an unsubscribe link changes email status without necessarily removing site access. The destination must reproduce that separation before any paid reader is moved.
Source notes: Member management · Import members
Pilot with internal records and a small consented cohort
First import internal test accounts representing every state: free subscribed, free unsubscribed, paid monthly, paid annual, complimentary, expired, failed payment, multiple-newsletter preferences, and suppressed. Test login, access, renewal linkage, downgrade, unsubscribe, reply handling, mobile rendering, links, redirects, and archive visibility. Reconcile record counts and exceptions rather than accepting a successful import banner as proof.
Then move a small, identifiable cohort whose permission and entitlement are clear. Send from the intended identity only after authentication and routing tests. Compare delivered, bounced, complained, clicked, unsubscribed, login, and paid-access results under the same definitions. The pilot should be large enough to reveal state problems but bounded enough to repair manually.
| Object | Source count | Destination check | Rollback asset |
|---|---|---|---|
| Subscribed readers | By newsletter | Preference preserved | Frozen source export |
| Suppressed readers | By reason | No send eligibility | Suppression file |
| Paid entitlements | By tier and interval | Access and renewal linked | Entitlement crosswalk |
| Post archive | By status and URL | Body, media, date, canonical path | Static archive plus redirect map |
| Automations | By trigger | Disabled until individually tested | Source configuration record |
Move the archive as a publishing system
Export posts, pages, status, authorship, tags, dates, canonical URLs, email-only content, paid-access rules, media references, and redirects. Render samples from short, long, image-heavy, table, and gated posts. Confirm that email-only posts are not accidentally made public and that a web archive does not lose access restrictions.
Keep an immutable source export and a URL manifest. Redirect only after the destination path is verified. Sample old inbound links, feeds, sitemaps, and shared newsletter URLs. A migration can deliver new email correctly while quietly destroying the archive that supports discovery and member value.
Source notes: Exporting content and data
Define rollback before cutover
Choose a freeze window and one system of record for each object. During cutover, prevent parallel signup or preference changes from splitting state. Keep the old sending system unable to launch routine campaigns but available for verified rollback. Record the last synchronized event and every manual exception.
Rollback triggers include missing suppressions, incorrect paid access, unexplained count gaps, broken authentication, or a sending-identity failure. Rolling back means restoring the named source-of-truth snapshot and pausing destination sends; it does not mean sending from both systems. Retire the old platform only after at least one full publishing and billing cycle reconciles.
- Export and hash the source inventory before transformation.
- Test every consent and entitlement state with representative accounts.
- Keep post URLs, access rules, and media in the archive acceptance test.
- Name the rollback owner, trigger, snapshot, and communication path.
Continue the work
Sources & limits
Ghost documentation supplies a concrete source/destination example, not a claim of universal portability. Consent, suppression, billing, and data-retention requirements need platform- and jurisdiction-specific review.
- Exporting content and data
Primary source · Publication date not stated · Primary source checked · 19 September 2026 - Import members
Primary source · Publication date not stated · Primary source checked · 19 September 2026 - Member management
Primary source · Publication date not stated · Primary source checked · 19 September 2026
Source claims and editorial judgments remain separate. Send a correction with the passage and supporting evidence.

