Migrating from WordPress to Substack: A Step-by-Step Guide
Migrating from WordPress to Substack is a common move for writers who want to simplify their publishing workflow. WordPress is powerful but complex — hosting, plugins, security updates, and performance optimization consume time that could be spent writing. Substack eliminates all of that.
But migration requires careful planning. You’re moving content, subscribers, and (ideally) preserving your search rankings. Here’s how to do it right.
Why Writers Migrate
Simplification
WordPress requires ongoing maintenance: hosting bills, plugin updates, security patches, performance optimization, and backup management. Substack handles all infrastructure, letting you focus entirely on writing.
Direct Audience Relationship
WordPress sites rely on SEO and social traffic for readers. Substack adds a direct email channel — subscribers receive your content without depending on Google or social media algorithms.
Built-In Monetization
Setting up paid subscriptions on WordPress requires plugins (MemberPress, Restrict Content Pro) and payment processors. Substack includes subscriptions natively — turn it on and set a price.
Community and Discovery
Substack’s recommendation network, Notes, and cross-promotion features provide audience growth tools that WordPress doesn’t offer.
What You Lose
Be honest about the trade-offs:
- Full design control: WordPress themes offer unlimited customization; Substack is constrained
- Plugin ecosystem: analytics, SEO, forms, e-commerce — WordPress has a plugin for everything
- SEO control: WordPress + Yoast gives you granular SEO management; Substack offers basics
- Content types: WordPress handles pages, portfolios, directories, and custom post types; Substack handles posts and pages
- Self-hosting: you own the server with WordPress; Substack is platform-dependent
If your WordPress site is more than a blog (e-commerce, portfolio, directory), you may want to keep WordPress for those functions and add Substack alongside it.
Pre-Migration Checklist
Before starting the migration:
- Export your WordPress content (Posts → Export → All Content)
- Export your email subscriber list (from your email plugin or service)
- Document your most-trafficked posts (Google Analytics or Search Console)
- Note any custom functionality you rely on (contact forms, embeds, etc.)
- Screenshot your current design for reference
- Back up your entire WordPress site
Step 1: Set Up Your Substack
Create your Substack publication with:
- Publication name and description matching your WordPress blog’s branding
- Logo and profile image transferred from WordPress
- Custom domain connected (ideally the same domain or a subdomain)
If you use the same custom domain, you can preserve SEO authority. Configure the domain in Substack’s settings before redirecting DNS.
Step 2: Import Your Content
Using Substack’s WordPress Importer
Substack has a built-in WordPress import tool:
- Go to your Substack dashboard → Settings → Import
- Upload your WordPress XML export file
- Substack will import your posts with basic formatting
What Transfers
- Post titles and content
- Publication dates
- Basic formatting (bold, italic, headings, links, images)
- Categories and tags (as Substack post sections)
What Doesn’t Transfer Cleanly
- Tables: WordPress table plugins use custom HTML that Substack strips. You’ll need to recreate tables as images.
- Custom shortcodes: any
[shortcode]content won’t render - Galleries: WordPress gallery layouts won’t transfer; images may import individually
- Embeds: some embedded content may need to be re-added using Substack’s embed feature
- Custom CSS: any styling applied through your theme or custom CSS is lost
- Comments: WordPress comments don’t migrate to Substack
Formatting Cleanup
After import, review each post. The most common issues:
- Broken table formatting (the most frequent problem)
- Missing images (if they were served from your WordPress server)
- Lost custom styling
- Shortcode remnants appearing as plain text
For content that needs reformatting, especially posts with tables and complex markdown, DownStack can help. If you have your original content in markdown format, DownStack converts it to Substack-ready rich text with tables automatically rendered as hosted images.
Step 3: Migrate Your Subscriber List
Export from WordPress
Export your email subscriber list from whatever service you used:
- Mailchimp: Audience → All Contacts → Export
- ConvertKit: Subscribers → Export
- MailerLite: Subscribers → Export
- WordPress plugin: depends on the plugin
Export as CSV with at least the email address column. Name fields are helpful but not required.
Import to Substack
- Go to Substack dashboard → Subscribers → Import
- Upload your CSV file
- Substack will add subscribers and send them a confirmation/welcome email
Important Considerations
- Re-opt-in: Substack may require imported subscribers to confirm their subscription, depending on your import method and Substack’s current policies
- Engagement drop: some imported subscribers won’t re-confirm, so expect your list to shrink
- Compliance: ensure your original list was collected with proper consent (GDPR, CAN-SPAM)
Step 4: Handle SEO and Redirects
This is the most technically important step. Poor redirect handling can destroy your search rankings.
Same Domain Migration
If you’re moving your custom domain to Substack:
- Update DNS to point to Substack (CNAME record)
- Substack will serve your publication at your domain
- URL structure will change: WordPress uses
/blog/post-slugwhile Substack uses/p/post-slug
Setting Up Redirects
You need 301 redirects from your old WordPress URLs to the new Substack URLs. Options:
- Cloudflare Page Rules or Redirect Rules: if your domain is on Cloudflare, set up redirect rules
- Server-side redirects: if you maintain the old server temporarily, add
.htaccessredirects - DNS-level redirects: some registrars offer URL forwarding
Map your most important URLs (check Google Search Console for top pages) to their Substack equivalents.
Preserving Search Rankings
- Submit your new sitemap to Google Search Console
- Keep your old site live with redirects for at least 6-12 months
- Monitor Search Console for crawl errors and fix them promptly
- Update internal links within your imported content to point to Substack URLs
Step 5: Update External References
After migration, update your Substack URL everywhere:
- Social media profiles (Twitter/X, LinkedIn, Instagram bios)
- Email signature
- Guest post author bios
- Directory listings and profiles
- Any links from other websites you control
Post-Migration Monitoring
First 30 Days
- Monitor email open rates (should stabilize within 2-3 issues)
- Check Google Search Console for indexing of new URLs
- Review imported posts for formatting issues
- Track subscriber engagement on the new platform
Ongoing
- Compare traffic levels to your WordPress baseline
- Monitor search rankings for your most important keywords
- Engage with the Substack community features you didn’t have on WordPress
- Consider archiving your WordPress site after 6-12 months of successful Substack operation
Key Takeaways
- Migration from WordPress to Substack simplifies publishing but sacrifices design control and plugin flexibility
- Export WordPress content via XML and use Substack’s built-in importer
- Tables, shortcodes, galleries, and custom styling won’t transfer — plan for manual cleanup
- Subscriber migration requires CSV export/import; expect some list shrinkage
- 301 redirects from old URLs to new URLs are critical for preserving search rankings
- Use the same custom domain on Substack to retain SEO authority
- Monitor search rankings and email engagement closely for the first 30 days
- Keep your WordPress site live with redirects for at least 6-12 months