WordPress powers roughly 43% of all websites, but its aging PHP architecture, plugin security crisis (11,300+ new vulnerabilities in 2025), and server-dependent hosting model are pushing teams to look for modern alternatives. Cloudflare's EmDash is the most compelling option to emerge in years: TypeScript-native, serverless, sandboxed plugins, and MIT-licensed.
But migrating a production WordPress site isn't trivial. You need to move content, preserve URLs for SEO, handle custom post types, migrate media, and rebuild theme functionality. This guide walks through every step of the process with practical examples and gotchas we've encountered in real migrations.
Whether you're running a personal blog or a multi-author publication, this step-by-step guide will get you from WordPress to EmDash without losing content, rankings, or your sanity.
π Table of Contents
- 1.Pre-Migration Audit & Planning
- 2.Method 1: WXR File Export
- 3.Method 2: EmDash Exporter Plugin
- 4.Migrating Custom Post Types & ACF Fields
- 5.Media Library Migration
- 6.URL Structure & SEO Preservation
- 7.Rebuilding Theme Functionality in Astro
- 8.Plugin Replacement Strategy
- 9.DNS Cutover & Go-Live Checklist
- 10.Post-Migration Verification
- 11.Common Migration Pitfalls
- 12.How Lushbinary Handles WordPress-to-EmDash Migrations
1Pre-Migration Audit & Planning
Before touching any export buttons, audit your WordPress site to understand the scope of the migration:
- Content inventory: Count posts, pages, custom post types, and media files. Use
wp post list --post_type=any --format=countvia WP-CLI. - Plugin audit: List all active plugins and categorize them as content-affecting (ACF, Yoast SEO), functional (WooCommerce, contact forms), or cosmetic (sliders, galleries). Content-affecting plugins need the most migration planning.
- URL structure: Document your permalink structure. EmDash uses Astro file-based routing, so you'll need to match your existing URL patterns.
- Custom fields: If you use ACF or custom meta fields, map each field to an EmDash schema field type.
- Media dependencies: Check for hotlinked images, CDN configurations, and any media processing plugins.
β οΈ Important
EmDash is v0.1.0 preview. For production sites with high traffic, consider running EmDash in parallel with your WordPress site during a testing period before cutting over.
2Method 1: WXR File Export
The simplest migration path uses WordPress's built-in export format:
- In WordPress admin, go to Tools β Export
- Select "All content" to export posts, pages, comments, custom fields, categories, tags, and navigation menus
- Download the WXR (WordPress eXtended RSS) XML file
- In your EmDash project, run the import command with the WXR file path
# Export from WordPress (via WP-CLI) wp export --dir=/tmp/exports # Import into EmDash emdash import wordpress /tmp/exports/site.xml
The WXR import automatically maps WordPress posts and pages to EmDash content collections and pulls attached media into EmDash's media library.
3Method 2: EmDash Exporter Plugin
For larger sites or sites you want to migrate incrementally, the EmDash Exporter plugin is the better option:
- Install the EmDash Exporter plugin on your WordPress site
- Generate a WordPress Application Password for secure API access
- The plugin creates a secure endpoint that only your EmDash instance can access
- Point your EmDash instance at the endpoint and it pulls content directly
This method is faster for large sites because it streams content directly rather than going through an intermediate file. It also handles incremental syncing, so you can run it multiple times during a migration window.
4Migrating Custom Post Types & ACF Fields
WordPress custom post types (CPTs) and Advanced Custom Fields (ACF) require manual schema mapping in EmDash. For each CPT:
- Create a matching EmDash schema in the admin panel with the same fields
- Map ACF field types to EmDash field types (text β text, image β media, repeater β array)
- Run the import with the
--map-typesflag to route CPTs to the correct EmDash collections
// Example: seed.json schema for a WordPress "portfolio" CPT
{
"collections": {
"portfolio": {
"fields": {
"title": { "type": "text", "required": true },
"client_name": { "type": "text" },
"project_url": { "type": "url" },
"gallery": { "type": "media", "multiple": true },
"technologies": { "type": "tags" },
"featured": { "type": "boolean" }
}
}
}
}5Media Library Migration
Both migration methods automatically import attached media (images, PDFs, videos) into EmDash's media library. However, there are edge cases to watch for:
- Hotlinked images: Images referenced by URL but not in the WordPress media library won't be imported. Run a scan for external image URLs before migrating.
- Image sizes: WordPress generates multiple thumbnail sizes per image. EmDash handles responsive images differently through Astro's image optimization. You only need the original files.
- CDN references: If your WordPress site uses a CDN plugin that rewrites image URLs, you may need to revert URLs to local paths before export.
6URL Structure & SEO Preservation
Preserving your URL structure is critical for maintaining SEO rankings. EmDash uses Astro's file-based routing, so you need to create page files that match your WordPress permalink structure:
# WordPress permalink: /%postname%/ # EmDash Astro route: src/pages/[slug].astro # WordPress permalink: /%category%/%postname%/ # EmDash Astro route: src/pages/[category]/[slug].astro # WordPress permalink: /blog/%postname%/ # EmDash Astro route: src/pages/blog/[slug].astro
For any URLs that change, set up 301 redirects. On Cloudflare, you can use Page Rules or Bulk Redirects. For self-hosted deployments, configure redirects in your web server or use Astro's redirect configuration.
Don't forget to migrate your XML sitemap, update Google Search Console with the new sitemap URL, and submit a change of address if your domain changes.
7Rebuilding Theme Functionality in Astro
WordPress themes can't be directly ported to EmDash. You'll need to rebuild your theme as an Astro project. The good news: EmDash includes a Block Kit Agent Skill that lets you instruct an AI agent to convert WordPress theme components to Astro.
Key mapping from WordPress to EmDash/Astro:
| WordPress | EmDash / Astro |
|---|---|
| header.php / footer.php | Astro layouts (src/layouts/) |
| template-parts/ | Astro components (src/components/) |
| single.php | src/pages/[slug].astro |
| archive.php | src/pages/blog/index.astro |
| functions.php | Not needed (no server-side theme logic) |
| style.css | Tailwind CSS or global styles |
| the_loop() | Astro content collections API |
| wp_query | emdash:content getCollection() |
8Plugin Replacement Strategy
Most WordPress plugins fall into categories with EmDash equivalents or alternatives:
Yoast SEO
β Astro SEO component + EmDash meta fields
Contact Form 7
β Astro form component + EmDash plugin
WP Super Cache
β Not needed (Astro is static by default)
Wordfence
β Not needed (sandboxed plugins + passkeys)
ACF
β Native EmDash schemas
WooCommerce
β MedusaJS or custom EmDash collections
Elementor
β Astro components + Tailwind
Google Analytics
β Astro integration or EmDash plugin
9DNS Cutover & Go-Live Checklist
- Run a final content sync from WordPress to EmDash
- Verify all pages render correctly on the EmDash staging URL
- Test all forms, interactive components, and third-party integrations
- Set up 301 redirects for any changed URLs
- Update DNS records to point to Cloudflare (or your Node.js server)
- Submit updated sitemap to Google Search Console
- Monitor 404 errors for the first 48 hours and add redirects as needed
- Keep WordPress running in read-only mode for 30 days as a fallback
10Post-Migration Verification
After going live, verify these critical items:
- Content parity: Spot-check 10-20 pages across different content types
- Image rendering: Verify all images load correctly and responsive sizes work
- Core Web Vitals: Run Lighthouse on key pages β Astro typically scores 95+ on performance
- Search Console: Monitor for crawl errors and indexing issues over the first week
- Analytics continuity: Confirm tracking codes are firing on all pages
11Common Migration Pitfalls
- Shortcodes: WordPress shortcodes like
[gallery]or[contact-form]won't render in EmDash. Search your content for shortcode patterns and replace them with Astro components before or during migration. - Hardcoded URLs: Content with hardcoded
https://yoursite.com/wp-content/uploads/paths needs URL rewriting. - Database-dependent plugins: Plugins that store data in custom WordPress tables (e.g., WooCommerce orders) need separate data migration strategies.
- PHP-generated content: Any content generated dynamically by PHP (e.g., calculated fields, dynamic sidebars) needs to be rebuilt as Astro components or EmDash plugins.
- Comments: If you use WordPress comments, plan for a migration to a third-party system like Disqus or a custom EmDash plugin.
12How Lushbinary Handles WordPress-to-EmDash Migrations
At Lushbinary, we've been building on modern CMS platforms and serverless architectures for years. Our WordPress-to-EmDash migration service covers the full lifecycle:
- Pre-migration audit with content inventory and plugin dependency mapping
- Custom schema design for complex content types
- Astro theme development matching your existing brand and design
- SEO preservation with redirect mapping and Search Console monitoring
- Deployment on Cloudflare Workers or AWS infrastructure
- 30-day post-migration support with monitoring and issue resolution
π Free Migration Assessment
Send us your WordPress site URL and we'll provide a free migration complexity assessment with timeline and cost estimate. No commitment required.
β Frequently Asked Questions
How long does it take to migrate WordPress to EmDash?
A typical blog or content site can be migrated in under 30 minutes using the WXR export method. Larger sites with custom post types and extensive media libraries may take a few hours including schema mapping and verification.
Will my WordPress SEO rankings be affected by migrating to EmDash?
If you maintain the same URL structure and set up proper 301 redirects, your SEO rankings should be preserved. EmDash's Astro-powered frontend typically improves Core Web Vitals scores, which can positively impact rankings.
Can I migrate WordPress plugins to EmDash?
WordPress plugins cannot be directly ported due to the different architecture. However, EmDash's AI Agent Skills can help rebuild plugin functionality as sandboxed EmDash plugins. Common functionality like contact forms, SEO, and analytics have EmDash equivalents.
Does EmDash support WooCommerce migration?
EmDash v0.1.0 focuses on content management. E-commerce functionality like WooCommerce is not yet supported natively, but custom schemas can model product data. For e-commerce, consider MedusaJS as a headless alternative.
π Sources
Content was rephrased for compliance with licensing restrictions. Technical details sourced from official Cloudflare documentation as of April 2026. Features may change β always verify on the official EmDash documentation.
Need Help Migrating to EmDash?
Our team handles the full migration β content, themes, SEO, and deployment. Get a free assessment today.
Build Smarter, Launch Faster.
Book a free strategy call and explore how LushBinary can turn your vision into reality.
