Fixing Shopify Broken Links & Redirects
When a Shopify store is losing traffic/rankings due to broken links:
- Audit existing 404 errors (via app dashboard, Google Search Console, or server logs)
- Classify each broken URL: single page move, bulk pattern (e.g. old collection structure), or discontinued product
- Create redirects matching the classification:
- Single page → simple 301 (old-url → new-url)
- Bulk pattern → wildcard/regex redirect
- Discontinued product → redirect to parent collection or homepage, not a dead end
- Verify redirects don't chain (A→B→C) and don't loop
- Re-crawl to confirm 404s are resolved and rankings stabilize
Progress:
- Step 1: Inventory all 404 errors (export list, prioritize by traffic/backlink value)
- Step 2: Categorize broken links (moved, deleted, typo, external referral)
- Step 3: Design redirect rules (exact match vs wildcard vs regex)
- Step 4: Bulk import via CSV for large volumes; one-click fix for individual pages
- Step 5: Set up geo/GeoIP redirects if store serves multiple countries/languages
- Step 6: Enable 2-way sync with Shopify's native redirect system to avoid conflicts
- Step 7: Monitor dashboard for new 404s post-launch (especially after theme changes or product deletions)
- Step 8: Review redirect analytics monthly; prune stale or low-value redirects
Step 1 — Inventory: Pull 404 list from the redirect app's auto-detection, cross-reference with Google Search Console "Not Found" errors and top backlink sources. Prioritize URLs with existing inbound links or historical organic traffic.
Step 2 — Categorize:
- Product deleted → redirect to closest matching product or category
- URL structure changed (e.g.
/collections/old-name→/collections/new-name) → wildcard - Seasonal/temporary page → redirect to relevant current campaign or homepage
- Duplicate/parameter URLs → canonical redirect
Step 3 — Design rules: Prefer specific 301s over catch-all wildcards when possible (wildcards risk unintended matches). Use wildcards only for clear bulk patterns (e.g., entire deprecated blog category).
Step 4 — Bulk import:
For >20 redirects, build a CSV with from_path, to_path columns and import rather than manual entry.
Step 5 — Geo redirects: Only implement when store has region-specific storefronts/domains (Shopify Markets). Route by country, not by language alone, to avoid mismatched currency/content.
Step 6 — Sync:
Ensure the redirect app and Shopify's native /admin/online-store/redirects stay in sync to prevent duplicate or conflicting rules.
Step 7 — Monitor: Set alerts for new 404 spikes, especially after theme publishes, app uninstalls, or bulk product deletions.
Step 8 — Prune: Remove redirects for pages with zero traffic after 6-12 months to keep the rule set lean and fast.
Example 1:
Input: Store migrated from /collections/summer-2023 to /collections/summer-sale, generating hundreds of 404s across product URLs nested under the old collection.
Output: Single wildcard redirect: /collections/summer-2023/* → /collections/summer-sale/* instead of hundreds of individual rules.
Example 2:
Input: A discontinued product page /products/old-sneaker-v1 still receives backlink traffic.
Output: 301 redirect to /products/sneaker-v2 (closest replacement) rather than homepage, preserving user intent and link equity.
Example 3: Input: Store sees 404s from EU visitors hitting US-only product URLs. Output: GeoIP redirect rule routing EU traffic to the EU storefront domain/collection, configured via Shopify Markets + geo redirect rule, not a blanket URL redirect.
- Always redirect to the most relevant live page, never just the homepage by default
- Avoid redirect chains (A→B→C) — point directly to the final destination
- Use exact-match 301s for high-value pages; reserve wildcards for clear bulk patterns
- Re-check redirects after theme updates, app uninstalls, or bulk CSV product imports
- Export/backup redirect rules regularly in CSV form
- Keep GeoIP redirects separate from general 404 fixes — different purpose (localization vs error recovery)
- Creating wildcard redirects too broadly, unintentionally capturing unrelated URLs
- Redirecting everything to the homepage, which hurts UX and wastes link equity
- Not checking for redirect loops or chains before publishing
- Ignoring low-traffic 404s that still carry backlink value
- Forgetting to sync with Shopify's native redirect list, causing duplicate/conflicting rules
- Setting geo redirects based on language instead of actual storefront/market configuration