How to migrate Squarespace to WordPress with its XML export
Squarespace is one of the few site builders with a genuine WordPress export. Under Settings → Advanced → Import & Export Content, choose Export and the WordPress option, and you get an XML file the standard WordPress Importer reads. The limit is scope: the file holds one blog page with its posts and up to 1,000 comments per post, plus layout pages, text and image blocks and gallery pages. Store, album, portfolio, index and event pages, video and product blocks, drafts and custom CSS stay behind.
After the import, the work is URLs. Squarespace's URL Mappings only run while Squarespace serves your domain, so every redirect you rely on has to be rebuilt on WordPress before the DNS switch.
Running the export and importing it
On WordPress, open Tools → Import, install the WordPress importer and upload the XML file. Tick Download and import file attachments so the importer tries to copy images into the media library. Squarespace warns that on self-hosted WordPress the images may arrive only as references to its CDN, and those links die when the Squarespace site is closed. After the import, search post content for squarespace-cdn.com; every hit is an image you still need to download and upload.
Three gaps need their own plan:
- Extra blogs. If the site has more than one blog page, the export asks which one to include. Copy the others by hand, or rebuild them as a category in the main WordPress blog.
- Products. Export them from Products → Export all as a CSV. Only physical and service products are included, and only three variant options per product. Map the columns in WooCommerce's Products → Import.
- SEO fields. Do not expect the SEO title and description from each page's SEO tab to arrive. Open one imported post and check; if they are missing, copy them over for the pages that bring in search traffic.
Squarespace URL shapes and their WordPress equivalents
Squarespace builds blog post URLs from a Post URL Format made of %y, %m, %d and %t, so older posts often look like /blog/2019/3/14/spring-menu while newer ones may be plain /blog/spring-menu. Changing the format never rewrote existing posts, so one blog can hold both shapes. Other patterns worth knowing:
- Categories:
/blog/category/Squarespace+Tips, with spaces written as+, and the same filter reachable as/blog?category=. - Tags:
/blog/tag/<name>, built the same way. - Products (7.1):
/shop/p/<slug>; thep/is mandatory. - Pages:
/about, with no trailing slash.
A WordPress custom structure of /blog/%postname%/ keeps undated posts almost identical. Dated posts need a rule. If the imported slugs match the last segment of the old URL, one Apache rule covers all of them; the pattern accepts one- or two-digit months and days:
RewriteRule ^blog/\d{4}/\d{1,2}/\d{1,2}/([^/]+)/?$ /blog/$1/ [R=301,L]
Check a few imported slugs before relying on it. Any post whose slug no longer matches, for example because it was edited after publishing, needs its own redirect.
Rebuilding the redirects outside Squarespace
Start with Squarespace's own sitemap at /sitemap.xml, which lists pages, posts, products and category URLs, and add top landing pages from Search Console. Then open Settings → Advanced → URL Mappings and copy what is already there. Those lines record earlier moves, and each source should now point straight at its final WordPress URL rather than at another old Squarespace path, or you build a chain on day one.
When the domain resolves to your WordPress host, only rules on that host run. Hydrogen SEO's Redirection Manager handles individual 301s from wp-admin; its Starts With match can send the whole /blog/tag/ family to the blog index if you are not rebuilding tag archives. For the dated-post pattern above, or a long list, use server rules; the redirect rule generator writes Apache or nginx output from a two-column list.
Domains registered with Squarespace, including those it took over from Google Domains, can stay there: point the DNS records at your new host, or transfer the domain out once the site is stable.
What happens to rankings
Because the domain stays the same, Google treats the move as a site rebuild, not a site move, and no Change of Address is involved. Pages whose URL survives unchanged usually hold their positions if the content and title survive too. Redirected pages take longer, since Google has to recrawl the old URL to see the 301. Image search traffic tends to dip, because every image gets a new URL on WordPress and has to be rediscovered. Most sites see the overall curve settle within weeks; a page that stays down is worth testing by hand for a missing or misdirected redirect.
Post-move checklist
- Every URL from the old sitemap returns one 301 or a 200, never a 404 or a chain.
- Both
+and%20versions of category URLs you care about resolve. - No post content still references
squarespace-cdn.com. - The WordPress sitemap is submitted; see submit a sitemap to Google.
- SEO titles and descriptions are present on top pages; the site audit flags missing and duplicate ones.
- The Squarespace subscription stays active until the checks pass, then the site is closed.
Common questions
Can I export more than one Squarespace blog?
The export includes a single blog page, and you choose which one. Content from other blog pages has to be copied manually or rebuilt as a category in WordPress.
Why do my imported posts still load images from Squarespace?
The WordPress importer sometimes keeps the original image links instead of copying the files. Those links break when the Squarespace site closes, so download the images, upload them to the media library and update the posts.
Do Squarespace URL Mappings keep working after I leave?
No. They run on Squarespace's servers and stop applying once your domain points to another host. Copy them into your WordPress redirects, pointing each one at the final URL.