You know the basics: export a WXR file from WordPress, upload it to EmDash, and your content lands in a new CMS. That part works. The tricky part — the part that will break your site if you ignore it — lives in what the import doesn’t touch.
You can transfer content from WordPress to EmDash CMS by either uploading a standard WXR export file or by installing the dedicated EmDash export plugin to automate the process. The tool imports posts, pages, media, and custom post types, and it maps Yoast SEO fields directly to EmDash’s built-in SEO controls. Themes, plugins, and WooCommerce data are not migrated — those require separate porting.
The import tool is a content bridge, not a site replica.
Three Migration Paths — and When Each One Bites You
Each method looks simple on paper. The tradeoffs only surface when you hit production data.
| Method | Setup Effort | Data Fidelity | Best For |
|---|---|---|---|
| WXR file upload | Low — export from WordPress, upload to EmDash. No plugin needed. | Good for basic posts, pages, media, and Yoast SEO. Custom post types require manual mapping. | Small blogs or sites with standard content types. |
| EmDash export plugin | Medium — install plugin on WordPress site, connect via API key. | Preserves custom post types and their fields. Also imports from WordPress.com sites. | Sites with multiple content types or complex taxonomies. |
| Direct API (WordPress.com) | Low — authenticate with WordPress.com account. | Pulls content from WordPress.com-hosted sites only. Same data fidelity as the plugin method. | Sites already on WordPress.com’s infrastructure. |
The plugin method is the most reliable for complex sites. It reads your custom post types directly from the database rather than relying on the WXR format, which can truncate or flatten nested field data.
The Hidden Gotchas That Most Tutorials Skip
Content structure mismatch. WordPress stores content as HTML strings inside the database. EmDash uses portable text — structured JSON that separates content from presentation. The import tool converts on the fly, but if your WordPress content uses custom blocks (Gutenberg or third-party), those blocks may not survive the conversion. You’ll end up with raw HTML inside a portable text field, which works but loses the structured editing experience.
WooCommerce is a hard stop. The import tool ignores WooCommerce products, orders, and customer data entirely. If your site runs a store, you cannot migrate it without rebuilding the product catalog from scratch in EmDash. The same applies to any plugin that stores data outside the standard WordPress tables — membership systems, learning management platforms, or booking plugins.
User roles are not transferred. EmDash ships with its own role-based access control: administrator, editor, author, contributor. The import creates no users. After migration, you must manually invite every user and assign roles. Passkeys replace passwords, so you’ll also need to set up WebAuthn credentials for each account.
File paths change. WordPress stores media in /wp-content/uploads/year/month/filename.jpgcodecodecode. EmDash stores media in R2 (or local storage, depending on your deployment) with a hash-based locator. The import re-writes media URLs in your content, but any hardcoded references in theme files, custom CSS, or external systems will break.
SEO data from plugins besides Yoast is lost. Only Yoast fields are mapped to EmDash’s built-in SEO controls. If your site uses Rank Math, All in One SEO, SEOPress, or any other plugin, those meta fields are ignored. You’ll need to re-enter title tags, meta descriptions, and open graph data manually.
Step-by-Step: The Right Way to Run an Import
- Export from WordPress. Go to Tools → Export in your WordPress admin. Choose “All content” to include posts, pages, media, and custom post types. Download the WXR file. If you’re using the EmDash export plugin, install it on your WordPress site first and generate an API key from your EmDash admin under Settings → API tokens.
- Choose your import method inside EmDash. Navigate to Admin → Import. You’ll see three options: upload a WXR file, link your WordPress site via the plugin, or authenticate with WordPress.com. The plugin method is fastest for sites with many custom post types because it avoids the WXR format’s limitations.
- Run the import. For the plugin method, enter your WordPress site URL and the API key. EmDash will scan your site, show a content summary (number of posts, pages, media items), and begin the transfer. For the WXR method, upload the file and wait for processing. Large exports (over 50 MB) may time out; split them into smaller batches if needed.
- Verify and fix. Check a handful of posts for formatting issues. Look for broken media links — the import rewrites URLs, but images inside custom HTML blocks may still point to the old WordPress domain. Re-save any post that appears broken to trigger a new URL rewrite. Rebuild your navigation menus manually: the import does not carry over menu structures.
The One Thing That Changes Everything
The import tool is a content bridge, not a site replica. You get your words, images, and metadata. Everything else — the design, the functionality, the third-party integrations — you rebuild. That’s not a limitation. It’s an opportunity to drop the accumulated technical debt of a decade-old WordPress install.
Start with content. Then use an AI coding agent, pointed at EmDash’s built-in MCP server, to port your theme to Astro components. The agent can read your old theme’s functions.phpcodecodecode and generate new plugins with sandboxed permissions. Your WooCommerce store stays behind for now. But by the time you need it, the ecosystem may have caught up — or you’ll have built your own.
- What are the three migration paths from WordPress to EmDash CMS?The three methods are WXR file upload, EmDash export plugin, and direct API for WordPress.com sites.
- What data is not migrated during the import?Themes, plugins, WooCommerce data, user roles, and navigation menus are not transferred.