The catalogue is the easy half. In a Squarespace to Shopify migration, products, orders and customer records move across with two CSVs and a weekend of cleanup. Member Areas don't move at all, because Shopify has no gated-page feature, no membership object, and no way to inherit the Stripe subscriptions that were billing your members every month. You rebuild that side from parts, and every paying member has to re-enter a card. Plan the migration around that fact and the rest falls into place.
What comes out of Squarespace, and what quietly doesn't
There are three separate exports and none of them is complete.
The Commerce inventory export gives you a CSV with one row per variant: title, SKU, price, sale price, stock, weight, categories, tags and image URLs pointing at Squarespace's CDN. This is the good one. It maps onto Shopify's product CSV with moderate effort.
The site export (Settings, then Import/Export) produces a WordPress-format XML file containing pages and blog posts. It is partial by design. Index pages, album pages, audio blocks and most embedded content either come through mangled or not at all. Treat it as a source of blog copy, not as a site backup.
Orders export from the Commerce panel. Contacts export from the Contacts panel, and that file has emails, names and marketing consent, but no passwords, because Squarespace never gives you those.
What has no export at all: discount codes, product reviews, form submissions, digital product files, member content and member subscriptions. Write those down at the start of the project, because each one is a small build, and four small builds is a fortnight.
Fixing the product CSV before Shopify ever sees it
Shopify's importer is strict in ways Squarespace's export is not. The mapping work is mechanical, but skip a step and you'll be re-importing 900 rows at 11pm.
- Handles. Shopify generates a handle from the title unless you set one. Set them yourself, matching your old Squarespace slugs where you can, so the redirect map writes itself.
- Variant rows. Shopify wants the handle repeated on every variant row with the title cell left blank. Squarespace repeats the product name on each row. Find-and-replace won't do this reliably; a formula that blanks the title on any row where the handle matches the row above will.
- Options. Squarespace allows option names that Shopify accepts but your theme won't render sensibly. Consolidate before import, not after, because renaming an option later breaks variant URLs.
- Weight. Shopify's CSV takes grams. If your Squarespace store was in kilograms or pounds, convert the column or every shipping rate you build will be wrong by three orders of magnitude.
- Inventory. The CSV sets quantity for one location. If you run a warehouse and a retail counter, the import puts everything in whichever location Shopify picks and you redistribute afterwards through the inventory bulk editor. We get the location assignment wrong on the first pass more often than we'd like.
For anything over a few hundred SKUs, or where you also need orders and customers with their original dates, a migration app like Matrixify is worth the month's subscription. Native CSV import won't bring order history across at all.
Product descriptions are full of Squarespace markup
Copy a Squarespace description into Shopify and you carry over div wrappers, data attributes and image tags pointing at the Squarespace CDN with a ?format=2500w query string on the end. Two things go wrong. The layout classes don't exist in your Shopify theme, so spacing collapses. And the day the Squarespace subscription lapses, every embedded image in every description goes blank.
So: strip the markup down to paragraphs, lists, headings and links, and re-upload any inline images to Shopify's CDN. Keep the Squarespace site live and paid for at least 30 days after launch, purely so image fetches during import and any stragglers still resolve. That's a small bill against a large risk.
Redirects, or you donate your rankings back to Google
Squarespace store URLs usually look like /shop/p/product-name or /store/product-name. Shopify serves /products/handle. Different pattern, no automatic mapping, and Google has been indexing the old ones for years.
Pull the full URL list from a crawl of the live Squarespace site rather than from the export, because the export misses pages. Build a two-column CSV of old path and new path and import it through Shopify's URL redirect bulk upload. Product pages, collection pages, blog posts, the about page, every one-off landing page someone built for a campaign in 2022 and forgot.
Rough arithmetic on the effort: a 420-URL site checked and mapped by hand at roughly 40 rows an hour is around ten hours of someone's time. Automate the product rows with a formula, hand-map the rest, and it's closer to three. Either way it's cheap compared with re-earning the traffic.
Member Areas: there is no Shopify equivalent, so choose a shape
This is the part that makes a Squarespace to Shopify migration a project rather than a task. Squarespace Member Areas bundle three things Shopify keeps separate: page-level access control, a member login, and recurring billing through Stripe. Shopify's online store has no concept of a gated page. Even Plus, where B2B company accounts can restrict which products a customer sees, has no answer for a gated blog post or a course lesson.
Four workable shapes, in ascending order of cost:
- Customer tags plus theme logic. A Liquid condition on the template checks for a tag such as member-active and shows or hides the content. Fine for a handful of pages and a small member list you manage by hand. Fragile once tags come from more than one source.
- A gating app. Locksmith and similar tools do rule-based access on pages, collections and products without you touching the theme. This is the sensible default when you have twenty gated pages and no engineer on retainer.
- Membership as a subscription product. Sell access as a selling-plan product, and have a webhook add the customer tag on an active subscription contract and strip it on cancellation or failed payment. Billing and access stay in one system, which is what most Squarespace members expect.
- Move the content off Shopify entirely. Put courses or community on a platform built for it, bill through Shopify, and pass identity across. This is unwelcome advice for anyone who wanted one login, but if your member area is a video course with progress tracking and comments, you will spend more building a bad version of that in Liquid than you'll ever spend on the tool.
Option four is right more often than founders expect. Ask what the member area actually does. If the answer is "three PDFs and a discount", options one or two are plenty. If it's a curriculum, don't rebuild a curriculum.
Where the gating logic is genuinely custom — tiered access, entitlements driven by order history, an internal system that has to be the source of truth — that's a custom Shopify app rather than a theme edit, because a theme edit dies at the next theme update.
The billing migration is the expensive part
Your Squarespace member subscriptions run on Squarespace's Stripe connection. Shopify subscription contracts run on Shopify Payments, or on a gateway your subscription app supports. The stored card tokens do not transfer between those. Stripe will move card data between its own accounts on request, under PCI controls, but that doesn't put the cards inside Shopify's vault.
Which means every active member re-authorises. There is no version of this migration where they don't.
Do the maths before you pick a launch date. Say you have 620 active members at ₹499 a month. That's ₹309,380 of monthly recurring revenue. If a quarter of them fail to re-authorise in the first month, you're down about ₹77,000 a month, and it doesn't come back on its own. Against that, spending ₹1.5 lakh on a properly sequenced switch — a three-email warning run, a one-click re-subscribe link, a price lock for anyone who moves in the first fortnight, a phone-call list for your highest-value members — pays for itself in under two months if it saves even half the churn.
Indian stores have an extra step. Recurring card payments here run through the RBI e-mandate framework, with additional-factor authentication required above a per-transaction ceiling that has been revised more than once. Confirm with Razorpay, or whichever gateway your subscription app supports, that the mandate flow works for your ticket size before you migrate anyone. UPI Autopay is often the smoother path for sub-₹1,000 monthly memberships.
Passwords, accounts and one thing that actually gets easier
No platform exports customer passwords, so you were always going to have a re-login moment. Shopify's newer customer accounts are passwordless: the customer enters an email, gets a six-digit code, and is in. No reset campaign, no "we've migrated, please choose a new password" email that 60% of people ignore.
The trade-off is that passwordless accounts don't support the classic account pages some themes still assume, and multipass and certain third-party account apps behave differently. Check your gating app supports the account version you pick, before you commit. Choosing the wrong one and switching later logs everyone out again.
Digital products, downloads and the small stuff
Squarespace digital products don't export their files. Download them one by one — yes, really — and re-upload to Shopify's free Digital Downloads app, or to a paid app if you need licence keys, download limits or streaming.
Discount codes get rebuilt by hand. Product reviews need re-collecting or importing from whatever review tool you're adopting, and if reviews were native to Squarespace, they're gone. Gift cards issued on Squarespace can't be transferred as balances; honour them manually against Shopify gift cards and reconcile at the end of the quarter.
If your catalogue is large enough that people browsed by filtering, note that Shopify's default filters are tied to how clean your options and metafields are. Getting tags and metafields right during the import is far cheaper than retrofitting them, and it's what makes tools like FilterPro useful on the other side rather than just another script on the page.
A sequence that works
Build the Shopify store on a password-protected preview while Squarespace keeps trading. Import products, then orders and customers, then clean descriptions and images. Build the member-area replacement and test it with five real members before you announce anything. Load redirects. Switch DNS on a weekday morning, not a Friday night, and not in the week before your biggest sale.
For a 300-SKU store with no memberships, that's about two weeks of work. Add an active member base with live recurring billing and it's four to eight, most of it spent on the subscription cutover rather than the catalogue. Our fuller notes on scoping a platform move sit on the Shopify migration page, and if you want a number rather than a range, the development cost breakdown is more honest than any calculator.
Before you do anything else, count two things: how many URLs Google currently has indexed for your Squarespace site, and how many members are paying you right now. Those two numbers decide the shape of the whole project. Send them over with a link to your store and we'll tell you which of the four member-area routes fits — free audit, no deck.


