How to migrate a website to WordPress the safe way
Split the migration into three phases on different days, in a staging environment, with the live site untouched until cutover. Lose nothing, break nothing.
Read this first — what HTMLtoWP does in this migration. HTMLtoWP automates Phase 1 only: turning your existing site's design into a real WordPress theme. It does not auto-import every page of content from your old CMS — that's Phase 2, which uses platform-specific exporters. And it doesn't change your DNS — that's Phase 3. Knowing the split upfront makes the migration to WordPress feel small, because each phase is one focused job.
Migrate the design (your WordPress theme)
Your existing site has a design that you (or your visitors) like. The first task is recreating that design as a real WordPress theme — without a designer doing it from scratch.
Get the source HTML for the most representative page (usually the homepage) — from the live URL, your hosting, or your static site generator's output folder. Then convert it: paste the URL into HTMLtoWP and download a complete WordPress theme matching your design.
Full conversion walk-through: How to convert HTML/CSS to a WordPress theme. If your starting point is more specific:
- Canva → WordPress — site originally designed in Canva
- Figma → WordPress — site originally designed in Figma
- Static HTML site → WordPress — multi-page hand-coded or generated site
Migrate the content (pages and posts)
Theme handles the look. Content — every page, post, and product — needs to move separately. The right approach depends on where your content currently lives:
- WordPress.com or self-hosted WordPress — use the built-in Tools → Export XML and the destination's Tools → Import. Cleanest path: 90% works automatically.
- Wix, Squarespace, Weebly — each has an exporter (varying quality). For Squarespace, the WordPress XML export route works for blog posts. Pages usually need manual recreation.
- Webflow — Webflow's CMS export is JSON; use a plugin like WP All Import to map fields to WP custom post types.
- Static HTML site — for fewer than 20 pages, manual copy/paste into Pages is fastest. For more, use HTML Import 2 or WP All Import with a CSV.
- Custom CMS / database — export to CSV or XML, then WP All Import with field mapping.
Do this in a staging WordPress install, not your live site. Confirm each page renders correctly before moving on.
DNS, redirects, and going live
Theme works, content is in. Now point the world at the new site without losing search rankings or returning customers:
- Set up 301 redirects for every old URL → new URL.
/about.html→/about/,/blog/post-1.html→/blog/post-1/. The Redirection plugin handles this in WP admin. This preserves your SEO equity. - Update DNS to point to your new host. TTL changes can take 24–48 hours to propagate — schedule cutover for a low-traffic window.
- Test broken links with a free crawler (Screaming Frog free tier covers up to 500 URLs).
- Submit the new sitemap to Google Search Console and Bing Webmaster Tools.
- Watch 404s for the first week — anything Google reports, add a redirect for.
Where to bring in help
- Phase 1 (the design) — the part most people stall on. HTMLtoWP automates it, so you don't need a developer to recreate the theme. Working with a developer on the rest? They often run this step through HTMLtoWP themselves.
- Phase 2 (content) — mechanical but tedious for large sites. For hundreds of pages, third-party migration services or our Full Migration plan handle bulk imports. Reach out for a custom quote.
- Phase 3 (DNS) — the same regardless of platform. Your hosting provider's support can walk you through it.
For sites with custom plugins, integrations, or complex back-end work, a WordPress developer is still the right call for those pieces. The theme conversion just doesn't need to be one of them.
Phase 1 is where most migrations stall. Phases 2 and 3 are platform-specific work — Phase 1 is one upload.
Phase 1 of any migration to WordPress — the theme.
Convert your existing site's design into a real WordPress theme — in minutes, whether you're running the migration yourself or alongside a developer.
Try HTMLtoWP →