Every step cited to the vendor’s own docs
How to migrate from Squarespace to Shopify, step by step.
Squarespace gives you clean CSV exports for products, contacts and orders, and quietly keeps everything else. This is the whole move: the four exports, the rebuilds, the redirect map with its one genuinely awkward path, and the cancellation order that keeps your site up throughout.
14 steps · Plan on 15-30 hours of your own time
14
steps, in the order they have to happen
22
hours of hands-on work for a mid-sized store
8
things that do not come with you
8
URL shapes that need a 301
Phase 01 · 2.5 h
Before you touch anything
- 1 hSquarespace docs
Check your version, record every URL
Establish whether the site is Squarespace 7.0 or 7.1 (URL shapes differ) and record every live URL to a spreadsheet while the site is still up. This inventory becomes the redirect map and cannot be reconstructed later.
WhereSettings → Developer Tools → URL mappings, plus the live sitemap
The catch
A site upgraded from 7.0 to 7.1 had /p/ injected into product URLs at upgrade time. Both shapes live in Google’s index, and both need redirect rows.
- 1.5 hSquarespace docs
Secure your images while the site is live
Shopify imports product images by fetching public URLs, which in practice means the Squarespace CDN must still be serving them at import time. Download what matters from the Asset Library as insurance.
WhereSquarespace → Asset Library
The catch
There is no bulk media export, and when a Squarespace site deactivates, its image links deactivate with it, which kills a Shopify import that references them.
Phase 02 · 1 h
Get your data out
- 20 minSquarespace docs
Export the products CSV
Products export in Squarespace’s import format, capped at 10,000 products. Note your product and variant counts: they are the reconciliation baseline for the import.
WhereProducts & Services → Products → Export all
The catch
The export omits reviews, featured images, image alt text and variant images, and download products cannot be represented at all.
- 30 minSquarespace docs
Export contacts and orders
One contacts export covers customers, subscribers, members and donors; segment later in Shopify. Orders export as a wide CSV with line items; filter by status and date deliberately.
WhereContacts → … → Export all contacts · Products & Services → Orders → Export
The catch
Order exports do not refresh when statuses later change, and Shopify’s guide says to take only fulfilled orders. Saved addresses mostly do not export.
- 15 minSquarespace docs
Export the blog as WordPress XML
The XML export is the only bulk route out for blog posts and basic page text. It feeds a migration app on the Shopify side, since Shopify cannot read it natively.
Whereaccount.squarespace.com → Import & export content → Export → WordPress
The catch
Only one blog exports: multi-blog sites get a “Select Primary Blog” prompt and the rest are left behind. Product, video and audio blocks are excluded too.
Phase 03 · 15 h
Build in parallel
- 30 minShopify docs
Create the Shopify store, password on
Open the store and leave storefront password protection enabled for the whole build, so search engines index only the password page.
WhereShopify → Online Store → Preferences → Store access
The catch
Do not remove the password until redirects and DNS are ready: a half-built store in Google’s index is worse than none.
- 2 hShopify docs
Remap the product CSV and import
Squarespace columns do not match Shopify’s and there is no mapping UI, so rename them by meaning (Product URL→Handle, Categories→Type, Option Name/Value→Option columns, Stock→Inventory Qty). Untick “publish to all sales channels”, import, and reconcile the counts.
WhereShopify → Products → Import
The catch
Weights convert by the store’s actual unit: ×1,000 for kg, ×453.6 for lb. Shopify’s guide assumes pounds, which is wrong for most non-US stores.
- 45 minShopify docs
Rebuild the contacts export and import
Build against Shopify’s customer template rather than editing the Squarespace file in place: names, emails, consent as yes/no, ISO country and province codes.
WhereShopify → Customers → Import
The catch
There is no mapping support for customer CSVs: headers must match Shopify’s template exactly, and duplicate emails are skipped silently.
- 1.5 hShopify docs
Silence notifications, then import orders
Shopify’s native CSV cannot create orders, so use an app (EZ Importer, Matrixify, Migration Pro), importing after products and customers so the records link. Turn notifications back on when done.
WhereSettings → Notifications, then the migration app
The catch
Every imported historical order fires a new-order email to all subscribed staff unless notifications are off first.
- 8 hShopify docs
Rebuild pages, blog and navigation
Pick a theme and rebuild the pages against screenshots of the old site. The WordPress XML gives you post text; a migration app or paste gets it into Shopify’s blog.
WhereOnline Store → Themes · Content → Blog posts · Content → Menus
The catch
Layouts, blocks and custom CSS have no Shopify counterpart. This rebuild is usually the largest line item in the whole project.
- 2 hShopify docs
Configure payments, shipping and tax
Set the store address, shipping zones and rates, tax regions and the payment provider, then place real test orders end to end before anyone else sees the store.
WhereSettings → Payments / Shipping and delivery / Taxes and duties
The catch
Deactivate shipping on digital and service products, or they will ask customers for a delivery address.
Phase 04 · 2.5 h
Keep your rankings
- 2.5 hShopify docs
Test one /shop redirect, then import the map
Manually create a single redirect from a real /shop/p/ URL and confirm it fires. Then assemble the full old→new CSV from your URL inventory and bulk-import it, checking the result report row by row.
WhereContent → Menus → URL redirects → Import
The catch
Shopify documents /shop as a prefix it will not redirect from, and /shop/p/ is exactly where Squarespace 7.1 products live. Prove one redirect works before building hundreds.
Phase 05 · 45 min
Cut over
- 45 minSquarespace docs
Point DNS at Shopify
At a quiet hour, set the A record and www CNAME to Shopify’s values and remove the storefront password once the domain resolves. The old site keeps serving until propagation completes.
WhereRegistrar DNS panel · Shopify → Settings → Domains
The catch
Domain transfers take up to 15 days and can hit a 60-day lock. Point DNS first, verify the site and TLS are live, and treat the registrar transfer as a separate, later step.
Phase 06 · 30 min
After the switch
- 30 minSquarespace docs
Cancel Squarespace last, in the right order
Only after Shopify has served real traffic for a week (orders, images, redirects all verified), cancel the website subscription, keeping the domain and email subscriptions until each has been moved or is no longer needed.
WhereSquarespace → Billing → Subscriptions
The catch
Cancelling an annual plan ends service immediately, and the domain, email and website are separate subscriptions: cancel in the right order or the site vanishes early.
What does not come with you
Be wary of any guide that says everything moves. These are the things that do not, and what to do about each one.
Page layouts, blocks and custom CSS
They depend on Squarespace’s own code and are excluded from the export by design.
Instead: Rebuild in a Shopify theme, and treat it as new design work, not migration.
Members and gated content
Squarespace states members cannot be created or imported manually: each member signed up personally, and there is no account object to move.
Instead: Export the member list from Lists & Segments, then re-onboard through an email campaign with a discount or temporary free access.
Saved payment methods
Cards are tokenised by the payment processor and never held in exportable form.
Instead: Customers re-enter at first checkout. For active subscriptions there is a gated migration path: Shopify Payments as destination, handled with the subscription app’s developer.
Customer passwords
Passwords are encrypted outside Shopify and cannot come across.
Instead: Shopify’s customer accounts sign in with a one-time email code, so there is no password to recreate.
Product reviews
Shopify states flatly that reviews cannot be exported or migrated from Squarespace.
Instead: Re-collect at launch, or manually re-key the best into a reviews app.
Video and audio blocks
Both are on the export exclusion list, and uploaded video cannot be bulk-exported.
Instead: Re-embed YouTube/Vimeo by URL; self-hosted video needs the original masters, so confirm they still exist early.
Digital download products
The product CSV format only accepts physical and service products.
Instead: Rebuild them in Shopify and attach files with the free Digital Products app, one at a time.
All but one blog
The XML export handles exactly one blog page; the rest are silently left behind.
Instead: Export the primary blog, then move the others with a migration app or by hand.
Your URLs, mapped.
Squarespace and Shopify disagree about URL shapes, so every old address needs a 301 to its new home. This is the mapping.
| Squarespace | Shopify | Note |
|---|---|---|
| /shop/p/linen-throw | /products/linen-throw | Squarespace 7.1’s default shape, and /shop is a prefix Shopify documents as non-redirectable. Test one before planning the map. |
| /store/linen-throw | /products/linen-throw | 7.0 shape without /p/. Sites upgraded from 7.0 have both shapes indexed and need both rows. |
| /shop/p/linen-throw-x7k2p | /products/linen-throw | Duplicated Squarespace products get random suffixes: pull these from the sitemap, not the product list. |
| /shop?category=Bedding | /collections/bedding | Query-string sources are the highest-risk rows. Shopify warns they may not work. |
| /blog/how-we-weave | /blogs/news/how-we-weave | Shopify inserts a blog handle; never a 1:1 path. |
| /blog/2024/3/12/how-we-weave | /blogs/news/how-we-weave | Date-based post URLs flatten to one segment, so every dated post needs its own row. |
| /about | /pages/about | |
| /events/2024/6/1/summer-fair | /pages/events | Shopify has no events object, so redirect to a page. |
Your extensions, matched.
- Squarespace Scheduling (Acuity)Keep Acuity, or a booking app
Acuity works standalone with no website at all. Often the right answer is to keep it and embed the scheduler in Shopify rather than migrate it.
- Email CampaignsShopify email tools
Subscriber lists move via the contacts CSV; campaign designs do not, and Squarespace email subscriptions are non-refundable.
- Member AreasCustomer accounts + membership app
Members must re-register, as there is no member export. Shopify’s passwordless sign-in removes most of the friction.
- SubscriptionsShopify Subscriptions
Subscription contracts do not import by CSV; continuity depends on the separate, gated payment-method migration.
- Gift cardsShopify gift cards
Gift cards exist on every Shopify plan, but there is no verified bulk import of outstanding codes and balances, so assume manual reissue.
- Product reviewsJudge.me / Loox / Yotpo
Reviews cannot be exported from Squarespace at all.
- Digital productsShopify Digital Products app
Squarespace cannot export download products; Shopify’s free Digital Products app attaches files one at a time, 5 GB max each.
- Store categories & tagsCollections
Squarespace 7.1 allows 1,000 categories nested three deep; Shopify collections are flat, so deep trees become navigation plus filters.
What goes wrong.
What catches people on a Squarespace move, why each one happens, and how to get ahead of it.
Products import but every image is missing
Why: The import CSV pointed at Squarespace-hosted image URLs and the subscription was cancelled before Shopify fetched them. Deactivating the site deactivates its image links.
Avoid it: Confirm every image has landed on Shopify’s CDN before touching the Squarespace subscription. Never cancel on import day.
Thousands of “new order” emails flood your inbox mid-migration
Why: Each imported historical order fires a new-order notification to every subscribed staff member.
Avoid it: Turn off order notifications in Settings → Notifications before the order import, and back on after.
Product redirects are rejected and catalogue SEO equity is at risk
Why: Squarespace’s default store slug is /shop, and Shopify documents /shop as a prefix it will not redirect from.
Avoid it: Test a single /shop/p/ redirect end to end before building the map. If it fails, plan an edge-level redirect layer instead.
Category landing pages 404 despite being in the redirect CSV
Why: Squarespace category and tag pages are query-string URLs, which Shopify redirects handle unreliably.
Avoid it: Find which category URLs actually carry traffic, give those real collection pages, and verify each one by hand.
The site goes offline mid-migration
Why: Cancelling an annual Squarespace plan ends service immediately: it does not run to the end of the term the way monthly plans do.
Avoid it: Transfer or repoint the domain first, verify Shopify is live, and only then cancel (domain and email subscriptions separately).
Variants vanish from products after a corrective import
Why: A SKU column without option columns deletes existing variants, and blank cells overwrite live data when overwrite is enabled.
Avoid it: Import to a development store first and never re-import a partial CSV against live products with overwrite on.
Every product weight is wrong by a factor of ~2.2
Why: Shopify’s guide says multiply weights by 453.6, which is only right if the store’s unit was pounds. Most non-US stores are in kilograms.
Avoid it: Check the Squarespace measurement setting first: ×1,000 for kg, ×453.6 for lb, then spot-check three real products.
An expected Squarespace refund never comes
Why: Only annual plans are refundable, only within 14 days, and a bundled free domain’s cost is deducted.
Avoid it: Check the renewal date at the start: finish before it or accept the sunk cost. Never promise a refund.
Or hand the whole list to someone who has done it.
Send your store URL and you get back a fixed price and a plan for your store specifically: SKU count, which extensions have Shopify equivalents, the redirect plan, and the risks we can see.
Get my free migration plan