Shopify "Too Many Redirects" After a Migration: How to Break the Loop
Right after a store migration โ a domain move, a replatform, or a bulk redirect import โ pages start failing with ERR_TOO_MANY_REDIRECTS. The browser bounces between two URLs forever, and Googlebot does the same, so the affected pages stop getting crawled and quietly fall out of the index. It's almost always one of two things: a redirect rule that loops back on itself, or an SSL/proxy layer fighting Shopify's forced HTTPS.
If you didn't already have a backup, those old values are gone โ Shopify keeps no history.
The steps below recover what you can. To make the next time a 1-click undo instead of hours of CSV work: a daily snapshot of every SEO field. Free to monitor, no card โ and SEO Vault only reads your store unless you click restore.
Trace the actual redirect chain before you change anything. Open a broken URL with the Network tab in your browser's DevTools, or run `curl -IL https://yourstore.com/the-page` from a terminal โ you'll see every hop the request makes. The pattern tells you where to look: if every page on the store loops, it's a domain or SSL problem; if only certain pages loop, it's a bad redirect rule. Copy down the exact URLs in the chain, you'll need them in step 3.
If the loop hits every page, rule out the SSL/proxy layer first โ it's rarely your redirect rules. The classic cause: a proxy in front of Shopify (often Cloudflare) set to "Flexible" SSL while Shopify forces HTTPS, so the two bounce http and https back and forth forever. Switch the proxy to "Full" SSL, and remove any http-to-https or www-to-root rules there, since Shopify already handles those. Then in Shopify go to Settings > Domains and confirm the primary domain is correct and shows as connected.
If only specific pages loop, hunt down the looping rule. Go to Online Store > Navigation > URL Redirects and export the list. A migration import usually breaks one of three ways: a rule that points to itself (/a to /a), two rules pointing at each other (/a to /b and /b to /a), or a longer chain that eventually circles back. Sort by the destination column and look for any target path that also appears as a source path โ that's your loop. Delete or repoint the offending rules, and check that your imported redirects aren't colliding with the ones Shopify auto-creates when a product or page handle changes.
Re-test, get re-crawled, then make sure it can't silently break again. Recheck the chain from step 1 โ a fixed URL should return a single 200, not a string of 301s. Resubmit the affected URLs in Google Search Console (URL Inspection > Request Indexing) and re-submit your sitemap so crawling resumes. The part most people miss: redirects, handles, and SEO fields get rewritten again the next time you run a bulk import or install an app, and you usually only notice weeks later when traffic drops. A daily snapshot closes that gap โ SEO Vault records your redirects and SEO fields every day, alerts you when something changes in bulk (and flags the app that most likely caused it), and lets you restore the last good version in one click instead of rebuilding the rules by hand.
Source: Shopify Help Center โ "URL redirects" guide (help.shopify.com)
SEO Vault keeps a daily snapshot of every SEO field on your store โ meta titles, descriptions, alt-text, tags, handles (products AND collections) โ and emails you the moment something changes in bulk, with the likely app responsible. One click restores yesterday's state, just the SEO fields. Free to monitor and get alerted; $14/mo for 1-click restore.