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

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 blog and 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-mug uses shop as 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 Test from /blog/category/Test into 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.com or static1.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%=food example. 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:

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.