How do I move my Substack to VeloCMS?
Download your Substack tarball, import posts, migrate your subscriber CSV, reconnect paid subscribers to Stripe, and keep your RSS feed uninterrupted.
Substack made it easy to start a newsletter. But at some point — maybe you hit the payment fee ceiling, maybe you want custom design, maybe you just want a real website alongside your newsletter — you need to move. Substack lets you export your data, and VeloCMS can import it. Here's exactly how.
Step 1 — Export from Substack
Go to your Substack dashboard, click your publication name in the top-left, then Settings → Export data. Substack emails you a download link within a few minutes. The tarball (yourpublication_export.zip) contains: posts as HTML files in a posts/ folder, a subscribers CSV (subscribers.csv), a metadata JSON with post dates and slugs, and a paid_subscribers.csv if you have Substack paid subscribers.
Substack export does not include post images as separate files — images are still hosted on Substack's CDN and referenced by URL in the HTML. They'll keep loading as long as your old Substack publication is live. Plan to re-upload images to VeloCMS R2 before you delete your Substack publication.
Step 2 — Import posts into VeloCMS
In VeloCMS admin, go to Admin → Tools → Import → Substack. Upload the .zip file directly. VeloCMS reads the metadata JSON to get slugs and publish dates, then imports each HTML post into the editor. Formatting is preserved reasonably well — headers, bold, links, and images (as URL references) all come through. Substack footnotes and custom embeds (Spotify, Twitter cards) may not render and need manual cleanup.
Step 3 — Import free subscribers
The subscribers.csv from Substack has at minimum: email, first_name, last_name, and created_at. In VeloCMS admin, go to Admin → Members → Import CSV. Map columns to VeloCMS fields. Free subscriber status carries over for everyone in this CSV who isn't in paid_subscribers.csv. Substack's 'comp' subscribers (free access to paid tiers) can be imported as free members — there's no direct equivalent in VeloCMS unless you manually flag them.
Step 4 — Handle paid subscribers
Paid Substack subscribers are managed through Stripe, but through Substack's Stripe account — NOT yours. This is the part everyone stumbles on: you can't just port their subscriptions over because you were never the merchant. What you can do: export paid_subscribers.csv from Substack, import them into VeloCMS as members with a 'paid' flag manually set, and email them asking to resubscribe at your new VeloCMS membership page. Substack allows you to email subscribers with an off-platform migration notice.
You cannot silently migrate paid Substack subscribers' billing to a different Stripe account. They agreed to pay Substack, not your direct Stripe. Send a transparent migration email. Many paid subscribers will follow you — especially if you offer them a short free period as appreciation.
Step 5 — Set up your VeloCMS Stripe BYOK
Go to Admin → Settings → Membership → Connect Stripe and paste your own Stripe secret key (not Substack's). Set up your paid membership tiers: monthly and annual prices. Share the link to your new /member/subscribe page with your migrated audience. VeloCMS automatically handles checkout, receipt emails, and member portal access.
Step 6 — Maintain RSS continuity
Substack's RSS feed lives at yourpublication.substack.com/feed. VeloCMS generates its own RSS at yourdomain.com/feed.xml. If you had readers using RSS readers or podcast apps pointed at your Substack RSS URL, they'll get a broken feed after migration. To maintain continuity: add a Cloudflare redirect rule that points substack.com/feed requests to your new domain's feed. Alternatively, post one final Substack issue pointing readers to your new feed URL.
# Your new VeloCMS RSS feed URL
https://yourdomain.com/feed.xml
# If you keep your Substack account live temporarily,
# add a redirect post with the new feed URL for RSS subscribersStep 7 — Notify subscribers via email
Before you cut over DNS, send a migration announcement email through Substack — yes, use Substack's own email tool for this last message. Explain where you're moving, why, and what readers need to do (usually: just keep reading, nothing changes for free subscribers; paid subscribers need to resubscribe). Include your new domain, your new RSS URL, and a direct link to your VeloCMS membership subscribe page.
Frequently asked questions
- Can I keep my Substack active during migration? Yes — run both simultaneously. New issues can be cross-posted manually while you transition.
- Will my Substack SEO rankings transfer? Not automatically. You'll need 301 redirects from your old Substack URLs to your new domain.
- Does VeloCMS have a Substack-style paywall pop-up? VeloCMS shows a member paywall on premium posts — similar experience, fully customisable.
- How do I handle Substack's recommendation network? VeloCMS doesn't have a native recommendation network; that feature stays Substack-specific.
- What about Substack Notes? Notes are separate from posts and aren't exported — treat them as social content you leave behind.