Who is this information intended to help?
Most of all the brands and agencies who are conducting a site migration. Especially if you are a small team who needs to make every hour count. WISLR helps clients match and complete 100,000 URL redirects in less than an hour. Specifically, this document can help you if you're:
Migrating from Wordpress
Migrating from Magento
Migrating from Salesforce
Migrating from Sitecore
Migration from BigCommerce
Migrating from Webflow
Migrating from a homegrown PHP site
Creating & Managing Shopify URL Redirects
The official Shopify Help Doc for URL redirects is found here. It's a streamlined document with general guidelines a Shopify store manager can reference to add individual and bulk 301 redirects. It lacks specifics on the types of URLs a Shopify store can support natively, but that's where our "Better Help Doc" fills the gaps.
Summary Review of Shopify's URL Redirect Functionality
Shopify's URL redirect logic is very robust.
From our test of 100 different URL string formats, Shopify functionally supported 99 out of 100 of the types.
The native system does not support wildcards for URL redirects.
Updating existing URL redirect paths was easy with the import tool, as long as you follow Shopify's undocumented rules (which we've documented for you)
Limits exist with total number of redirects Shopify & ShopifyPlus stores will manage.
Limits exist with the total number of characters for a URL redirect string.
You cannot create 301 redirect chains, thankfully.
Many exceptions and rules exist for URLs with parameters.
The interface for URL redirect management is user-friendly, but can benefit from more details to help a website owner manage the information.
Tests did not examine redirect options available to store owners using Shopify's headless solutions: Hydrogen and Oxygen.
We give Shopify's current URL redirect system a helpfulness score of 85%.*
*Our rating was lowered by 5% for no wildcard support, by 1% for the single URL string type it did not support, by 2% for URL character-length limits, by 3% for the odd behavior with parameterized URLs, and by 4% for essential information management details missing from the redirect UX.
*Testing was conducted on June 19, 2024
About the Testing Parameters
We want to answer a few questions with our test, to help you plan your 301 redirect import process:
What characters or string combinations does the URL redirect system not support?
Are there any limits with URL string length?
Is there a maximum number of records for bulk imports?
Does the system support wildcard redirects?
Is there any auto-formatting or conversion of strings after import that changes the original data?
For reference, here is our full list of URLs we used to test these different conditions. Tests were conducted on a Shopify standard plan (not ShopifyPlus).
Test Results
URL Strings Shopify Does Not Support
The list of URL string formats that Shopify could not support is short, with only one type of string it could not ingest:
Strings with a semicolon character after the equals operator
/page?param=;semicolon
What's noteworthy with this string is that Shopify's system will convert the semicolon special character into the URL encoded value as follows in the redirect table:
/page?param=%3Bsemicolon
When you enter the unencoded URL string into the address bar of a browser, it will return a 404 error.
🔴 Causes a 404 error on Shopify's servers. Unencoded semicolon after the equals operator.
/page?param=;semicolon
🟢 Correctly redirects on Shopify's servers. Encoded semicolon after the equals operator.
/page?param=%3Bsemicolon
This functionality deviates from other special character handling. If a URL string with unencoded characters is entered in the address bar, such as the right brace character '/page?param=}rightbrace', Shopify will automatically encode it when the URL request is received '/page%7Drightbrace' and no 404 error will occur. Not so with an unencoded semicolon after the equals operator.
Additionally noteworthy, other variations of a URL string with an unencoded semicolon validate in Shopify's redirect system such as:
🟢 Correctly redirects on Shopify's servers. Unencoded semicolon character in the string, no equals operator.
/page;semicolon
The data suggests that the 404 error is only triggered when an unencoded semicolon occurs after the equals operator.
No Support for Wildcard Redirects
Wildcard redirects are still on the wish list of many Shopify users. Their support forums are inundated with requests for this feature. To date Shopify has remained silent on where this would fall on the product roadmap.
For the time being, website owners planning a move to Shopify should understand that native Shopify & ShopifyPlus do not offer this option.
What are wildcard redirects?
Wildcard redirects are a type of URL redirection that allows you to redirect multiple URLs that match a specific pattern to a single destination. This is particularly useful when migrating a website, reorganizing content, or managing large numbers of similar URLs. Instead of setting up individual redirects for each URL, you use a wildcard character (usually *) to represent any sequence of characters.
Suppose you are restructuring your blog and moving all posts from the /blog/ directory to /articles/. Instead of setting up individual redirects for each blog post, you can use a wildcard redirect:
From: /blog/*
To: /articles/*
This wildcard redirect will automatically map:
/blog/post1 to /articles/post1
/blog/post2 to /articles/post2
/blog/post3 to /articles/post3
This simplifies the redirection process and ensures all URLs under /blog/ are seamlessly redirected to their new location under /articles/. As of the date of this article, Shopify and ShopifyPlus default stores do not include this capability without app support.
Shopify Does Its Best to Avoid Creating Redirect Chains
There is a nice safeguard in the Shopify redirect table that prevents you from creating redirecting chains. If you try to create a redirect to a page that is already a value in the "Redirect from" field, you will get an error:
In this test the URL records we tried to create were as follows:
/BOTH redirects to /SHORT
/SHORT redirects to /homepage
What are Redirect Chains?
Redirect chains occur when a URL is redirected to another URL, which in turn redirects to yet another URL, creating a sequence or "chain" of redirects. This can happen unintentionally when multiple redirects are set up over time without proper management.
Redirect chains are problematic because they can slow down page load times, negatively impact SEO, and create a poor user experience. Each additional redirect adds latency as the browser must follow each step in the chain before reaching the final destination.
For example, if you have the following redirects set up:
/old-page redirects to /new-page
/new-page redirects to /latest-page
When a user visits /old-page, they are first redirected to /new-page, and then immediately redirected again to /latest-page, resulting in a redirect chain.
New Rules to Follow When Setting up Redirects on Shopify
Our biggest discovery in our tests is that Shopify's documentation is out of date. According to Shopify, if you're trying to redirect anything that starts with these reserved prefixes, your redirect rules will not be created ---- but we found that not to be true:
/apps
/application
/cart
/carts
/orders
/services
/products
/collections
/collections/all
These "Redirect from" values WILL BE allowed and work correctly, even though the documentation says they shouldn't:
/apps
/application
/carts
/orders
/services
*Cart was the exception. It is reserved, but not when you add subdirectories after it, such as:*
/cart/people
These "Redirect from" value will be created in the table, but not followed:
/cart
/products
/collections
/collections/all
If these prefixes are used and are followed by subdirectories, Shopify will allow and follow them, for example:
/cart/people
/carts/people
/products/people
/collections/people
Our test data revealed that only these URL prefixes will be ignored completely if entered on their own:
/cart
/products
/collections
/collections/all
Creating and Updating URL Redirects is Easy on Shopify
The creation of a new redirect is simple on Shopify. They give users two options:
Individual URL redirect creation, one at a time
Bulk redirect creation, through a CSV file - here's the latest template for that import.
When adding URLs to Shopify's system, users can input relative URL paths, no top level domain, for the origin (from) and abosolute or realative URL paths in the destination (to). Example:
/example_product.php
Here's more details on how each option works.
Creating Individual URL Redirects
The redirect rules Shopify has in place will not allow you to create the same URL redirect twice when using the individual redirect interface.
Once a URL is in the 'Redirect from' table listing, if you try to add it again you will get an error:
If you want to update the individual URL record, you need to find it in the redirect table, or use the bulk import method. If a URL that already exists is included in a bulk import file, the record's 'Redirect to' field will be updated with the value from the CSV file.
Creating Bulk URL Redirects
To create bulk redirects, populate the CSV file with the headers Shopify requires, create the 1:1 mappings, make sure all URLs are formatted as relative paths. If you create a file with absolute paths in either the the 'Redirect from' or 'Redirect to' fields, Shopify will take matters into their own hands. Here's a few scenarios:
URL path has HTTP protocol and Top Level Domain
Shopify will remove what it identifies as 'http-protocol+top-level-domain' and create the preferred relative path:
Next scenario,
URL path has no HTTP protocol, but includes a Top Level Domain or Subdomain
www.wislr.com/unicode/test?value=%E2%9C%93%20
co.wislr.com/mix/of%20encoded
Shopify will add a '/' as a prefix to the URL redirect record to create the preferred relative path:
/www.wislr.com/unicode/test?value=%E2%9C%93%20
/co.wislr.com/mix/of%20encoded
Next scenario,
URL path has no HTTP protocol or subdomain, but includes a Top Level Domain
wislr.com/nested/directory/structure?param1=value1
Shopify will add a '/' as a prefix to the URL redirect record to create the preferred relative path:
/wislr.com/nested/directory/structure?param1=value1
The takeaway is to double-check your import file before you use it. Otherwise you will create URL redirect rules that don't operate in the manner you need them to.
If a redirect record already exists in the table and the same values is included in the import file, Shopify will update the record with the most current data from the import file. This is extremely helpful in our opinion, so long as you want that record to update. All the more reason to double-check the data.
Our advice is to always import redirects in manageable, efficient batches. For example, if you have 10,000 URL redirects, import 1,000 at a time and check them if you have the time. It's better to catch errors in smaller datasets than hunting them down in bigger ones.
Shopify's Limit on URL Redirect Records
All good things have their limit, and Shopify's redirect rules are no different. There's two thresholds for URL redirects.
Shopify Plans (not Plus):
Maximum 100,000 URL redirects
ShopifyPlus Plans:
Maximum 20,000,000 redirects
We have not tested these limits, that would be wild! These are the current documented specifications for the platform. Please keep them in mind as you plan your redirects and prioritize the top URLs for traffic and revenue. To the best of our knowledge Shopify does not increase these limits, despite constant pleading from the support forums.
Shopify's Limit on Characters in URLs
This is where things get spicy with Shopify's redirect system. Official guidelines from Shopify do not specify strict character limits.
To validate the limits of URL characters for a redirect we first built and tried to import very long strings. We started with a 2,000 character-long URL, since browsers can handle URI requests up to 2,083 characters in length. Here's the darling in all her beauty:
/2000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBcccccccccccccccccccccccccccccccccccccccccccccccccccDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Our initial method was to import this gal using the bulk redirect template and that's when Shopify's alarms were triggered. We received this warning immediately, the file was not imported. This mistake was ours though. The file we used accidently saved with the wrong encoding.
NOTE: Check the file format for your import file.
Problem corrected. It dawned on us to go higher than 2,000 so we modified our initial URL test length to 2,313 characters and received this message:
Confirmed, there is a threshold with character limits, so let's find it.
300 char length URL: 🟢 Passed
600 char length URL: 🟢 Passed
1,000 char length URL: 🟢 Passed
2,000 char length URL: 🔴 Failed
The threshold we officially discovered was: a 1,024 character limit for URL redirect strings, inclusive of the forward slash prefix '/'.
Our tests on the individual URL redirect creation fields returned the same results: 1,024 character limit.
3 Important and Previously Undocumented Redirect Rules & Conditions to Understand About Shopify
1. Capitalization and Lowercase in URL strings
Shopify will normalize alphabetical characters in your URL strings. This means, weather you put in a capital or lowercase letter, it will serve URL request for those different patterns in the same way. The following URLs will all go to the same page, even if individual records exist:
/CASE/TEST.html
/case/test.html
/Case/Test.html
The lowercase string with take priority over the others:
/case/test.html
In our tests, even though there are two unique records for "Redirect from" with different values for "Redirect to", the /about.html page will always be served for both records:
It's intriguing and potentially vexing that Shopify will allow you to enter all of these unique values in the redirect table and only serve one of them. We advise you review your data carefully if you feel your URL taxonomy could fall into these patterns before importing into Shopify.
2. Absolute URL Paths for Shopify Redirects
You can use absolute URL paths for your redirects our test found, if they are in the "Redirects to" field. They can be to any URL you desire. Here is one example where a URL path will redirect to a LinkedIn profile when requested:
In the "Redirect to" field Shopify does not remove top level domains, even if it's for your own Shopify store.
3. Parameterized URLs
It our tests Shopify preserved URLs with parameterized URLs, with some exceptions. If you have URLs that have been indexed with many unique parameterized URL strings, then those unique strings can be added to Shopify's redirects tables and go to unique destinations. We did this test with a common taxonomy for these type of URLs, UTM parameters. For example:
This URL string is in the redirect table's "Redirect from" field and went to it's intended destination:
/how-is-pkl?utm_campaign=301s+in+2024&utm_content=blue&utm_id=3012024&utm_medium=display&utm_source=google&utm_term=redirects
We modified the URL string and removed the last parameter '&utm_term=redirects', which created a 404:
/how-is-pkl?utm_campaign=301s+in+2024&utm_content=blue&utm_id=3012024&utm_medium=display&utm_source=google
This behavior was reproduced in other tests with different parameters as values, which confirmed that Shopify treats parameterized URLs has literal strings. They do not concatenate the URL down to the base URL if you remove a parameter from a redirect URL, so long as:
The URL does not exist on the Shopify site
To further confirm this we pointed a URL to itself, which by default Shopify does not allow. You would get this message:
This entry is allowed when the parameters are in the "Redirect from" field. It does not constitute a redirect loop, but based on behavior in the browser, our test showed that Shopify ignores this record. When the "Redirect from" URL is requested, Shopify serves the full parameterized URL string, not the root page as expected in the table:
This entry is allowed but Shopify will not append the parameters to the page that loads, as the rule expects. They will only load the root URL. Parameters are never added to the URL that loads:
Our final observation about URLs with parameters is that Shopify will rewrite the data you give it in some cases. Yes, Shopify will rewrite the URL data you give it for some parameters.
Here are examples where our tests found this pattern:
Original redirect data ingested by Shopify:
/test?name=John&Doe
Shopify rewrote the strong to have 'Doe' be the first parameter attribute in the string:
/test?Doe&name=John
Another example:
Original redirect data ingested by Shopify:
/user?name=John&age=30&active=true
Shopify rewrote the string to have a new order for the parameters listed:
/user?active=true&age=30&name=John
The tests we ran suggests that Shopify is trying to put the parameters in alphabetical order. We wondered if this was a bug since we have determined that Shopify treats parametrized URLs as literal strings, so why undermine that rule by rewriting the parameter order. Currently, you will never get URL strings with multiple parameter values to retain their structure. This could have big implications for some Content Management Systems.
Update to Shopify's URL Redirect UX is Needed
During our extensive use of Shopify's redirect tool, we found ourselves appreciating some elements and missing others. Here's our run down of those features, should anyone from Shopify one day stumble on this doc 😉.
We appreciate:
Bulk redirect import buttons and functionality
Filtering and fast search for URL taxonomy
Export of URLs
Ease to create a single URL
We found the tool lacks these data points and functionality:
Total count of URLs imported
Easier way to copy and paste more than one URL into the system. If you add more than one URL at a time, you have to use the import document. One use case where copy / paste would be helpful is if a set of URLs were all intended to point to the same destination.
This is where the WISLR team concluded our testing of Shopify's URL redirect system. Our conclusion is that the system Shopify has for its platform are not yet Enterprise level. With time we hope they evolve to include wildcard redirects and more redirect records for their standard and plus plans. The ability to use their redirect system and the various types of URL formats it supports leaves us rating them with a strong helpfulness score.
If you're undertaking a project that includes complex 301 redirect mappings and need a team who lives and breaths this specific type of work, send the 301 redirect consultants at WISLR a message.
Shopify Redirects in Summary, an FAQ:
Who is WISLR's Shopify URL Redirects knowledge-base intended to help?
Does Shopify have an official support document for URL redirects?
What are the URL strings Shopify does not support?
Does Shopify support redirects using wildcards or regex?
What are wildcard redirects?
Can Shopify avoid creating redirect chains?
What are redirect chains?
Is it easy to create and update URL redirects on Shopify?
How do you create bulk URL redirects in Shopify?
Does Shopify have a maximum limit on URL redirection records?
Does Shopify have redirect character count limits?
Is there a tool I can use to validate URLs I need to move to Shopify, to see if they're compatible?