Migration playbook · Websites

How to migrate from Wix or Squarespace to WordPress

Neither Wix nor Squarespace hands you a complete copy of your site. This guide shows what you can export from each, how to load it into WordPress, and how to keep your search rankings with a full redirect map.

Updated 4 Nov 20267 phases37 detailed steps12 official sources
Start here

Your migration plan

This moves a website from Wix or Squarespace to WordPress on your own hosting. Neither platform hands over a complete copy: Squarespace exports part of the site in a WordPress format, and Wix exports only data such as products and contacts. So the move is part import, part rebuild, finished with 301 redirects (permanent redirects) that protect your search rankings. The rebuild sets the timeline, and on Wix copying older blog posts by hand is often the longest part.

Recommended routeExport what the platform allows, import it into WordPress, rebuild the rest

Uses the Squarespace WordPress export or the Wix data exports where they exist, then a theme for the design and a full redirect map for search.

Other options and when to use them
  • Manual rebuild from scratch: A small brochure site, or one being redesigned anyway. Often quicker than cleaning up an import.
  • Third-party migration service for the blog: A Wix blog with many more than 20 posts that you do not want to copy by hand.
Order to migrate in, and why

Take stock and save everything while the old site is still live, build WordPress privately, set up redirects, and switch the domain last. Cancel the old plan only after every check passes, because until then going back is a DNS change.

  1. Inventory of URLs, media, platform features and DNS recordsThe redirect map, the rebuild list and the email records you must not break all come from it.
  2. Content freeze, then the exportsAnything published on the old site after the export is missing from the new one.
  3. WordPress on a staging address, with permalinks setPermalinks (the URL pattern for posts) must be set before importing, so posts get the addresses you planned.
  4. Import posts and media while the old site is still liveImages can only be downloaded from the old platform while it still serves them.
  5. Rebuild pages, design and features such as forms, store and bookingsThese do not export, and the plugins you choose decide how existing products, members or bookings move.
  6. Redirect map and rules, tested on stagingEvery old URL must already lead somewhere on the day the domain switches.
  7. DNS switch (A and www records only), certificate, search engines allowedDone last so visitors only ever see the finished site. Leaving MX records alone keeps email working.
  8. Search Console, 404 monitoring, then the old plan cancelledCancelling removes the old design and any images WordPress only linked to, and cannot be undone.
Settings checklist: decide these before you copy

Built-in and third-party tools treat these differently. Tick each one off once you have decided.

Download this checklist (Excel)
  • How each tool handles it
    Built-in methodSquarespace WordPress export: layout pages, gallery pages, one blog page with its posts, and text and image blocks. Album, cover, index, info, calendar, portfolio and store pages, page-specific headers, footers and sidebars, audio, video and product blocks, and drafts do not export. Wix: no export of pages or design at all, only data exports such as products, contacts and CMS collections.

    Tip: Mark each URL in your inventory Import, Rebuild or Redirect before you start.

    Squarespace Help: Exporting your site
  • How each tool handles it
    Built-in methodSquarespace: only one blog page exports, with its posts and up to 1,000 comments per post, so you choose a primary blog. Wix: no blog export. The blog RSS feed shows at most 20 posts.

    Tip: On Squarespace, merge extra blog pages into one before exporting. On Wix, list older posts with their publish dates and decide which are worth copying.

    Wix Help: Displaying more than 20 blog posts in an RSS feed
  • How each tool handles it
    Built-in methodSquarespace WordPress export: whether post authors, dates, tags, categories, and SEO titles and descriptions come across: not stated in Squarespace's documentation: test it in your pilot. Wix: copy the publish date by hand for each post you rebuild.

    Tip: Import into staging, then compare five posts field by field with the live site.

    Squarespace Help: Exporting your site
  • How each tool handles it
    Built-in methodSquarespace export into self-hosted WordPress: images may not be copied. WordPress may only link to them on Squarespace, and those links stop working when you cancel. Linked PDFs are in the file but cannot be imported. Audio and video blocks do not export.
    WP-CLI media importDownloads each image from its URL into the Media Library.
    WP-CLI search-replaceSwaps old image URLs for the new ones across the database, with a --dry-run report first.

    Tip: Import while the old site is live with Download and import file attachments ticked, then compare the Media Library count with your inventory.

    Squarespace Help: Exporting your site
  • How each tool handles it
    Built-in methodWix: the product export holds up to 5,000 rows per file, and digital products cannot be exported. Squarespace: products export to a separate CSV file, and store pages are not in the WordPress export.

    Tip: Choose the store plugin before you export, so you can match its CSV columns, and set up digital products again by hand.

    Wix Help: Exporting your product list
  • How each tool handles it
    Built-in methodWix: the site owner exports contacts as CSV, 50,000 at a time.

    Tip: Import only subscribed contacts, and keep the original export as your consent record. In Australia, the Spam Act 2003 requires consent for marketing email.

    Wix Help: Exporting your contacts
  • How each tool handles it
    Built-in methodBoth platforms: these features run on the platform. Each has its own export or none. The Squarespace WordPress export leaves out calendar pages.

    Tip: Check each feature's export in the platform's help centre during the inventory, not after the build.

    Wix Help: Exporting or embedding your Wix site elsewhere
  • How each tool handles it
    Built-in methodNeither platform exports the design. Squarespace style settings and custom CSS do not export.

    Tip: Match the layout, fonts and colours rather than every pixel, and test on a phone.

    Squarespace Help: Exporting your site
  • How each tool handles it
    Built-in methodWordPress: set permalinks before importing. Every page or post whose path changes needs its own redirect.
    RedirectionFree WordPress plugin that imports redirects from CSV and logs 404 errors after launch.

    Tip: Copy the old blog's URL pattern where you can, so fewer redirects are needed.

  • How each tool handles it
    Built-in methodWordPress: has no built-in redirect manager. Google: redirect each old URL to its matching page with a permanent server-side redirect, straight to the final page with no chains, and keep redirects for at least a year.
    RedirectionImports the redirect map from CSV and logs 404 errors after launch.
    Screaming Frog SEO SpiderList mode follows each old URL to its final address and reports hops and errors.

    Tip: Never send a group of old URLs to the home page. Test every redirect in the map, not a sample.

    Google Search Central: Site moves with URL changes
  • How each tool handles it
    Built-in methodSquarespace: the site must be published with availability set to Public, and trial sites cannot export. An expired site may need its subscription reactivated, and its content may already be deleted. On both platforms, anything published after the export is missing.

    Tip: Export after the freeze starts, and keep a short list of urgent changes to repeat on WordPress.

    Squarespace Help: Exporting your site
  • How each tool handles it
    Built-in methodSquarespace: blocks DNS changes while a domain transfer is pending. Wix: after a domain transfer away from Wix, re-add the MX records (the records that deliver your email).

    Tip: Keep the domain where it is for launch and change only the A and www records. Transfer the domain later, on another day.

    Squarespace Help: Transferring a domain away from Squarespace
  • How each tool handles it
    Built-in methodWix and Squarespace: hosting, security updates, backups and SSL were handled by the platform. On WordPress they are your job or your host's.

    Tip: Choose a host with automatic backups and free certificates, schedule updates, and keep your own off-site backup.

The plan, phase by phase
  1. 1

    Take stock

    Before you export anything

    Watch out: Bookings, events, forms, members areas and stores each have their own export, or none.

    Ways around it

    • Check each app's export in the help centre, pick its WordPress plugin before you build, and plan how existing members or bookings move.

    Watch out: Anything published on the old site after the export is missing from the new one.

    Ways around it

    • Export after the freeze starts, and keep a short list of urgent changes to repeat on WordPress.

    Check your DNS records before and after the change

    Show the detailed steps (4) →
  2. 2

    Export your content

    Watch out: Wix has no export of pages or design, and its blog feed shows at most 20 posts.

    Ways around it

    • Copy older posts by hand, or use a third-party migration service.
    • Redirect low-value old posts to a related page instead of rebuilding them.

    Watch out: The Squarespace export leaves out store, portfolio, index and several other page types, audio and video, and all but one blog page. Trial sites cannot export.

    Ways around it

    • Rebuild those pages by hand, re-upload media, and copy or merge posts from extra blog pages before exporting.

    Watch out: Wix product files hold up to 5,000 rows, digital products cannot be exported, and contacts export 50,000 at a time.

    Ways around it

    • Run several exports for large lists, and set up digital products again by hand.
    Show the detailed steps (4) →
  3. 3

    Set up and import

    Watch out: Importing the Squarespace file into self-hosted WordPress may only link to images on Squarespace, and those links break when you cancel the site.

    Ways around it

    • Import while the old site is live with Download and import file attachments ticked, then compare the Media Library count with your inventory.

    Tools that can do it

    Watch out: Importing every contact into a mailing list without a record of consent can breach privacy and spam laws (in Australia, the Spam Act 2003).

    Ways around it

    • Import only subscribed contacts, and keep the original export as your consent record.

    Watch out: Hosting, security updates, backups and SSL, which the platform handled, become your job or your host's.

    Ways around it

    • Choose a host with automatic backups and SSL, schedule updates, and set up your own off-site backup.
    Show the detailed steps (5) →
  4. 4

    Rebuild pages and design

    Watch out: Design, styles and custom CSS do not export from either platform.

    Ways around it

    • Rebuild the look with a WordPress theme.
    Show the detailed steps (4) →
  5. 5

    Set up redirects

    Watch out: WordPress has no built-in redirect manager, and every changed path needs its own redirect and test.

    Ways around it

    • Choose permalinks and page slugs that keep old paths, so fewer redirects are needed.

    Tools that can do it

    • RedirectionFree WordPress plugin that imports redirects from CSV and logs 404 errors after launch.
    • Screaming Frog SEO SpiderList mode follows each old URL to its final address and reports hops and errors.
    Show the detailed steps (4) →
  6. 6

    Go live

    At a quiet time

    Watch out: Many hosts can only issue a free certificate once the domain points at them, so visitors may briefly see a warning.

    Ways around it

    • Test everything else through the hosts file first, so the certificate is the only unknown.

    Watch out: A domain transfer brings lock periods, and Squarespace blocks DNS changes while a transfer is pending.

    Ways around it

    • Keep the domain where it is for launch and transfer it later. After a Wix transfer, re-add the MX records.

    Turn this phase into dated tasks with the cutover planner

    Show the detailed steps (6) →
  7. 7

    Check and close

    In the weeks after launch

    Watch out: Cancelling the old plan cannot be undone: the design and any images WordPress only linked to go with it.

    Ways around it

    • Keep the plan until every check passes. Until then, rollback is a DNS change back to the old values.
    Show the detailed steps (4) →
You are finished when
  • Every page and post in your inventory exists on WordPress, and media is hosted on your own site.
  • Every old URL returns a 301 to its mapped new page, with no chains.
  • The site runs on the real domain over HTTPS, and email on the domain still works.
  • Forms, the store and other replaced features work, and the sitemap shows Success in Search Console.

Tools named in this plan are independent third-party products, not endorsed by the platform vendor and not paid placements. Check the tool's own documentation and run a pilot first.

SiteGround web hosting
Click by click

Detailed steps

Open a part when you reach it in the plan. Each step says where to go, what to do and what you should see.

About this migrationWhat it covers, limits at a glance

Wix and Squarespace are hosted builders. You own your content, but the platform owns the code that renders it. Wix states that a Wix site cannot be moved to another host. Squarespace gives you a WordPress-compatible export, but it leaves out several page types, audio and video blocks, styles and custom CSS.

So a move to WordPress is part export, part rebuild. You export what the platform allows, copy the rest by hand, rebuild the design with a theme, then protect your search traffic with 301 redirects from every old URL. The last step is pointing your domain at the new host.

Moving an existing WordPress site between hosts is a different job. For that, see the WordPress host-to-host migration guide.

Wix exportNo whole-site export. Wix says sites must run on Wix servers. Products, contacts and CMS collections export as CSV
Squarespace exportWordPress-format .xml file covering layout pages, gallery pages and one blog page
WordPress importWordPress Importer plugin (Tools > Import) or the wp import WP-CLI command
DesignNot exportable from either platform. Rebuild it with a WordPress theme
SEOMap every old URL to a new one and set 301 redirects before you switch DNS
1What you need before step one
NeedDetailsWhere to get it
Wix accessThe site owner account: only the owner can export contacts. Products and CMS collections export from the site dashboard.Wix site dashboard
Squarespace accessAn admin of a published, public site. Squarespace does not allow export from a trial site.Squarespace Import & export content panel
WordPress hostingA host with a WordPress installer and a staging address or temporary URL, plus SFTP and SSH access.Your new host's control panel
WP-CLIFor permalinks, imports, media import and search-replace over SSH.Install WP-CLI, change WordPress URLs
Import pluginsWordPress Importer for the Squarespace .xml file; RSS importer for a Wix blog feed.https://wordpress.org/plugins/wordpress-importer/ and https://wordpress.org/plugins/rss-importer/
RedirectsEdit access to .htaccess on Apache hosts, or the Redirection plugin on any host.Set up 301 redirects
DNS and domain accessSign-in to the DNS provider (Wix Domains page or the Squarespace domains dashboard if they host it). Admin rights on your PC to edit the hosts file for preview.Lower DNS TTL, test with the hosts file
Google Search ConsoleAccess to the site property, to submit the new sitemap and watch 404s.https://search.google.com/search-console
Files to prepareAn inventory spreadsheet of every URL, a copy of every DNS record, a local folder of media, and product, contact and CMS CSV exports.URL redirect map (301s) template; back up the new WordPress site before cutover
2Inventory the old site4 steps

Before you export anything, record exactly what exists. You will need this list for the redirect map and for checking nothing was lost.

  1. 1

    List every live URL

    Where: Your inventory spreadsheet (start from the URL redirect map (301s) template), filled from the old site's sitemap, your analytics tool and Google Search Console

    Open the site's XML sitemap in a browser (usually https://www.oldsite.com/sitemap.xml) and copy every URL into column A. Add landing pages from your analytics tool, and the pages listed in Search Console's Performance report and Pages report for the old site. Google recommends building the old URL list from sitemaps, server logs, analytics and your CMS. Remove duplicates.

    You should see: One column of unique old URLs, one per row, including blog posts, products and gallery pages.
  2. 2

    Record what each page contains

    Where: The same spreadsheet: add columns for Page type, Media, Forms or apps, and Platform feature

    Next to each URL, note the page type (page, blog post, product, gallery, event, form), and any embedded media, forms or apps. Flag anything that relies on a platform feature such as bookings, members areas or a store. You will use this as the rebuild checklist in Step 4.

    You should see: Every row has a page type, and every platform feature you rely on is flagged.
  3. 3

    Download media you cannot export

    Where: Your PC: a local folder such as old-site-media, filled from your original files or saved from the live old site in a browser

    Save original images, PDFs, audio and video files to the folder now. Squarespace warns that WordPress may only pull reference links for images, and those links stop working after the Squarespace site is cancelled. Name files the way you want them to appear in the WordPress Media Library.

    You should see: The folder holds a copy of every image, document, audio and video file listed in your inventory.
  4. 4

    Record DNS and email settings

    Where: The DNS settings for the domain at its current provider (Wix: the Domains page in your Wix account; Squarespace: the domains dashboard at account.squarespace.com/domains), copied into the DNS cutover record sheet

    Screenshot or copy every DNS record for the domain into the record sheet, including MX, TXT (SPF, DKIM, DMARC, verification) and CNAME records, with their values and TTLs. Squarespace notes that most domain hosts cannot keep your settings in place during a transfer.

    dig +short MX contoso.com
    dig +short TXT contoso.com
    dig +short CNAME www.contoso.com
    You should see: Every record shown in the provider's DNS settings is in your record sheet, and the dig results match it.
Keep the old site live. Do not cancel the Wix or Squarespace plan until the new site is live, redirects are tested and you have every file you need.
3Export what Wix allows4 steps

Wix's help centre says a Wix site "needs to be hosted and operated on Wix's servers". There is no export of pages or design. You can still export data from several Wix apps.

ContentWix export optionNotes
Pages and designNoneCopy text and images by hand, rebuild layout in WordPress
Blog postsRSS feed onlyWix says its RSS feed cannot show more than 20 posts. Larger blogs need manual copying or a third-party tool
Store productsCSV from the Products tab (More Actions > Export)Up to 5,000 rows per file. Digital products cannot be exported
ContactsCSV, Google CSV or Outlook CSVUp to 50,000 contacts per export
CMS collectionsCSV (More Actions > Export to CSV)Time fields are exported in UTC+0
  1. 1

    Export products

    Where: Wix site dashboard > Products tab (Wix Stores)

    Tick the box at the top left of the product list to select all products (or use Filter, or tick individual products). Select More Actions > Export, choose an export option in the dialog, then select Export again. Each CSV file holds up to 5,000 rows, and digital products cannot be exported. Wix says Mac users should open the file in Numbers or Excel version 15 or later. Keep the CSV for a WooCommerce or other store import.

    You should see: A CSV file downloads to your computer with one row per product (or variant) and opens in a spreadsheet.
  2. 2

    Export contacts

    Where: Wix site dashboard > Contacts, signed in as the site owner

    Select the Import / Export drop-down at the top of the contact list, then Export. Choose By Label and All Contacts, choose Regular CSV file, then select Export. Only the site owner can do this, and each export holds up to 50,000 contacts.

    You should see: A CSV file of your contacts is saved to your computer.
  3. 3

    Export CMS collections

    Where: Wix site dashboard > CMS (or in the editor: CMS > Your Collections)

    Select a collection. If sandbox collections are on, choose Live Collection at the top. Select More Actions > Export to CSV, choose The entire collection (all items and fields, including hidden and system fields), then Export. Repeat for each collection. Time fields are exported in UTC+0.

    You should see: When the file is ready, a Download File button appears and the CSV saves to your computer.
  4. 4

    Capture blog posts

    Where: Your browser, on your Wix blog's RSS feed (the address your blog's RSS button links to), then your inventory spreadsheet

    Open the feed and save it as an .xml file (for example wix-blog-feed.xml) with your browser's Save Page As. Wix says its RSS feed cannot show more than 20 posts, so list every older post in the spreadsheet and copy it by hand later. Record each post's original publish date so you can set it in WordPress.

    You should see: A saved .xml feed with up to 20 recent posts, and a list of every older post with its URL and publish date.
Check third-party Wix apps separately. Bookings, events, forms and members data each have their own export options (or none). Check the Wix help centre for each app you use.
4Export from Squarespace3 steps

Squarespace exports a WordPress-format .xml file. The site must be published and set to Public, and you cannot export from a trial site.

ContentIn the WordPress export?Notes
Layout pagesYesText and image blocks export. Embed and Instagram block text exports with minimal structure
Gallery pagesYes
BlogOne blog page onlyWith its posts and up to 1,000 comments per post
Album, cover, index, info, calendar, portfolio and store pagesNoRebuild by hand
ProductsNoUse the separate product CSV export
Audio and video blocksNoDownload files and re-upload
Drafts, styles, custom CSS, page headers, footers and sidebarsNoRebuild in your WordPress theme
Linked PDFsIn the file, but will not importDownload and upload to the Media Library
  1. 1

    Run the WordPress export

    Where: Squarespace: the Import & export content panel for the site (Squarespace's "Export your site content" article links straight to it)

    Check the site is published and its availability is set to Public; you cannot export from a trial site. Select Export, then the WordPress icon (the file is only available in WordPress format). If you have more than one blog page, choose the primary blog from the drop-down, then select Export. Processing can take a few minutes.

    You should see: A Download button appears. Selecting it saves the .xml file to your computer. (Clear erases the export.)
  2. 2

    Export products separately

    Where: Squarespace Commerce: the products area of the site (see Squarespace's "Exporting products to a .csv" help article)

    Product blocks and store pages are not in the WordPress export. Use the Squarespace "Export products to a .csv" option and keep the file for your WordPress store plugin.

    You should see: A CSV of your products is saved to your computer.
  3. 3

    Handle extra blog pages

    Where: The Squarespace site editor and your inventory spreadsheet

    Only one blog page exports per file. For a second blog page, copy posts by hand, or temporarily merge its posts into the exported blog page and run the export again.

    You should see: Every post from every blog page is either in an export file or listed in the spreadsheet for manual copying.
5Set up WordPress on the new host3 steps

Build the new site on a staging address or temporary URL so visitors keep seeing the old site until cutover.

  1. 1

    Install WordPress and set permalinks

    Where: The new host's control panel (its WordPress installer), then WordPress admin > Settings > Permalinks, or an SSH session in the WordPress folder

    Install WordPress with your host's installer on a staging address or temporary URL. Set the permalink structure before importing so imported posts get their final URLs: in Settings > Permalinks choose Post name and select Save Changes, or run the commands below (install WP-CLI first if wp --info fails).

    wp rewrite structure '/%postname%/'
    wp rewrite flush
    You should see: The Permalinks page shows Post name selected (WP-CLI prints Success lines), and a new test post opens at /post-slug/.
  2. 2

    Install the WordPress Importer

    Where: WordPress admin > Tools > Import, or an SSH session in the WordPress folder

    The importer handles posts, pages, comments, custom fields, categories, tags and authors from a WordPress export file. In Tools > Import, under WordPress, select Install Now. Or install and activate it with WP-CLI.

    wp plugin install wordpress-importer --activate
    You should see: A Run Importer link appears under WordPress in Tools > Import. WP-CLI reports that the plugin was installed and activated.
  3. 3

    Block search engines on staging

    Where: WordPress admin > Settings > Reading

    Tick "Discourage search engines from indexing this site" while you build and select Save Changes. Untick it at launch (Step 7).

    wp option update blog_public 0
    You should see: The box stays ticked after saving, and wp option get blog_public prints 0.
6Import content into WordPress5 steps
  1. 1

    Import the Squarespace .xml file

    Where: WordPress admin > Tools > Import > WordPress > Run Importer (or an SSH session in the WordPress folder)

    Select Choose File, pick the .xml file and select Upload file and import. Map each author in the file to an existing user or a new one. Tick Download and import file attachments so images are pulled into the Media Library while the old site is still live, then confirm. Or use WP-CLI, where --authors=create creates users that do not exist yet.

    wp import squarespace-export.xml --authors=create
    You should see: Posts and pages appear under Posts and Pages, and images under Media. WP-CLI ends with "Success: Finished importing from 'squarespace-export.xml' file."
  2. 2

    Import a Wix blog feed

    Where: WordPress admin > Tools > Import > RSS

    Under RSS, select Install Now if needed, then Run Importer. Select Choose File, pick the feed file you saved in Step 2a and select Upload file and import. It imports posts only, and the Wix feed is limited to 20 posts, so check the post count afterwards.

    You should see: The feed's posts are listed under Posts > All Posts, and the count matches the number of items in the feed file.
  3. 3

    Import media you downloaded

    Where: SFTP client (upload the folder), then an SSH session in the WordPress folder; or WordPress admin > Media > Add New Media File

    Upload the old-site-media folder from Step 1 to the server, then bulk-import the images and documents with WP-CLI. For a few files, drag them into the Media Library upload screen instead.

    wp media import ./old-site-media/*.jpg
    wp media import ./old-site-media/*.pdf
    You should see: WP-CLI reports each file imported as an attachment and ends with a Success line. The files appear in Media > Library.
  4. 4

    Fix links that point at the old platform

    Where: SSH session in the WordPress folder, with WP-CLI

    Search for old domain or platform image-host references in post content and replace them with the staging address. Back up the database first, run with --dry-run, then run again without it. The search-replace how-to explains the options.

    wp db export before-link-fix.sql
    wp db search 'oldsite.com'
    wp search-replace 'https://www.oldsite.com' 'https://staging.contoso.com' --skip-columns=guid --dry-run
    You should see: The dry run reports how many replacements it would make in each table. After the real run, wp db search 'oldsite.com' finds no matches in post content.
  5. 5

    Rebuild pages that did not export

    Where: WordPress admin > Pages > Add New Page, with your inventory spreadsheet open

    Recreate store, portfolio, index and other missing pages by hand in the block editor. Copy the text from the live old site and insert media from the Media Library. Mark each row done in the spreadsheet.

    You should see: Every row in the inventory has a matching published (or scheduled) page or post on staging.
Products and contacts. Load product CSVs into WooCommerce or another store plugin, and contact CSVs into your email marketing tool. Check consent records before importing contacts into a mailing list.
7Rebuild the design4 steps

Design does not transfer from either platform. Squarespace states that style settings and custom CSS are not exported, and Wix provides no design export.

  1. 1

    Choose a theme

    Where: WordPress admin > Appearance > Themes > Add New Theme

    Pick a block theme or a well-supported classic theme from the WordPress theme directory or a reputable vendor. Select Install, then Activate. Match the layout, not every pixel.

    You should see: The theme is shown as Active in Appearance > Themes and the staging site uses it.
  2. 2

    Rebuild headers, footers and navigation

    Where: WordPress admin > Appearance > Editor (block themes) or Appearance > Menus (classic themes)

    Recreate the header, footer and menus. Squarespace page-specific headers, footers and sidebars do not export, and nothing of the Wix design exports.

    You should see: The header, footer and menus show on every page with the same links as the old site.
  3. 3

    Replace platform features with plugins

    Where: WordPress admin > Plugins > Add New Plugin

    Forms, bookings, galleries and stores each need a WordPress plugin. Search, select Install Now and Activate. Keep the plugin list short and choose actively maintained plugins. Load product CSVs into the store plugin you choose.

    You should see: Each platform feature flagged in your inventory has a working replacement on staging.
  4. 4

    Check mobile layout and accessibility

    Where: A phone and a desktop browser pointed at the staging site

    Test on a phone, check heading order and alt text, and submit every form to confirm it sends to the right inbox.

    You should see: Pages read well on a phone, every image has alt text, and test form entries arrive in the right inbox.
8Map URLs and set 301 redirects4 steps

Wix, Squarespace and WordPress use different URL patterns, so most old URLs will change. Google says to map each old URL to its new URL and use server-side permanent redirects such as 301 or 308.

  1. 1

    Build the redirect map

    Where: Your inventory spreadsheet (URL redirect map (301s) template): add a New URL column

    Map each old URL to the closest matching new page. Do not send many old URLs to the home page; Google advises against redirecting to an unrelated page.

    You should see: Every old URL has a new URL, and no large group of rows points at the home page.
  2. 2

    Avoid chains

    Where: The same spreadsheet

    Redirect each old URL straight to its final destination. If a page moved twice, point both old URLs at the final one. Check that no New URL also appears in the Old URL column.

    You should see: No new URL in the map is itself redirected.
  3. 3

    Add the redirects

    Where: Apache hosts: the .htaccess file in the WordPress folder (over SFTP or SSH). Any host: WordPress admin > Tools > Redirection, after installing the Redirection plugin

    Back up .htaccess, then add rules above the # BEGIN WordPress block, one per changed URL. Or add each row in the Redirection plugin with a 301 type (it also has a CSV import for long lists). The 301 redirects how-to covers Apache, nginx and the plugin step by step.

    Redirect 301 /blog/old-post-slug /old-post-slug/
    Redirect 301 /services-1 /services/
    You should see: The file saves (or the plugin lists each redirect) and the site still loads.
  4. 4

    Test every redirect

    Where: Terminal (macOS, Linux) or Command Prompt (Windows 10/11) on your PC

    Check that each old path returns a 301 and lands on the right page. Work through the whole map, not just a sample, and note results in the spreadsheet.

    curl -sI https://staging.contoso.com/services-1 | grep -i -E "^(HTTP|location)"
    You should see: Each request prints a 301 status line and a location header with the right new URL.
Keep redirects for at least a year. Google says to keep redirects for as long as possible, generally at least one year. Keep the domain registered for at least as long.
9Cut over the domain and DNS6 steps

You can either keep the domain with its current registrar and change DNS records, or transfer the domain away from Wix or Squarespace. Changing DNS is quicker and lower risk. Transfer later if you want.

  1. 1

    Preview the new site on the real domain

    Where: Your PC's hosts file (Notepad as administrator on Windows, Terminal on macOS)

    Point the domain at the new host's IP address on your computer only, so you can test the finished site at its real address before changing DNS. Follow test a site with the hosts file, and remove the entries when you are done.

    203.0.113.10    contoso.com
    203.0.113.10    www.contoso.com
    You should see: Your browser loads the WordPress site at https://www.contoso.com while everyone else still sees the old site.
  2. 2

    Lower TTLs

    Where: The DNS settings for the domain at its current DNS provider

    A day or two before cutover, lower the TTL on the A and CNAME records you will change, so the switch propagates faster. See lower DNS TTL before a migration.

    You should see: The records show the lower TTL in the DNS settings, and dig contoso.com shows the new TTL once the old one has expired.
  3. 3

    Point the domain at WordPress

    Where: The same DNS settings page

    Change the A record for the root domain (and the www CNAME) to the values your new host gives you. Leave MX and TXT records for email unchanged.

    dig +short A contoso.com
    dig +short CNAME www.contoso.com
    You should see: dig returns the new host's values, and the site loads from WordPress once caches expire.
  4. 4

    Transferring away from Wix

    Where: Wix account > Domains page > Domain Actions icon next to the domain

    Disable Private Registration and unlock the domain first. Select Transfer away from Wix, review the information, select Transfer Domain, then I Still Want to Transfer. Wix emails the EPP code to the registrant contact. Domains bought in the last 60 days cannot be transferred. Wix notes you must re-add MX records after the transfer for business email to keep working.

    You should see: The EPP code arrives at the registrant contact email; you enter it at the new registrar. Wix says transfers usually take up to 7 days.
  5. 5

    Transferring away from Squarespace

    Where: Squarespace domains dashboard (account.squarespace.com/domains) > the domain

    Remove DNSSEC first in the domain's advanced settings, because DNS, nameservers and DNSSEC cannot be changed while a transfer is pending. Switch Domain Lock off, select Request transfer code, confirm your password, then select Ok. Give the newest code to the new registrar.

    You should see: An email from no-reply@squarespace.com with the subject "Auth code for" your domain arrives within 24 hours. Squarespace says transfers can take up to 15 days.
  6. 6

    Switch the site URL and go live

    Where: SSH session in the WordPress folder, then WordPress admin > Settings > Reading

    Change the WordPress site URL from staging to the real domain, enable HTTPS on the host, then allow search engines (untick "Discourage search engines" or run the second command).

    wp search-replace 'https://staging.contoso.com' 'https://www.contoso.com' --skip-columns=guid
    wp option update blog_public 1
    You should see: wp option get home prints https://www.contoso.com, the site loads over HTTPS with no certificate warning, and wp option get blog_public prints 1.
Changing registrar too? Registrar transfers follow the rules of each domain extension (for example, .au domains follow auDA rules). See the domain change guide for the transfer steps.
10Launch checks and monitoring4 steps
  1. 1

    Submit the new sitemap

    Where: Google Search Console > the site's property > Sitemaps report

    Verify the site in Search Console if the property does not already exist (property selector > + Add property). In the Sitemaps report, enter wp-sitemap.xml in Add a new sitemap and select Submit. WordPress core serves a sitemap at /wp-sitemap.xml unless an SEO plugin replaces it; use the plugin's sitemap address in that case.

    You should see: The sitemap is listed with status "Success".
  2. 2

    Watch for 404s

    Where: Google Search Console > Pages report, and your host's access logs (or the Redirection plugin's 404 log)

    Check for old URLs that return 404, and add redirects for them to the closest matching page. Add each one to your redirect map.

    You should see: The number of "Not found (404)" URLs falls week by week.
  3. 3

    Expect ranking movement

    Where: Google Search Console > Performance report, plus your analytics tool

    Google says to expect temporary ranking fluctuation during a move. Keep monitoring clicks and impressions for old and new URLs.

    You should see: New URLs start showing impressions and clicks, and traffic settles over time.
  4. 4

    Cancel the old plan last

    Where: SSH session in the WordPress folder (to check), then your Wix or Squarespace account's billing settings

    Only cancel Wix or Squarespace after you have confirmed all media is on the new host and nothing still links to the old platform's image URLs. Search the database for the old platform's image host as it appears in your content before you cancel.

    wp db search 'oldsite.com'
    You should see: The search finds no remaining references, every page loads its images from your own domain, and only then is the old plan cancelled.
Worth knowing

Expert notes

The detail behind the plan: options compared, and what experienced engineers check first. Tap any item.

Compare all the ways to do this3 options

Squarespace WordPress export plus the WordPress Importer

Medium effort

Best for: Squarespace sites built mostly from layout pages, gallery pages and one blog

  • Squarespace exports a WordPress-format .xml file
  • Imports with Tools > Import or the wp import WP-CLI command
  • Leaves out several page types, products, audio and video blocks, styles and custom CSS
  • Only one blog page is included, and trial sites cannot export
Read more →

Wix data exports plus a rebuild

High effort

Best for: Wix sites, which have no whole-site export

  • Products, contacts and CMS collections export as CSV files
  • Blog posts can be captured from the Wix RSS feed
  • Pages and design cannot be exported, so they are rebuilt by hand
  • Images must be downloaded and re-uploaded, not left linked to Wix
Read more →

Manual rebuild from scratch

Medium effort

Best for: Small brochure sites, or sites being redesigned anyway

  • No import clean-up of old platform markup and links
  • A chance to fix structure and permalinks from the start
  • Every page and image is copied by hand
  • You still need a full 301 redirect map from the old URLs
Read more →
Our advice

On Squarespace, start with the WordPress export and rebuild only what it leaves out. On Wix there is no site export, so export the store, contacts and CMS data, capture the blog, and rebuild pages. For a small site, a clean rebuild is often quicker than cleaning up an import. In every case, design is rebuilt with a theme and every old URL gets a 301 redirect.

Count the Wix blog posts before you promise a dateSaves time

Wix's RSS feed cannot show more than 20 posts, and Wix has no whole-site export. Every older post has to be copied by hand or moved with a third-party service, which is often the longest part of the job.

What to do

Count the posts in the Wix blog dashboard. Decide which old posts are worth moving (check their traffic in analytics); for low-value posts, redirect to a related page instead of rebuilding them.

Wix Help Center: Displaying more than 20 blog posts in an RSS feed
Make sure images are copied, not linkedReduces risk

Squarespace warns that a self-hosted WordPress import may keep reference links to images on Squarespace, which stop working after you cancel the site.

What to do

Import while the Squarespace site is still live with attachment download ticked, then check the Media Library count against your inventory and search the database for the old image host before cancelling.

Tools that can get around this

If images still point at Squarespace after the import, WP-CLI can download each one into the Media Library and then swap the old image addresses in post content for the new ones. It is a scripted job: build the list of old image URLs from a database search first.

  • WP-CLI media importCreates Media Library attachments from URLs, downloading each file first, and can attach it to a post or set it as the featured image.
  • WP-CLI search-replaceReplaces old image URLs in posts and settings across the database, including serialised data, with a --dry-run report first.
Third-party tools, not endorsed by the platform vendor. Confirm in the tool's documentation and run a pilot first.
Squarespace Help Center: Export your site content
Keep the domain where it is during the moveReduces risk

Transfers carry lock periods (60 days after purchase, contact changes or a previous transfer), and Squarespace says DNS, nameservers and DNSSEC cannot be changed while a transfer is pending. A transfer during cutover can leave you unable to fix DNS.

What to do

Change only the A and www records at the current provider for the launch. Transfer the domain later, once the site is stable, if you want everything in one place.

Squarespace Help Center: Transferring a domain away from Squarespace
Protect email on the domainUser impact

Business email (for example Google Workspace or Microsoft 365) depends on MX and TXT records held at the domain's DNS provider. Wix notes you must re-add MX records after a transfer for email to keep working.

What to do

Copy every DNS record before you change anything, leave MX and TXT records untouched at cutover, and send a test email to and from the domain straight after each DNS change.

Wix Help Center: Transferring your Wix domain away from Wix
Choose permalinks that keep old paths where you canSaves time

Every path that changes needs a redirect and a test. WordPress permalink settings can often reproduce the old blog path pattern, which removes most blog redirects.

What to do

Look at the old blog URL pattern in your inventory. In Settings > Permalinks, choose a Custom Structure that matches it (for example with a fixed prefix before %postname%) before importing, and set page slugs to match old page paths.

Tools that can get around this

WordPress has no built-in redirect manager. A redirect plugin lets you import the paths that still change as a CSV from your redirect map, then logs 404s after launch so you can redirect any old URL you missed. A crawler can then test every old URL in one pass.

  • RedirectionFree WordPress plugin: manages 301 redirects, imports and exports CSV and Apache .htaccess, and tracks 404 errors.
  • Screaming Frog SEO SpiderList mode follows each old URL to its final address and reports hops and errors.
Third-party tools, not endorsed by the platform vendor. Confirm in the tool's documentation and run a pilot first.
List the platform apps that have no exportUser impact

Bookings, events, forms, members areas and stores each have their own export options, or none. Members and bookings often need a different WordPress plugin and a plan for existing customers.

What to do

For each app in your inventory, check its export in the Wix or Squarespace help centre, pick the WordPress plugin before you build, and decide how existing members or bookings will be moved or re-invited.

Wix Help Center: Exporting or embedding your Wix site elsewhere
Check consent before importing contactsCompliance

The Wix contacts export includes subscription status. Importing every contact into a mailing list without a record of consent can breach privacy and spam laws.

What to do

Filter the CSV by subscription status and import only subscribed contacts into your email marketing tool. Keep the original export as your consent record.

Wix Help Center: Exporting your contacts
You now run hosting, updates and backupsCost lever

Wix and Squarespace handled security updates, backups and SSL for you. On WordPress these become your job or your host's, and the choice of host and paid plugins is the main ongoing cost lever.

What to do

Choose a host that includes automatic backups and SSL, schedule core and plugin updates, and set up your own off-site backup (see back up a WordPress site). Check each host's and plugin vendor's current pricing.

Freeze content between export and launchReduces risk

Anything published or edited on the old site after you export is not on the new site. Without a freeze, you find missing posts and products after launch.

What to do

Agree a freeze date with everyone who edits the site, export after it starts, and keep a short list of any urgent changes to repeat on WordPress before launch.

Plan SSL for the first minutes after cutoverUser impact

Many hosts can only issue a free certificate once the domain points at them, so visitors may see a certificate warning straight after the DNS change.

What to do

Lower TTLs a day or two before, switch DNS at a quiet time, and issue the certificate as soon as the domain resolves to the new host. Test with the hosts file first so the only unknown is the certificate.

Finish safely

Check it worked, or roll back

Full validation checklist8 checks

Run these before you declare the migration complete. Record the results in the data validation report.

CheckHow to checkWhat good looks like
Every page and post in the inventory exists on WordPress

Compare your inventory spreadsheet with Pages and Posts > All Posts in WordPress admin, and run wp post list --post_type=page --format=count and wp post list --post_type=post --format=count in the WordPress folder.

Every row in the inventory has a published or scheduled page or post, including posts from extra blog pages and older Wix posts that were not in the feed.
Media is hosted on your site, not linked to the old platform

Compare the Media Library count with your old-site-media folder and run wp db search 'oldsite.com' plus a search for the old platform's image host.

Media counts match the inventory, and the searches find no remaining references to the old domain or image host.
Every old URL redirects to its new page

Run curl -sI against every old path in the redirect map, not just a sample, and record each result in the spreadsheet.

Each old path prints a 301 status and a location header with the mapped new URL, with no chains and no large group of rows sent to the home page.
The site runs on the real domain over HTTPS

Run dig +short A contoso.com, dig +short CNAME www.contoso.com and wp option get home, then open the site in a browser.

DNS returns the new host's values, wp option get home prints https://www.contoso.com, and there is no certificate warning.
Email on the domain still works

Run dig +short MX contoso.com and dig +short TXT contoso.com, then send a test email to and from an address on the domain.

MX and TXT records match your record sheet and both test emails arrive.
Forms, store and platform replacements work

Submit every form, place a test order if you imported products, and test each plugin that replaced a Wix or Squarespace feature.

Form entries arrive in the right inbox and each flagged platform feature has a working replacement.
Pages work on a phone

Open the main pages on a phone and a desktop browser, and check headings and image alt text.

Pages read well on a phone and every image has alt text.
Search engines can index the new site

Run wp option get blog_public, then check the Sitemaps and Pages reports in Google Search Console.

blog_public prints 1, the sitemap shows Success, and the number of Not found (404) URLs falls week by week.
Rollback planIf it goes wrong

Roll back if

  • The new site shows errors or missing content on the real domain that you cannot fix inside the launch window
  • HTTPS fails on the new host and visitors see certificate warnings for longer than you agreed
  • Email on the domain stops after the DNS change
  • Many old URLs return 404 and the redirect fix will not be ready quickly
  • A form, booking or payment feature fails and no workaround is available

Point of no return

While the Wix or Squarespace plan is active and the domain has not moved, rollback is a DNS change back to the old platform's values in your record sheet. The step that cannot be undone is cancelling the old plan: Wix says sites must run on Wix servers and neither platform exports its design, and images that WordPress only linked to disappear with the old site. A domain transfer is the other hard step, because a pending transfer locks DNS changes (Squarespace) and a completed one can only be moved again under the registrar's normal transfer rules. Keep the old plan until the checks above pass.

  1. 1

    Point the domain back at the old platform

    Where: The DNS settings for the domain at its current DNS provider

    Change the root A record and the www CNAME back to the values in your DNS cutover record sheet. Leave MX and TXT records as they are.

    dig +short A contoso.com
    dig +short CNAME www.contoso.com
    You should see: dig returns the old platform's values and the old site loads once caches expire.
  2. 2

    Reconnect the domain in the old platform

    Where: Wix: the Domains page in your Wix account. Squarespace: the domains dashboard (account.squarespace.com/domains)

    Check that the domain still shows as connected to the site and that the old site is published. Reconnect it if the platform disconnected it.

    You should see: The old site loads at https://www.contoso.com with no certificate warning.
  3. 3

    Move WordPress back to staging

    Where: SSH session in the WordPress folder, with WP-CLI

    Change the site URL back to the staging address and block search engines again, so two live copies do not compete in search.

    wp search-replace 'https://www.contoso.com' 'https://staging.contoso.com' --skip-columns=guid --dry-run
    wp search-replace 'https://www.contoso.com' 'https://staging.contoso.com' --skip-columns=guid
    wp option update blog_public 0
    You should see: wp option get home prints the staging address and wp option get blog_public prints 0.
  4. 4

    Copy back content and form entries from the new site

    Where: WordPress admin (Posts, Pages and your form plugin's entries), then the Wix or Squarespace editor

    Copy any post or page published on WordPress after launch to the old site, and pass on form entries received on WordPress.

    You should see: Nothing published or submitted on WordPress after launch is lost.
  5. 5

    Fix and relaunch

    Where: Your PC's hosts file and the staging site

    Fix the cause, then test the finished site at its real address with the hosts file before you change DNS again.

    You should see: All checks above pass on the hosts file preview, and a new launch date is set.

Agree the triggers and who decides before the go / no-go meeting. Use the rollback plan template.

Common problems and fixes6 errors
Images missing after the old site was cancelled

Cause: WordPress kept reference links to Squarespace-hosted images instead of copying files. Squarespace warns these links stop working after cancellation.

Fix: Re-run the import with attachment download enabled while the old site is live, or upload the saved originals and search-replace the old image URLs.

Only some blog posts imported from Wix

Cause: The Wix blog RSS feed cannot show more than 20 posts.

Fix: Copy older posts by hand or use a third-party migration service, then compare the post count against your inventory.

Second Squarespace blog is missing

Cause: Squarespace exports only one blog page per export.

Fix: Copy posts from the other blog page by hand, or consolidate them into one blog page before exporting.

Business email stopped after the domain transfer

Cause: MX and other DNS records did not carry over to the new registrar.

Fix: Re-create the MX, SPF, DKIM and DMARC records from the screenshots taken before the transfer.

Squarespace domain transfer will not start

Cause: The domain is under a 60-day registration, contact-update or transfer lock, or Domain Lock is still on.

Fix: Wait for the lock period to end, turn Domain Lock off and request a new transfer code.

Old URLs show 404 Not Found in Search Console

Cause: They were missing from the redirect map.

Fix: Add 301 redirects for each one to the closest matching page and re-test with curl.

Search the full error library →

FAQ

Frequently asked questions

Can I export my whole Wix site to WordPress?

No. Wix states that Wix sites must run on Wix servers and offers no whole-site export. You can export products, contacts and CMS collections as CSV and must copy pages by hand.

What does the Squarespace WordPress export include?

Layout pages, gallery pages and one blog page with its posts and comments. Store, portfolio, index and several other page types, audio and video blocks, styles and custom CSS are not included.

Will I lose my Google rankings?

Google says to expect temporary ranking fluctuation during a move. A complete 301 redirect map from old URLs to matching new pages is the main thing that protects your rankings.

Do I need to transfer my domain away from Wix or Squarespace?

No. You can keep it where it is and change the DNS records to point at your WordPress host. Transfer it later if you want to manage everything in one place.

Can my design be moved to WordPress?

No. Neither platform exports design or theme code. Rebuild it with a WordPress theme.

How long should I keep the redirects?

Google recommends keeping them for as long as possible, generally at least one year.

Sources

Official sources

12 official pages this guide is based on