Importing URL Redirects
The URL Redirects import creates and updates your store's URL redirects from a CSV/Excel file, a Google Sheet, or directly from another connected store. This is the classic migration job — point old URLs at their new homes so links and SEO don't break. Rows are matched by path, so running the same file twice updates the same redirects instead of erroring on duplicates.
For the wizard itself — uploading, mapping, dry runs, schedules — see Importing into EcomSolo.
Columns
Just two, both required:
| Column | Notes |
|---|---|
| Path | The old URL to redirect from, as a path (e.g. /old-product). This is the identity used to match and create redirects. |
| Target | Where the path redirects to — a relative path (/products/new-product) or an absolute URL. |
Common export headers map automatically: Redirect from / From / Old URL
→ Path, and Redirect to / To / New URL → Target.
How redirects are matched
Every row is matched to an existing redirect by path in the target store:
- If a redirect with that path exists, its target is updated.
- If no redirect has that path, a new one is created.
The dry run shows the create/update split before anything is written. If a redirect exists on Shopify but hasn't synced into EcomSolo yet, the import still recognizes the collision and updates it rather than failing.
Operations
Pick the operation in Step 1. The default is Upsert — the behavior above.
- Create — only adds redirects. A row whose path already exists fails (use Update or Upsert instead).
- Update — only changes existing redirects. A row whose path isn't found fails.
- Upsert — creates missing redirects, updates existing ones. The safe default.
- Delete — removes redirects by path (see below).
Deleting redirects
Pick the Delete operation in Step 1 (permission-gated) and upload a file with just the Path column — no Target needed. Each path is resolved to its redirect and removed from Shopify. A path that matches no redirect is skipped (a no-op), so re-running the same delete file is safe. Deleting a redirect permanently removes it from Shopify — it cannot be undone.
Importing from another store
On the wizard's Source step, pick From another store to copy redirects from a connected store — no file needed. Path and target come across, matched by path. Combined with a schedule this becomes a recurring one-way redirect sync.
Results and freshness
Redirects you create or update take effect in Shopify immediately, and EcomSolo's URL redirects dashboard refreshes within seconds of the run.
Sample file
A ready-to-run sample lives at
features/importing/examples/url-redirects-sample.csv:
Path,Target
/old-product,/products/new-product
/summer-sale,/collections/summer
/blog/old-post,/blogs/news/new-post
Dry run: will create 3 (or update for paths that already exist).
Troubleshooting
| Error in the report | What it means / what to do |
|---|---|
row requires a Path | Every row needs the old path to redirect from. |
row requires a Target | Every row needs a destination. |
Path has already been taken | A redirect for that path already exists — on a re-run it's updated automatically; if you see this, the path may be duplicated within your file. |
FAQ
Will re-importing create duplicates? No — rows match by path and the operation is an upsert, so re-runs update in place.
Does it delete redirects? Yes — run the Delete operation with a file of paths. Delete is permission-gated and irreversible; unmatched paths are skipped.
Can I import a large redirect list? Yes — the importer streams the file and respects Shopify's rate limits, so large migration lists complete steadily.