Skip to content

Repair a retired Shopify campaign URL and check the redirect

Fix a retired Shopify campaign link with a copyable acceptance record, checks for campaign parameters, and recovery steps for incorrect redirects.

RunbookOctober 7, 20264 min read
~/runbook $ cat workflows.md[guide]
>_// Workflows
74 lines · workflows.md0x26d2

This sheet contains partner links. A purchase through one earns Runbook a commission at no additional cost to you. How we make money.

An old campaign email can keep sending visitors to a page long after the offer ends. If that Shopify page now returns an error, repair the route only after choosing a destination that still answers the visitor’s original need.

This workflow covers one already-retired URL, one replacement page and a repeatable acceptance check. It does not require buying an app.

Based on current documentation and editorial analysis. Not a hands-on product test. Sources were checked on October 7, 2026; this is an evergreen procedure, not a newly announced feature.

Establish the scope

You need permission to manage Shopify redirects, a published replacement page, the original campaign link and desktop Chrome. This guide covers the hosted Shopify Online Store admin, without an API version dependency. It excludes headless storefronts, domain migrations and market subfolders. Shopify’s documentation gives conflicting descriptions of subfolder behavior, so this procedure makes no promise about those routes.

Shopify redirects work only when the source URL is broken, not while it serves an active page. Query strings can also behave unexpectedly. Confirm those conditions before proceeding. Shopify redirect documentation

Choose a permanent replacement. If the offer will return at the same address, consider maintaining a useful page explaining its availability instead. Google recommends direct redirects to relevant destinations and warns that unrelated homepage redirects can be treated as soft 404s. Google’s URL-move guidance

Record the intended result

Copy this hypothetical example into your change record. These are proposed acceptance criteria, not observed results or a Shopify import file.

Change: expired starter-kit campaign
Owner: campaign operations
Source path: /pages/starter-kit-offer
Destination path: /pages/starter-kit
Reason: same kit; destination clearly states current terms
Previous redirect: none, confirmed before change
Tagged test: /pages/starter-kit-offer?utm_source=newsletter&utm_medium=email&utm_campaign=starter_kit
Expected bare path: 301, then destination 200
Expected tagged path: same destination; all three UTM values retained
Observed status chain: NOT RUN
Observed final URL: NOT RUN
Offer and primary button check: NOT RUN
Recovery: remove new rule; pause editable campaign links
Checked at / browser version / evidence: NOT RUN

Before changing anything, save the existing rule if one exists and capture the destination’s current offer text. Decide who can pause scheduled messages if the check fails. A technically successful redirect still fails this workflow if it lands visitors on a materially different promise.

Create one redirect

In Shopify, open Content → Menus → View URL Redirects → Create URL redirect. Enter the old path in Redirect from and the replacement path in Redirect to, then save. Relative paths suit destinations on the primary domain. Shopify says redirects take effect immediately. Creation instructions

If a rule already exists, review and edit that rule instead of treating the path as a fresh change. Keep its previous destination in your record.

Capture the actual route

Open Chrome DevTools and select Network. Enable Preserve log and Disable cache, keeping DevTools open. These controls retain requests through navigation and bypass the browser cache. Chrome Network reference

Clear the request list before each case. Paste the full HTTPS URL using your store’s primary domain. Select each document request and inspect its status and response headers; Chrome documents this inspection under the Headers tab. Network inspection guide

Run three cases:

  1. Bare old URL: expect a 301 directly to the intended destination, followed by a 200 response.
  2. Tagged old URL: expect the same route with the sample campaign values retained. This is our acceptance requirement, not a documented Shopify guarantee.
  3. Destination itself: expect a 200 without another redirect. Read the offer and follow the primary button far enough to confirm the intended next page, without submitting an order.

Save the observed chain, final URL, timestamp and browser version. Parameter retention alone does not prove analytics attribution. If tracking also changes, use the separate GTM release checks.

Recover and replay

If a case fails, hold scheduled distribution to that link. Check spelling, source eligibility and destination availability before editing again. Replay all three cases after each correction, preserving failed results alongside the new evidence.

For an incorrect destination, restore the previous rule or remove the newly created rule. Removing it can expose the original 404 again; it does not restore the retired content. Shopify also warns that cached 301s can persist after removal. Recheck with a cleared cache and another device. Redirect troubleshooting and management

If you cannot establish a relevant working route, keep editable campaign links paused or replace them with a verified direct destination. Already-delivered emails remain part of the recovery problem.

Accept the change only when the record contains actual passing observations. Then update links you control to the final destination and retain the redirect for older links. Google recommends keeping permanent redirects for at least a year in URL moves. Redirect retention guidance

About Runbook

AI tools and automation builds for marketers. What to use, how to wire it, and the workflow to copy this week. How we work

GET THE NEXT DISPATCH

Run the next build before your competitors read about it.

One short email when an AI tool or automation actually changes the work, with the build to copy.

No send unless there is a build worth running.

// keep_reading

Related builds