GUIDES / MOVING TO WEBFLOW FROM

Shopify to Webflow: redirects for products, collections and the pages that stay behind

two urls per product, a prefix on every page, and the question of what moves at all.

by Max Lorenz, Goodaim · updated 10 sep 2026

shopify → webflow
  • /pages/(.*)wildcard
    /%1
  • /blogs/news/(.*)wildcard
    /blog/%1
  • /blogs/news/tagged/(.*)wildcard
    /blog

SHORT ANSWER

The first decision in a Shopify to Webflow move is what moves. Most stores keep checkout and the catalogue on Shopify and move the marketing site and the blog to Webflow, which means the redirect map covers /pages/ and /blogs/ on the old domain while products and collections redirect to the same paths on a shop subdomain. Either way the shape is the same: Shopify puts a fixed prefix in front of everything, Webflow does not, and each prefix is one wildcard rule. What needs care is the second url every product has, the tag filters, and the redirects the store already carries.

What do Shopify urls look like?

/products/handle — a product’s canonical url. The handle is the slug. Variants add ?variant=123, which a redirect rule ignores.

/collections/handle · /collections/all — collections, and the automatic one listing everything.

/collections/handle/products/handle — the same product again, reached through a collection. Not in the sitemap, but linked from every collection page and therefore all over the index and the backlink profile.

/pages/handle — every static page: about, contact, faq, shipping. Always under the prefix.

/blogs/news/handle · /blogs/news/tagged/tag — posts under the blog’s own handle, which is news by default and often something else. Tag filters live under tagged.

/search · /cart · /account · /checkouts/… — the shop machinery. Nothing to redirect unless the store itself closes.

/collections/vendors?q=… · /collections/types?q=… — vendor and type listings as query strings. They follow whatever /collections/vendors does.

EXAMPLE

a store with 120 products in 14 collections, 18 pages and a blog of 60 posts. The sitemap lists 212 urls; the crawl finds another 380, nearly all of them the collection-scoped product urls.

What moves, and what stays on Shopify?

Three setups, three maps:

everything moves to Webflow Ecommerce — products go to /product/handle, collections to /category/handle, pages and blog drop their prefix. Every section is a wildcard rule, and the collection-scoped product urls are matched per row.

the site moves, the shop stays on a subdomain — the common case. /pages/ and /blogs/ redirect on the main domain to the new Webflow paths. /products/ and /collections/ redirect to https://shop.example.com/products/… with the path unchanged. Webflow accepts an absolute url as a redirect target, so that is one wildcard row per prefix, written by hand: a directory rule in Silentfrog targets a path on the new site, not another domain.

the store closes — products with a successor elsewhere get a row; the rest are 410. A product page that 410s cleanly loses less than one that redirects to an unrelated page.

EXAMPLE

main domain to Webflow, shop to shop.example.com: /pages/(.*) to /%1, /blogs/news/(.*) to /blog/%1, /products/(.*) to https://shop.example.com/products/%1, and the same for collections. Four rows for most of the site.

Where do I get the complete list of old urls?

  • The sitemap index. /sitemap.xml points at one file per type, sitemap_products_1.xml, sitemap_collections_1.xml, sitemap_pages_1.xml, sitemap_blogs_1.xml, and more numbered files past a few thousand entries. It lists canonical urls only. Silentfrog follows the index automatically.
  • The crawl. The collection-scoped product urls are only found by following links, which the crawl does. That is why the crawl count is much higher than the sitemap count on a Shopify store.
  • Search Console. Discontinued products leave the sitemap the day they are unpublished and keep ranking for weeks. The pages export brings them back (traffic data).
  • Url redirects. Online store, navigation, url redirects, with an export to csv. It is the record of every renamed product and retired collection.
start a crawl

extra old-site urls the crawl might not reach — one per line, or a csv export with the url in the first column (crawler export, search console, server logs). paths like /blog/post work too.

free up to 50 pages per site

the crawl form with the old site url, the new site url, the page cap, the sitemap option and the field for your own url list.

the crawl form: the sitemap is read automatically, and the url list field takes the search console export and the old redirect sources.

Which sections map how?

/pages/ and /blogs/ — a directory rule with keep sub-paths from /pages to the root and from /blogs/news to the blog folder, each exported as one wildcard row. The preview lists the handles the new site does not have (directory rules).

/products/ and /collections/ — one wildcard each. To the Webflow ecommerce folders, as directory rules; to the shop subdomain, as two rows added to the csv by hand, since the target is another domain.

/collections/handle/products/handle — two variable segments with a fixed one in between. Webflow’s capture group is meant for one path segment, so a wildcard with two groups is something to test on the live site, not to rely on. Silentfrog matches these per row on the product slug and title, and they come out as exact matches on the handle in nearly every case; sort by clicks and export the ones that matter.

tag filters — /blogs/news/tagged/(.*) to /blog with all to one page, unless the tags became a Webflow categories collection.

discontinued products — a 410, or a redirect to the successor product or the parent collection when there is one. Redirecting every dead product to the home page is the one thing to avoid.

redirect a directory

redirect a whole directory

map every crawled page below a directory at once — optionally as a single webflow wildcard rule that also covers urls the crawl missed.

→

3 pages · 3 targets exist on the new site · + wildcard /blog/(.*) → /magazin/%1

  • /blog/relaunch-checkliste → /magazin/relaunch-checkliste
  • /blog/301-vs-302 → /magazin/301-vs-302
  • /blog/ladezeit → /magazin/ladezeit

the directory rule form mapping /blog to /magazin with sub-paths kept, exported as a wildcard, and a live preview of how many pages it affects.

a directory rule moving a whole folder with sub-paths kept, exported as one wildcard row, with the live preview of targets that do not exist.

EXAMPLE

the 380 collection-scoped urls: 350 match the product’s new url at confidence 1.0 on the handle, 30 belong to products that were discontinued and become 410 with their canonical url.

The url redirects the store already has

Shopify creates a redirect automatically every time a handle is changed, so the export can be long and most of it is renamed products. Each source is a url that still gets requests. Paste the source column into the url list when starting the run; each one then resolves against the new site directly, and the exported row is /products/old-handle,/product/new-handle in one hop instead of chaining through the old rule.

EXAMPLE

310 exported rules. 280 sources resolve to a product on the new site by handle, 20 to a collection, 10 to nothing and become 410.

Doing it in one pass

  • Decide what moves. Write down the four or five prefixes and their targets before touching anything.
  • Export the url redirects csv and the Search Console pages report while the store is on the main domain.
  • Start a run with the store domain and the Webflow staging domain; paste the redirect sources and the Search Console urls into the url list (starting a run).
  • Add one directory rule per prefix that moves to Webflow, with export as wildcard rule ticked, and check the preview for handles the new site lacks. Prefixes that go to the shop subdomain are two rows you add to the csv by hand.
  • Sort by clicks, review the collection-scoped product rows and the discontinued products, and verify what you accept.
  • Download the Webflow csv and import it (importing into Webflow), then move the domain, publish, and crawl the old url list against the live site.
export

site settings → publishing → 301 redirects, or the data api

the two export buttons — webflow csv and generic csv — next to the option that includes needs-review matches.

the two downloads at the end: the webflow csv for the import, the generic csv as the audit trail.

In short

  • Decide first whether the store moves or stays on a subdomain; the map is different.
  • Every Shopify prefix is one wildcard row on Webflow: /pages/(.*) to /%1, /blogs/news/(.*) to /blog/%1.
  • Every product has a second url under its collection; the sitemap does not list it, the crawl finds it, and the matcher maps it per row.
  • Discontinued products are a 410 or a redirect to a real successor, never to the home page.
  • Export the store's url redirects first and resolve their sources against the new site directly.