October 21, 2026
Squarespace to Webflow redirects: mapping every Squarespace URL
Moving from Squarespace to Webflow changes some of your URLs, so each old URL that earns traffic or links needs a 301 redirect to its closest Webflow page. You add those in Webflow under Site settings > Publishing > 301 redirects, one at a time, with wildcard rules, or by CSV import.
Webflow's own migration article calls the move "a rebuild, not a transfer": nothing converts automatically, and it has you set up the redirects yourself. This guide covers the URL side of that rebuild: what Squarespace produces, where each URL type should go, and the rule syntax that gets it there.
Get the full list of old URLs before you switch
Collect the list while the Squarespace site is still live. Once the domain points at Webflow, the old site can't tell you what it had.
- The sitemap. Squarespace generates one automatically at
/sitemap.xml. It isn't available on trial sites or parking pages, and a private or password-protected site has to be set to Public before it loads. - What the sitemap leaves out. The same page lists the exclusions: disabled pages, pages hidden from search, password-protected pages, individual URLs of pages within index pages, URLs of uploaded files, and old URLs used to create URL redirects. If you hid a page from search but people still link to it, it won't be in the file.
- Existing URL mappings. Open Squarespace's Developer tools panel and copy everything under URL mappings. Those are redirects Squarespace serves today, from older URLs you already moved once. Squarespace serves them for domains connected to your Squarespace site, so once the domain points at Webflow they need recreating there, pointed straight at the final page rather than at an old Squarespace path.
- Search Console. Google's site-move guide says to start from your sitemaps, then check server logs or analytics for the URLs with the most traffic, and the Links report for pages with internal and external links. Map those first.
How Squarespace builds its URLs
From Squarespace's URL slugs article:
- Pages take their slug from the page title, so a page called About sits at
/about. - Blog posts always begin with the blog page's slug. The rest comes from the post title and the blog's post URL format.
- Store products are the store page URL followed by the product slug. On version 7.1, product URLs always include
p/before the slug. - Events are the calendar page's slug followed by the event date and title.
- Slugs are lowercase, and blog post, event and product slugs are 3 to 200 characters long.
The post URL format needs the most care. It's set in the blog's settings using the variables %t (title), %y (year), %m (month) and %d (day), plus any custom text. Changing it doesn't rewrite existing posts, so a blog that switched formats at some point holds both kinds: older posts under /blog/{year}/{month}/{day}/glaze-guide, newer ones at /blog/glaze-guide. Sort the blog section of your sitemap by path depth and you'll see whether you have one pattern or two.
Blog categories and tags have two URL forms. The static form is /blog/category/dogs and /blog/tag/labradoodle, which appears in the sitemap unless you hid it in the blog's SEO settings. The older dynamic form, /blog?category=dogs and /blog?tag=labradoodle, still works and shows the same filtered posts, with a canonical tag pointing search engines at the static version. Squarespace's page also notes that categories and tags are case-sensitive, so a category named "Test" lives at /blog/category/Test.
How Webflow builds its URLs
- Static pages use their slug, and a page inside a folder gets the folder slug in front of it, such as
/legal/terms-of-service. Webflow converts uppercase letters in page slugs to lowercase and removes special characters such as!,~,.and&. - CMS items sit under the Collection URL, which Webflow describes as the slug for the folder that holds your Collection pages. A blog collection with the Collection URL
postputs each post at/post/your-blog-post. - Ecommerce products sit under
/product/. Webflow's product import page givesmywebsite.com/product/stacys-pink-donutsas the resulting URL for a product handle. The ecommerce collection slugs can't be renamed.
If you rebuild events or tag pages as a CMS collection, you choose its Collection URL, so decide it before you write those rows.
Squarespace URL to Webflow URL
| Squarespace URL | Example | Webflow destination | Redirect? |
|---|---|---|---|
| Page | /about |
/about |
None if the slug is the same |
| Page moved into a Webflow folder | /terms |
/legal/terms |
1:1 |
| Blog post, title format | /blog/glaze-guide |
/{collection-url}/glaze-guide |
Wildcard, unless the paths already match |
| Blog post, date format | /blog/{y}/{m}/{d}/glaze-guide |
/{collection-url}/glaze-guide |
Wildcard |
| Blog category, static | /blog/category/glazes |
a category collection page, or the blog page | 1:1, or nearest parent |
| Blog tag, static | /blog/tag/stoneware |
the blog page | Nearest parent, or 404 |
| Blog category or tag, dynamic | /blog?category=glazes |
same as the static form | Only if it has links |
| Store product (7.1) | /shop/p/blue-mug |
/product/blue-mug |
Wildcard |
| Event | /events/{date}/spring-sale |
a CMS item, if you rebuild events | 1:1 if it earns traffic, else 404 |
| Uploaded file | static1.squarespace.com/…/menu.pdf |
none | Can't be redirected (see below) |
Notes on the rows:
- Keep the blog path if you can. If the Webflow blog collection gets the Collection URL
blogand each item keeps its Squarespace slug, title-format posts land on the same path and need no redirect at all. Webflow restricts some URLs (folders can't share a Collection's URL), so set the Collection URL in Webflow before you plan the map around it. - Date-format posts lose their date segments in Webflow, so they always need a rule. Send each one to the post itself, not to the blog page.
- Products.
/shop/p/blue-mugusesshopas an example store slug; use your store page's slug. Webflow lowercases product handles during import and allows only letters, numbers and dashes, per the import page. If a Squarespace product slug contains anything else, the Webflow handle will differ and that product needs its own row. - Capitalized categories. Squarespace category URLs keep their capitals and Webflow slugs are lowercase, so a wildcard that copies
Testfrom/blog/category/Testinto the new path points at a slug that doesn't exist. Give each capitalized category its own row. - Uploaded files. Squarespace's image and file article says static asset URLs begin with its CDN hosts (
images.squarespace-cdn.com,static.squarespace.comorstatic1.squarespace.com) and that they can't be customized or redirected. Those hosts aren't your domain, so a Webflow redirect can't reach them either. Re-upload the files to Webflow and update any links you control, such as emails and social profiles.
Writing the redirects in Webflow
Each Webflow redirect has an Old path and a Redirect to path. Click Add redirect path, then publish the site, because nothing takes effect until you do. The same page says 301 redirects need a paid Site plan or a Workspace on a paid Workspace plan.
For whole folders, put a capture group (.*) in the old path and refer to it as %1 in the new one. Webflow documents more than one group too, /blogs/(.*)/(.*) to /articles/%1/%2. For a Squarespace blog moving to a collection with the URL post, the rules look like this:
| Old path | Redirect to path | Covers |
|---|---|---|
/blog/category/(.*) |
/blog |
static category pages, if you have no category collection |
/blog/tag/(.*) |
/blog |
static tag pages |
/blog/(.*)/(.*)/(.*)/(.*) |
/post/%4 |
date-format posts using %y/%m/%d/%t |
/blog/(.*) |
/post/%1 |
title-format posts |
/shop/p/(.*) |
/product/%1 |
store products |
The order matters. Webflow runs redirects in the order they were created, oldest first, and tells you to put specific rules before broad wildcards. Create the table's rules top to bottom, after any one-off rows such as capitalized categories, so /blog/(.*) doesn't swallow category, tag and date URLs first. If your post format has a different number of date variables, change the number of groups to match. If your collection URL is blog and the slugs match, drop the last blog rule entirely, since it would point posts at their own path. Webflow's own example stops at two groups, so after publishing, load one date-format post to confirm the four-group rule fires.
Three details from the same Webflow page that break migrations:
- Escaping in the old path. Webflow says to put
%before%,-,&,*,(,),=,_,+and?in old paths. Its own example of a basic redirect,/old-url, doesn't escape the hyphen, so the docs disagree with themselves. Test one hyphenated path both ways before you add hundreds. - Query strings. A dynamic category URL needs escaping, along the lines of the article's
%?category%=foodexample. Webflow also removes a trailing slash that sits directly before a query string before matching, so write/blog%?category%=glazes, not/blog/%?category%=glazes, or the rule won't match. - Live pages win. To redirect a path that still has a published page or CMS item, Webflow says to delete it, save it as a draft, unpublish or archive it, or change its slug first. Changing a slug in Page settings with Permanently redirect the old URL to this new one ticked creates the 301 for you.
Webflow sets no hard cap on redirects, but the article recommends about 1,000 at most, because each rule is added to the site's manifest file. Wildcards keep the count down. Redirects are also relative to the root, so a localized site needs a separate rule for /es/old-url.
Importing a CSV
For a long map, Webflow imports a CSV from the same screen: Site settings > Publishing > 301 redirects > Import. The file has two columns, old path and redirect-to path, one row per redirect, up to 16 MB.
An import overwrites all existing redirects. Export first, add your new rows to the exported file, then import the combined file. Exporting first also gives you a file already in the layout Webflow expects. If any row is invalid the import fails, and Webflow emails you what to fix. Publish afterwards.
The import page doesn't say what order imported rows run in. After publishing, load a category URL and confirm the /blog/(.*) rule didn't catch it.
What to leave as a 404
Google's site-move guide says content you aren't moving should return a 404 or 410, and warns against sending many old URLs to one irrelevant page such as the new home page, which can be treated as a soft 404. A reasonable split for a Squarespace site:
- Redirect 1:1: every page, post and product, plus anything in your Search Console export with clicks or links.
- Redirect to the nearest parent: categories and tags that earned traffic or links.
- Leave to 404: past events nobody searches for, empty tags, and pages you deliberately dropped.
Cutover and after
Webflow's migration article says to add redirects before the domain cutover so traffic isn't lost at launch. Then:
- Load a sample of old URLs in a private window: one of each row type in the table, plus your top pages from Search Console. Each should land on the right page in one hop.
- Update internal links and the sitemap. Google's guide says to change internal links to the new URLs and make sure your sitemaps list them, then submit the new sitemap in Search Console.
- Watch for errors. The same guide says to monitor Search Console's indexing reports, server logs and analytics after the move.
- Keep the redirects. Google recommends keeping them for as long as possible, generally at least one year.
If the domain stays the same, Google's Change of Address tool doesn't apply; it is only for moves from one domain or subdomain to another.
If you'd rather not build the spreadsheet by hand, RedirX (walkthrough) starts from your old and new URL inventories, proposes a Webflow destination for each Squarespace URL, keeps every proposal in review until it is confirmed, and exports the approved redirects.